From b2e984e0b4e8c9fefc94358a3c760199c27b1f9b Mon Sep 17 00:00:00 2001 From: Niels Date: Mon, 28 Dec 2015 15:03:01 +0100 Subject: [PATCH] Update --- annotated.html | 2 +- classes.html | 2 +- classnlohmann_1_1basic__json-members.html | 2 +- classnlohmann_1_1basic__json.html | 4 +- ...asic__json_1_1const__iterator-members.html | 2 +- ...ann_1_1basic__json_1_1const__iterator.html | 6 +- ...tor_a019087161350d393f3e4ac841cdd3dbd.html | 4 +- ...tor_a17e5f5d3598e6901f3c1c1f7dc60589f.html | 4 +- ...tor_a1cba94e5a67ee52bc66b898a4e08359d.html | 4 +- ...tor_a211523a57024a43965862b497b89ab91.html | 4 +- ...tor_a301749e9779adafd395369ac36df93df.html | 4 +- ...tor_a36086a699b95e06976c11367b7d6ba53.html | 4 +- ...tor_a4632d8307fc315f21e2ecc9ba5aa6346.html | 4 +- ...tor_a4f7ac43b0ab34c387b1ae1a8e9c08467.html | 4 +- ...tor_a5aff013c03c1bdc248346c249bec7b67.html | 4 +- ...tor_a62cad59e006eb7fa594c2c5b65a76610.html | 4 +- ...tor_a67848d4b7bfa576434ad9807147b5870.html | 4 +- ...tor_a6b3e43d2f45fa611825dbdf4e88fffe2.html | 4 +- ...tor_a83454954e4e16be3d5316f9322e91a34.html | 4 +- ...tor_a86a1771e6658d0b14868df6c197d2353.html | 2 +- ...tor_a8d024cbc99db0d8106899f9fd9973735.html | 4 +- ...tor_ab74b39747a9dad60650a57133fca85b3.html | 4 +- ...tor_ab7dacd8e3ee9b3756bfcdb87dd55a515.html | 4 +- ...tor_ab9d31bf0d0b4d7310c858a04ce84a52f.html | 4 +- ...tor_abb1921cbf0ad4036c83bc6303e22171f.html | 4 +- ...tor_abbacd95955c602efc9a58ed1ffdb46c4.html | 4 +- ...tor_ac36b9187de43721a4bf1b052578bb80b.html | 4 +- ...tor_ac634a659837f5aebc97125e031de23b5.html | 4 +- ...tor_acea5b75d1087e2a92833946d9dc547ff.html | 4 +- ...tor_ada3100cdb8700566051828f1355fa745.html | 4 +- ...tor_adb50d6043ace464d9f694869724d7fb2.html | 4 +- ...tor_adda9a4bd7f0edb9cb39dc0dca3d4a286.html | 4 +- ...tor_adf6f9d3f8f8d8b1ccedabb4f04c098ad.html | 4 +- ...tor_ae480d5c86e5e1129d53d1e19782017a6.html | 4 +- ...tor_aebd099d9a70ffe760242ef24046c9002.html | 4 +- ...tor_af34f68f1ce670e7f25ce267b2b1e64ab.html | 4 +- ...tor_af55564e391b23e41abe78bc4bbe4edcb.html | 4 +- ...nn_1_1basic__json_1_1iterator-members.html | 2 +- classnlohmann_1_1basic__json_1_1iterator.html | 6 +- ...tor_a037e5f3de196ff4cea8a95a8a4e35882.html | 4 +- ...tor_a0a43bd93e6e46645ed0b93d3af7bfe22.html | 4 +- ...tor_a0c0acb68cc2a50a0e8782f860184883f.html | 4 +- ...tor_a0eb7ac9b746fb6f931ae728f70f92a8e.html | 4 +- ...tor_a1220b360a07b0605f7d2f4b3cfd16736.html | 4 +- ...tor_a21d32a4547ba4cbadd8b435a6a0d0e1b.html | 4 +- ...tor_a302d810a0685f8d39368eaa65c833acf.html | 4 +- ...tor_a33277dbf06ac5c1e7102e26f6b5e2c00.html | 4 +- ...tor_a4ae612fa9eb59784047b40f0419db65d.html | 4 +- ...tor_a4f6e03ae3bb674ebf0b727f74957c12f.html | 2 +- ...tor_a6e91e9d94a0e14d2fc28cfdf3beac2b1.html | 4 +- ...tor_a7031e759ee52d1283aada0ff81108a5e.html | 4 +- ...tor_a94285e2ade0bfef829b81377bbbca6cf.html | 4 +- ...tor_a9fcfda575b08d0c73b6274cdbbe7f184.html | 4 +- ...tor_aa2bd10afdcfc70acb8eaabbd2f6496f0.html | 4 +- ...tor_ab220a0cc3fe410fbae4524208bd5834f.html | 4 +- ...tor_ab5cf753cb2f8ce53b9f3e54c39e50ee3.html | 4 +- ...tor_abaebf4e21956dd20d9f862fa5647d32d.html | 4 +- ...tor_af64127418c567660d92b1afdfe9676db.html | 4 +- ...tor_afe65b5a0572c7bfdd7ccc942bb8e9fe2.html | 4 +- ...on_1_1json__reverse__iterator-members.html | 2 +- ...asic__json_1_1json__reverse__iterator.html | 4 +- ...tor_a03e542423284327d3801cf078f1c2b44.html | 4 +- ...tor_a0b494ef7570d031216f907d2c85ec323.html | 4 +- ...tor_a15e9cf4c5a43238e82ab69c4a295c491.html | 4 +- ...tor_a1c84e6d1f047ab4105fa665f455158a7.html | 4 +- ...tor_a2a1dc92fbec862883c8b89755c787c99.html | 4 +- ...tor_a5ee9ec91a6ddcd8d72278d681361626f.html | 4 +- ...tor_a61d31531e0dfc5448e7fa15678b05bbe.html | 4 +- ...tor_a6bd38ed124df0332ba3263a9176b0101.html | 4 +- ...tor_a70086e392779ecbbc9e6845b2be126a0.html | 4 +- ...tor_aa82b48aee07baee284f8340b37ec6864.html | 4 +- ...tor_ab6245ab29d8481ef2a2351c02cc31d4d.html | 4 +- ...tor_ac427d8f61858c13b7c16649bfbf75e76.html | 4 +- ...tor_ad3d6837b6f97065625c6c65f62f4b6d4.html | 4 +- ...tor_ae988bd36b7d098b1157871f83b2d6265.html | 4 +- ...tor_af972fce017b24906236ab235857a11a8.html | 4 +- ...son_a01a2643289b69cd71d9b3f3fc209b748.html | 4 +- ...son_a0703ae5cbd2daac5e6c0ae01d3a1b114.html | 8 +- ...son_a07c9c38a1f01675759e05d5d34627343.html | 6 +- ...son_a088460b5d95f384a4f2ec9e52f4f66ba.html | 4 +- ...son_a0afa4512f03406db0d0432657e9c7361.html | 4 +- ...son_a114095c452ca2f4ba976548df3da68be.html | 4 +- ...son_a11c3dd843c21c58daa651e84046a82af.html | 4 +- ...son_a122640e7e2db1814fc7bbb3c122ec76e.html | 6 +- ...son_a13e5642dbfa1602c937d295a085413cc.html | 2 +- ...son_a1683189bd539313b5559f07961166c8b.html | 2 +- ...son_a16a275d0201e9aedc87c933c764b8869.html | 4 +- ...son_a1dc0c521042807e216d11110d2f002ff.html | 4 +- ...son_a231b02148577b69a154b2ce2c87a5522.html | 4 +- ...son_a234f03dce002783748ca401a42bc6472.html | 4 +- ...son_a266c4dd24d11a86e4831523af5d9df4d.html | 4 +- ...son_a26b7e4876af25eae5800ce43f93aaef2.html | 4 +- ...son_a2adfc8d24bea3908398cbf325b5dc1d7.html | 4 +- ...son_a2f07bcf7e75c34396476dd1790f26ce8.html | 8 +- ...son_a3173944e7b1809a333def4078a0b92a3.html | 8 +- ...son_a317b01b0fba3ac458561f1634759ea3b.html | 2 +- ...son_a3287df6546c905fb0a5786deb4b1cf32.html | 4 +- ...son_a33f1632cfdbf460b4913f4e8a43dd9e4.html | 4 +- ...son_a34d6a60dd99e9f33b8273a1c8db5669b.html | 6 +- ...son_a3d4e4bab95b24ccab42ed37e0ede2d98.html | 4 +- ...son_a42f9133f978dde4cce5851b2c2434a0c.html | 4 +- ...son_a4361aa791f3980abb239e4155a3450cb.html | 6 +- ...son_a457fec897d7b6283c60ca236ebb1f5e8.html | 4 +- ...son_a48c8d153bc2fd1af655063a4b984feac.html | 4 +- ...son_a4943b7f16ddc4e0df33c0cae7ef14471.html | 4 +- ...son_a4ad3f27ecece8f644e8dca69a97eb67f.html | 4 +- ...son_a4bf695ddf4a00ea8feea2c725ec847f1.html | 10 +- ...son_a4d688b5ff534d3ab4e284b3191061529.html | 4 +- ...son_a5114ed5eb394a2805da0bd1acba95ae2.html | 8 +- ...son_a53a2abfdd4f72c7df5aba1155bf03e48.html | 4 +- ...son_a57703688bee6b9736ab3a430d8d246f2.html | 4 +- ...son_a57a96ab3ff1ce7b48a754129fb12c982.html | 11 +- ...son_a5a2d4dbcdbc8ea065b87daf52cd786b9.html | 4 +- ...son_a5c8bb5200f5eac10d31e26be46e5b1ac.html | 6 +- ...son_a5d428360d75a52f6af74751d1cc912c6.html | 4 +- ...son_a5e34c5435e557d0bf666bd7311211405.html | 6 +- ...son_a5f0aad50ed7e8aec3128fe018c18b3fe.html | 4 +- ...son_a5fd8b54389698edf0c08e2dd001f610b.html | 2 +- ...son_a60ca396028b8d9714c6e10efbf475af6.html | 6 +- ...son_a63691315292df8e1522b00d37ebb1ffc.html | 4 +- ...son_a652414dd930cb3af3b6f454cc535a23e.html | 4 +- ...son_a656939a3dc9a6047e4afacd9e11b83a6.html | 4 +- ...son_a66f936cfbd252f85bd3dc2598e37a64b.html | 8 +- ...son_a6944904b3b59769b1cf62ac2532cbe33.html | 4 +- ...son_a696ced74d8edc0b63a000a72907ab109.html | 4 +- ...son_a6a7f45095675ac6fd1d018a0e41874be.html | 4 +- ...son_a6b7428e8c1169497f47b81667001cbfb.html | 8 +- ...son_a6bbd3e72a870f1ba81ff6886b063b0fe.html | 2 +- ...son_a6dff6a02a2be250b8f8dc2f47be65544.html | 4 +- ...son_a6e2e21da48f5d9471716cd868a068327.html | 6 +- ...son_a71eba33d906745e66f340952b79fbce3.html | 2 +- ...son_a72442ccbb378b4464a24a2da1e784041.html | 4 +- ...son_a72ba20783ecb3eec98bd6a3b870d565c.html | 6 +- ...son_a74472977b798c7b7989e6e7cb960ecff.html | 4 +- ...son_a74a943800c7f103d0990d7eef82c6453.html | 6 +- ...son_a74ccfa471a0c061876b247f820f3c741.html | 12 +- ...son_a75a1754e0d39f33095d3102a8bdb9881.html | 4 +- ...son_a76cfc5062bf6223396ab82c753cd4634.html | 4 +- ...son_a7c08f966200af98db0313a3b517ce0a9.html | 4 +- ...son_a7c19a5c3be6cc755377ee41eade78baf.html | 4 +- ...son_a7d0db3b728d820d4984df78d97d2b104.html | 2 +- ...son_a7d1b990f2c12fecb57db1504fdadd0bb.html | 4 +- ...son_a7dab69b10b98e7bc694339720e37fb2b.html | 4 +- ...son_a7f97a91ad8f1d5cf0b9213bd24f247c4.html | 6 +- ...son_a80ceaa3bdd346292273b309e08525c1c.html | 2 +- ...son_a83cbbfbf5d3ecbad6de8ece0be6b36c4.html | 4 +- ...son_a87db51b6b936fb2ea293cdbc8702dcb8.html | 6 +- ...son_a8b526709d395142b68d21abfbfff17c3.html | 4 +- ...son_a8c40cd9ead4de7c82f28268bdf0ec98a.html | 8 +- ...son_a8e34088252a3ee6b2377f3a1f26dd1ba.html | 4 +- ...son_a8e4e11999b4e7faa8f31f21164ebd65a.html | 2 +- ...son_a8fa74698f4061e18ec664009f3af1ddf.html | 8 +- ...son_a930e14150ffa067bcf56d35cb00271e1.html | 4 +- ...son_a960962c683909619d1d2fbbe856c022e.html | 8 +- ...son_a9730b9f7bc2150e641fe20198d4477c7.html | 6 +- ...son_a98e05a2c9b8f74bd60442772cddeee52.html | 6 +- ...son_a9993148cb0473365e52998c7315f9ada.html | 4 +- ...son_a9a73d1b71c9e913aa2888d8b40c72ee9.html | 6 +- ...son_a9c26c5d0f4a519c7236149b9aeb3ef9e.html | 4 +- ...son_a9daafb4c15ed5a008cb825bbd8c29d87.html | 4 +- ...son_a9f17a0690155e3a5603246ccec81499e.html | 4 +- ...son_aa0422e861b4cbd7cdcaad7a11a1304a9.html | 12 +- ...son_aa1f3b3f1dca79392d6727b81f9668c6c.html | 4 +- ...son_aa5413178b8041f7ac685dec4b040dd2c.html | 6 +- ...son_aa6a24b176f9599a21d662cc5f8e1ca76.html | 4 +- ...son_aa6c32f669a2e523666072003d0ea46f4.html | 4 +- ...son_aa71e977d31f470689883ac60d16ea4ac.html | 11 +- ...son_aabe4661644ea549089f0886c2551d2ac.html | 4 +- ...son_aac185a137428a7337aa620de07bfbbd7.html | 6 +- ...son_aacd442b66140c764c594ac8ad7dfd5b3.html | 6 +- ...son_aacf6c869f6a9c66ac1bc99e93f310044.html | 4 +- ...son_aaf363408931d76472ded14017e59c9e8.html | 6 +- ...son_aafa839f2a74dc1b5060314b3423143b8.html | 4 +- ...son_ab14e3503305622fb5ab01a7f490916e8.html | 10 +- ...son_ab2162bc76e10d8736cab9b2039956054.html | 6 +- ...son_ab74b2398f29acc6ffbf48f1b8974a848.html | 4 +- ...son_ab7d60fb6cb8e8f5740e588f9dc953819.html | 4 +- ...son_ab9a20bd1d391e9cb968db50c246f728d.html | 8 +- ...son_ab9da2afc6f77295f25252725fde142a6.html | 4 +- ...son_abe8f3224ca4041908ddb466cb9caecf1.html | 8 +- ...son_ac160789f17d206a5404981ca0957e303.html | 4 +- ...son_ac4011bd0781e51afe4994d2b09fd27e9.html | 2 +- ...son_ac8163abe518595f19dbee68db1caaaf7.html | 4 +- ...son_ac82abedf356d252e0589850c3d8b35ba.html | 4 +- ...son_ac943391891fcde0a71a15ce990e0f7f4.html | 4 +- ...son_acd08f9179c8c1e9f2cd7575a724ce27e.html | 4 +- ...son_acdf4445333649ec94198f09a62144884.html | 6 +- ...son_ace8338e57fdb11e1955c2a0c2d782069.html | 4 +- ...son_ad1f617d29e8923dd40c89153f792b1bc.html | 4 +- ...son_ad2c4513cef5d8db760c4b2d871eea42c.html | 2 +- ...son_ad497cbc4f80c8d79662ee6e19bf145dd.html | 4 +- ...son_ad6734c2b91b1b77aa2b43b65c3619c05.html | 4 +- ...son_ad8e0c5d04f016d1b3ac7369e5c73bedf.html | 6 +- ...son_ada8e01109a60088e4db2a670d4903b54.html | 4 +- ...son_adbd4c16c9ac641b2a4736bc2c6787d83.html | 2 +- ...son_ade7bd6e0fe221fec9d3fa9b430f5ce76.html | 4 +- ...son_adeaef2ab021997a11a826c378c2365e1.html | 4 +- ...son_adf5dea6fa9d7075ff89ca0796ab47a7e.html | 4 +- ...son_ae347859ec88176ef76a0cbe5b4514fcf.html | 6 +- ...son_ae50f22a1c646b8627e88f1313cceffd4.html | 4 +- ...son_ae874cfc1746b560c53a03bcf5b7bbeed.html | 4 +- ...son_ae928414b2805cf6ef56b4e4f8d235416.html | 2 +- ...son_ae960d2d6bc7b94fe39cc5e9f106edfa9.html | 4 +- ...son_aea1c863b719b4ca5b77188c171bbfafe.html | 4 +- ...son_af073eec08d2e68924098aef09e9a10ba.html | 8 +- ...son_af0ebd1757acb971a6504b4acabf88584.html | 4 +- ...son_af127fb69c580c17821da5f5be57e3585.html | 4 +- ...son_af1e3f9e079136abca2530c8191c56292.html | 6 +- ...son_af2730bc8ffa6b28916875c13ee7b83f5.html | 10 +- ...son_af661bc209bf22097e2f76607a11b56bf.html | 4 +- ...son_af6b6050ccd906dddf7c9f47fe3ad62a5.html | 4 +- ...son_af709c079de0ac3507143ea2c60699bd0.html | 4 +- ...son_af74581d177dafc38df5a126ccd358999.html | 4 +- ...son_af7d0adc984d04fc70c3d29fcd63e096a.html | 6 +- ...son_afc4223b5ad03b1b76e925374a8fff98e.html | 4 +- dir_68267d1309a1af8e8297ef4c3efbcdba.html | 2 +- functions.html | 2 +- functions_b.html | 2 +- functions_c.html | 2 +- functions_d.html | 2 +- functions_e.html | 2 +- functions_enum.html | 2 +- functions_f.html | 2 +- functions_func.html | 2 +- functions_g.html | 2 +- functions_i.html | 2 +- functions_j.html | 2 +- functions_k.html | 2 +- functions_m.html | 2 +- functions_n.html | 2 +- functions_o.html | 2 +- functions_p.html | 2 +- functions_r.html | 2 +- functions_rela.html | 2 +- functions_s.html | 2 +- functions_t.html | 2 +- functions_type.html | 2 +- functions_v.html | 2 +- functions_~.html | 2 +- graph_legend.html | 2 +- hierarchy.html | 2 +- index.html | 4 +- json_8hpp_source.html | 5925 +++++++++-------- namespacemembers.html | 2 +- namespacemembers_type.html | 2 +- namespacenlohmann.html | 4 +- ..._1anonymous__namespace_02json_8hpp_03.html | 4 +- ...ann_a2bfd99e845a2e5cd90aeaf1b1431f474.html | 6 +- ...ash_3_01nlohmann_1_1json_01_4-members.html | 2 +- ...std_1_1hash_3_01nlohmann_1_1json_01_4.html | 4 +- ...1_4_afd03f6ad53db22868ca4163a8200b2f9.html | 6 +- 251 files changed, 3491 insertions(+), 3488 deletions(-) diff --git a/annotated.html b/annotated.html index 9c418f4cf..4ee4e8e54 100644 --- a/annotated.html +++ b/annotated.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classes.html b/classes.html index 0223a34fc..5c1edbe78 100644 --- a/classes.html +++ b/classes.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classnlohmann_1_1basic__json-members.html b/classnlohmann_1_1basic__json-members.html index d7850c49a..dac790dff 100644 --- a/classnlohmann_1_1basic__json-members.html +++ b/classnlohmann_1_1basic__json-members.html @@ -236,7 +236,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classnlohmann_1_1basic__json.html b/classnlohmann_1_1basic__json.html index 7f1b7f21f..cecf704ea 100644 --- a/classnlohmann_1_1basic__json.html +++ b/classnlohmann_1_1basic__json.html @@ -656,13 +656,13 @@ class nlohmann::basic_json
See also
RFC 7159 http://rfc7159.net/rfc7159
-
Since
version 1.0
+
Since
version 1.0.0

Definition at line 187 of file json.hpp.

diff --git a/classnlohmann_1_1basic__json_1_1const__iterator-members.html b/classnlohmann_1_1basic__json_1_1const__iterator-members.html index 9bb051c7a..4c453c559 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator-members.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator-members.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classnlohmann_1_1basic__json_1_1const__iterator.html b/classnlohmann_1_1basic__json_1_1const__iterator.html index bd47b9cbf..df74db835 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator.html @@ -213,13 +213,13 @@ class nlohmann::basic_json::const_iterator
  • RandomAccessIterator: The iterator that can be moved to point (forward and backward) to any element in constant time.
  • -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 5570 of file json.hpp.

    +

    Definition at line 5577 of file json.hpp.

    diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a019087161350d393f3e4ac841cdd3dbd.html b/classnlohmann_1_1basic__json_1_1const__iterator_a019087161350d393f3e4ac841cdd3dbd.html index 822c851c3..fb2f05cae 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a019087161350d393f3e4ac841cdd3dbd.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a019087161350d393f3e4ac841cdd3dbd.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5816 of file json.hpp.

    +

    Definition at line 5823 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a17e5f5d3598e6901f3c1c1f7dc60589f.html b/classnlohmann_1_1basic__json_1_1const__iterator_a17e5f5d3598e6901f3c1c1f7dc60589f.html index 30efd618c..93116b97d 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a17e5f5d3598e6901f3c1c1f7dc60589f.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a17e5f5d3598e6901f3c1c1f7dc60589f.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5919 of file json.hpp.

    +

    Definition at line 5926 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a1cba94e5a67ee52bc66b898a4e08359d.html b/classnlohmann_1_1basic__json_1_1const__iterator_a1cba94e5a67ee52bc66b898a4e08359d.html index 5e5c007b7..db2e80670 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a1cba94e5a67ee52bc66b898a4e08359d.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a1cba94e5a67ee52bc66b898a4e08359d.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6001 of file json.hpp.

    +

    Definition at line 6008 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a211523a57024a43965862b497b89ab91.html b/classnlohmann_1_1basic__json_1_1const__iterator_a211523a57024a43965862b497b89ab91.html index c053beda4..1d0ab703e 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a211523a57024a43965862b497b89ab91.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a211523a57024a43965862b497b89ab91.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5646 of file json.hpp.

    +

    Definition at line 5653 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a301749e9779adafd395369ac36df93df.html b/classnlohmann_1_1basic__json_1_1const__iterator_a301749e9779adafd395369ac36df93df.html index 1a88a976e..843eb2885 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a301749e9779adafd395369ac36df93df.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a301749e9779adafd395369ac36df93df.html @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5752 of file json.hpp.

    +

    Definition at line 5759 of file json.hpp.

    @@ -152,7 +152,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a36086a699b95e06976c11367b7d6ba53.html b/classnlohmann_1_1basic__json_1_1const__iterator_a36086a699b95e06976c11367b7d6ba53.html index 457314dff..c8630d3ed 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a36086a699b95e06976c11367b7d6ba53.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a36086a699b95e06976c11367b7d6ba53.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5851 of file json.hpp.

    +

    Definition at line 5858 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a4632d8307fc315f21e2ecc9ba5aa6346.html b/classnlohmann_1_1basic__json_1_1const__iterator_a4632d8307fc315f21e2ecc9ba5aa6346.html index c39cf176f..8a04a8344 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a4632d8307fc315f21e2ecc9ba5aa6346.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a4632d8307fc315f21e2ecc9ba5aa6346.html @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5718 of file json.hpp.

    +

    Definition at line 5725 of file json.hpp.

    @@ -152,7 +152,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a4f7ac43b0ab34c387b1ae1a8e9c08467.html b/classnlohmann_1_1basic__json_1_1const__iterator_a4f7ac43b0ab34c387b1ae1a8e9c08467.html index dac9fb13b..7cc9a3c23 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a4f7ac43b0ab34c387b1ae1a8e9c08467.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a4f7ac43b0ab34c387b1ae1a8e9c08467.html @@ -131,7 +131,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5581 of file json.hpp.

    +

    Definition at line 5588 of file json.hpp.

    @@ -141,7 +141,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a5aff013c03c1bdc248346c249bec7b67.html b/classnlohmann_1_1basic__json_1_1const__iterator_a5aff013c03c1bdc248346c249bec7b67.html index fbf8fb303..8aabcf376 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a5aff013c03c1bdc248346c249bec7b67.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a5aff013c03c1bdc248346c249bec7b67.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5616 of file json.hpp.

    +

    Definition at line 5623 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a62cad59e006eb7fa594c2c5b65a76610.html b/classnlohmann_1_1basic__json_1_1const__iterator_a62cad59e006eb7fa594c2c5b65a76610.html index 4c21d36cf..6e6c12649 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a62cad59e006eb7fa594c2c5b65a76610.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a62cad59e006eb7fa594c2c5b65a76610.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5971 of file json.hpp.

    +

    Definition at line 5978 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a67848d4b7bfa576434ad9807147b5870.html b/classnlohmann_1_1basic__json_1_1const__iterator_a67848d4b7bfa576434ad9807147b5870.html index 39332e56d..aeb190c06 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a67848d4b7bfa576434ad9807147b5870.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a67848d4b7bfa576434ad9807147b5870.html @@ -131,7 +131,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5577 of file json.hpp.

    +

    Definition at line 5584 of file json.hpp.

    @@ -141,7 +141,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a6b3e43d2f45fa611825dbdf4e88fffe2.html b/classnlohmann_1_1basic__json_1_1const__iterator_a6b3e43d2f45fa611825dbdf4e88fffe2.html index 222801154..1d5579690 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a6b3e43d2f45fa611825dbdf4e88fffe2.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a6b3e43d2f45fa611825dbdf4e88fffe2.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5925 of file json.hpp.

    +

    Definition at line 5932 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a83454954e4e16be3d5316f9322e91a34.html b/classnlohmann_1_1basic__json_1_1const__iterator_a83454954e4e16be3d5316f9322e91a34.html index 008478b6d..060b944e9 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a83454954e4e16be3d5316f9322e91a34.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a83454954e4e16be3d5316f9322e91a34.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5591 of file json.hpp.

    +

    Definition at line 5598 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a86a1771e6658d0b14868df6c197d2353.html b/classnlohmann_1_1basic__json_1_1const__iterator_a86a1771e6658d0b14868df6c197d2353.html index 8eebf4a33..803677bf7 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a86a1771e6658d0b14868df6c197d2353.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a86a1771e6658d0b14868df6c197d2353.html @@ -150,7 +150,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_a8d024cbc99db0d8106899f9fd9973735.html b/classnlohmann_1_1basic__json_1_1const__iterator_a8d024cbc99db0d8106899f9fd9973735.html index 7b5029061..74a2bd53d 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_a8d024cbc99db0d8106899f9fd9973735.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_a8d024cbc99db0d8106899f9fd9973735.html @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6035 of file json.hpp.

    +

    Definition at line 6042 of file json.hpp.

    @@ -152,7 +152,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_ab74b39747a9dad60650a57133fca85b3.html b/classnlohmann_1_1basic__json_1_1const__iterator_ab74b39747a9dad60650a57133fca85b3.html index 9a665eaca..27eb1a681 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_ab74b39747a9dad60650a57133fca85b3.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_ab74b39747a9dad60650a57133fca85b3.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5931 of file json.hpp.

    +

    Definition at line 5938 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_ab7dacd8e3ee9b3756bfcdb87dd55a515.html b/classnlohmann_1_1basic__json_1_1const__iterator_ab7dacd8e3ee9b3756bfcdb87dd55a515.html index 77abdc8eb..b3fda3919 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_ab7dacd8e3ee9b3756bfcdb87dd55a515.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_ab7dacd8e3ee9b3756bfcdb87dd55a515.html @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6048 of file json.hpp.

    +

    Definition at line 6055 of file json.hpp.

    @@ -152,7 +152,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_ab9d31bf0d0b4d7310c858a04ce84a52f.html b/classnlohmann_1_1basic__json_1_1const__iterator_ab9d31bf0d0b4d7310c858a04ce84a52f.html index 239231718..2ef9317a3 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_ab9d31bf0d0b4d7310c858a04ce84a52f.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_ab9d31bf0d0b4d7310c858a04ce84a52f.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5879 of file json.hpp.

    +

    Definition at line 5886 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_abb1921cbf0ad4036c83bc6303e22171f.html b/classnlohmann_1_1basic__json_1_1const__iterator_abb1921cbf0ad4036c83bc6303e22171f.html index 9ddb52f35..5370b7417 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_abb1921cbf0ad4036c83bc6303e22171f.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_abb1921cbf0ad4036c83bc6303e22171f.html @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5824 of file json.hpp.

    +

    Definition at line 5831 of file json.hpp.

    @@ -152,7 +152,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_abbacd95955c602efc9a58ed1ffdb46c4.html b/classnlohmann_1_1basic__json_1_1const__iterator_abbacd95955c602efc9a58ed1ffdb46c4.html index 6f9f6962d..4cb66045d 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_abbacd95955c602efc9a58ed1ffdb46c4.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_abbacd95955c602efc9a58ed1ffdb46c4.html @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5789 of file json.hpp.

    +

    Definition at line 5796 of file json.hpp.

    @@ -152,7 +152,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_ac36b9187de43721a4bf1b052578bb80b.html b/classnlohmann_1_1basic__json_1_1const__iterator_ac36b9187de43721a4bf1b052578bb80b.html index 3e1864c75..61f5f60e8 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_ac36b9187de43721a4bf1b052578bb80b.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_ac36b9187de43721a4bf1b052578bb80b.html @@ -131,7 +131,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5579 of file json.hpp.

    +

    Definition at line 5586 of file json.hpp.

    @@ -141,7 +141,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_ac634a659837f5aebc97125e031de23b5.html b/classnlohmann_1_1basic__json_1_1const__iterator_ac634a659837f5aebc97125e031de23b5.html index 598d60a38..933f78fa9 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_ac634a659837f5aebc97125e031de23b5.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_ac634a659837f5aebc97125e031de23b5.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5963 of file json.hpp.

    +

    Definition at line 5970 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_acea5b75d1087e2a92833946d9dc547ff.html b/classnlohmann_1_1basic__json_1_1const__iterator_acea5b75d1087e2a92833946d9dc547ff.html index 1891d25a5..daa6d78bc 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_acea5b75d1087e2a92833946d9dc547ff.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_acea5b75d1087e2a92833946d9dc547ff.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5885 of file json.hpp.

    +

    Definition at line 5892 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_ada3100cdb8700566051828f1355fa745.html b/classnlohmann_1_1basic__json_1_1const__iterator_ada3100cdb8700566051828f1355fa745.html index 69f6545a8..19147fcee 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_ada3100cdb8700566051828f1355fa745.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_ada3100cdb8700566051828f1355fa745.html @@ -139,7 +139,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5573 of file json.hpp.

    +

    Definition at line 5580 of file json.hpp.

    @@ -149,7 +149,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_adb50d6043ace464d9f694869724d7fb2.html b/classnlohmann_1_1basic__json_1_1const__iterator_adb50d6043ace464d9f694869724d7fb2.html index 84dfd2b6e..382518249 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_adb50d6043ace464d9f694869724d7fb2.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_adb50d6043ace464d9f694869724d7fb2.html @@ -131,7 +131,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5583 of file json.hpp.

    +

    Definition at line 5590 of file json.hpp.

    @@ -141,7 +141,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_adda9a4bd7f0edb9cb39dc0dca3d4a286.html b/classnlohmann_1_1basic__json_1_1const__iterator_adda9a4bd7f0edb9cb39dc0dca3d4a286.html index 29192916a..a372b663b 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_adda9a4bd7f0edb9cb39dc0dca3d4a286.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_adda9a4bd7f0edb9cb39dc0dca3d4a286.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5979 of file json.hpp.

    +

    Definition at line 5986 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_adf6f9d3f8f8d8b1ccedabb4f04c098ad.html b/classnlohmann_1_1basic__json_1_1const__iterator_adf6f9d3f8f8d8b1ccedabb4f04c098ad.html index 533092b3a..2ccf4acd5 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_adf6f9d3f8f8d8b1ccedabb4f04c098ad.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_adf6f9d3f8f8d8b1ccedabb4f04c098ad.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5781 of file json.hpp.

    +

    Definition at line 5788 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_ae480d5c86e5e1129d53d1e19782017a6.html b/classnlohmann_1_1basic__json_1_1const__iterator_ae480d5c86e5e1129d53d1e19782017a6.html index 61247d2c7..f98ff13d0 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_ae480d5c86e5e1129d53d1e19782017a6.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_ae480d5c86e5e1129d53d1e19782017a6.html @@ -131,7 +131,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5585 of file json.hpp.

    +

    Definition at line 5592 of file json.hpp.

    @@ -141,7 +141,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_aebd099d9a70ffe760242ef24046c9002.html b/classnlohmann_1_1basic__json_1_1const__iterator_aebd099d9a70ffe760242ef24046c9002.html index b25f5c8a9..b080de89f 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_aebd099d9a70ffe760242ef24046c9002.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_aebd099d9a70ffe760242ef24046c9002.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5913 of file json.hpp.

    +

    Definition at line 5920 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_af34f68f1ce670e7f25ce267b2b1e64ab.html b/classnlohmann_1_1basic__json_1_1const__iterator_af34f68f1ce670e7f25ce267b2b1e64ab.html index 157a17e1c..f26fe3693 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_af34f68f1ce670e7f25ce267b2b1e64ab.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_af34f68f1ce670e7f25ce267b2b1e64ab.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5957 of file json.hpp.

    +

    Definition at line 5964 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1const__iterator_af55564e391b23e41abe78bc4bbe4edcb.html b/classnlohmann_1_1basic__json_1_1const__iterator_af55564e391b23e41abe78bc4bbe4edcb.html index 8dda7a047..dc5afec14 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator_af55564e391b23e41abe78bc4bbe4edcb.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator_af55564e391b23e41abe78bc4bbe4edcb.html @@ -143,7 +143,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 5641 of file json.hpp.

    +

    Definition at line 5648 of file json.hpp.

    @@ -153,7 +153,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator-members.html b/classnlohmann_1_1basic__json_1_1iterator-members.html index d01ed0e98..3914bbf36 100644 --- a/classnlohmann_1_1basic__json_1_1iterator-members.html +++ b/classnlohmann_1_1basic__json_1_1iterator-members.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classnlohmann_1_1basic__json_1_1iterator.html b/classnlohmann_1_1basic__json_1_1iterator.html index fd3aedff1..51a5b018d 100644 --- a/classnlohmann_1_1basic__json_1_1iterator.html +++ b/classnlohmann_1_1basic__json_1_1iterator.html @@ -264,13 +264,13 @@ class nlohmann::basic_json::iterator
  • OutputIterator: It is possible to write to the pointed-to element.
  • -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 6072 of file json.hpp.

    +

    Definition at line 6079 of file json.hpp.

    diff --git a/classnlohmann_1_1basic__json_1_1iterator_a037e5f3de196ff4cea8a95a8a4e35882.html b/classnlohmann_1_1basic__json_1_1iterator_a037e5f3de196ff4cea8a95a8a4e35882.html index 218cbe072..8156612b1 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a037e5f3de196ff4cea8a95a8a4e35882.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a037e5f3de196ff4cea8a95a8a4e35882.html @@ -131,7 +131,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6125 of file json.hpp.

    +

    Definition at line 6132 of file json.hpp.

    @@ -141,7 +141,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a0a43bd93e6e46645ed0b93d3af7bfe22.html b/classnlohmann_1_1basic__json_1_1iterator_a0a43bd93e6e46645ed0b93d3af7bfe22.html index be14f2793..7162e918f 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a0a43bd93e6e46645ed0b93d3af7bfe22.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a0a43bd93e6e46645ed0b93d3af7bfe22.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6154 of file json.hpp.

    +

    Definition at line 6161 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a0c0acb68cc2a50a0e8782f860184883f.html b/classnlohmann_1_1basic__json_1_1iterator_a0c0acb68cc2a50a0e8782f860184883f.html index eb1746e0f..8836f3026 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a0c0acb68cc2a50a0e8782f860184883f.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a0c0acb68cc2a50a0e8782f860184883f.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6169 of file json.hpp.

    +

    Definition at line 6176 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a0eb7ac9b746fb6f931ae728f70f92a8e.html b/classnlohmann_1_1basic__json_1_1iterator_a0eb7ac9b746fb6f931ae728f70f92a8e.html index 9fbdc0d43..6460573de 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a0eb7ac9b746fb6f931ae728f70f92a8e.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a0eb7ac9b746fb6f931ae728f70f92a8e.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6182 of file json.hpp.

    +

    Definition at line 6189 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a1220b360a07b0605f7d2f4b3cfd16736.html b/classnlohmann_1_1basic__json_1_1iterator_a1220b360a07b0605f7d2f4b3cfd16736.html index 1c2ef81a3..ec67a03ee 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a1220b360a07b0605f7d2f4b3cfd16736.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a1220b360a07b0605f7d2f4b3cfd16736.html @@ -131,7 +131,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6111 of file json.hpp.

    +

    Definition at line 6118 of file json.hpp.

    @@ -141,7 +141,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a21d32a4547ba4cbadd8b435a6a0d0e1b.html b/classnlohmann_1_1basic__json_1_1iterator_a21d32a4547ba4cbadd8b435a6a0d0e1b.html index ce083334a..b5cf33f83 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a21d32a4547ba4cbadd8b435a6a0d0e1b.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a21d32a4547ba4cbadd8b435a6a0d0e1b.html @@ -131,7 +131,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6140 of file json.hpp.

    +

    Definition at line 6147 of file json.hpp.

    @@ -141,7 +141,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a302d810a0685f8d39368eaa65c833acf.html b/classnlohmann_1_1basic__json_1_1iterator_a302d810a0685f8d39368eaa65c833acf.html index 4c144e7ea..11d9bfbf5 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a302d810a0685f8d39368eaa65c833acf.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a302d810a0685f8d39368eaa65c833acf.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6176 of file json.hpp.

    +

    Definition at line 6183 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a33277dbf06ac5c1e7102e26f6b5e2c00.html b/classnlohmann_1_1basic__json_1_1iterator_a33277dbf06ac5c1e7102e26f6b5e2c00.html index ca6dd8cf8..79ce35ee7 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a33277dbf06ac5c1e7102e26f6b5e2c00.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a33277dbf06ac5c1e7102e26f6b5e2c00.html @@ -131,7 +131,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6105 of file json.hpp.

    +

    Definition at line 6112 of file json.hpp.

    @@ -141,7 +141,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a4ae612fa9eb59784047b40f0419db65d.html b/classnlohmann_1_1basic__json_1_1iterator_a4ae612fa9eb59784047b40f0419db65d.html index 2eacac08d..f08b1bca6 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a4ae612fa9eb59784047b40f0419db65d.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a4ae612fa9eb59784047b40f0419db65d.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6132 of file json.hpp.

    +

    Definition at line 6139 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a4f6e03ae3bb674ebf0b727f74957c12f.html b/classnlohmann_1_1basic__json_1_1iterator_a4f6e03ae3bb674ebf0b727f74957c12f.html index be631e843..5fe2b4065 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a4f6e03ae3bb674ebf0b727f74957c12f.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a4f6e03ae3bb674ebf0b727f74957c12f.html @@ -139,7 +139,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a6e91e9d94a0e14d2fc28cfdf3beac2b1.html b/classnlohmann_1_1basic__json_1_1iterator_a6e91e9d94a0e14d2fc28cfdf3beac2b1.html index 925cf0f75..fc52d3590 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a6e91e9d94a0e14d2fc28cfdf3beac2b1.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a6e91e9d94a0e14d2fc28cfdf3beac2b1.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6093 of file json.hpp.

    +

    Definition at line 6100 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a7031e759ee52d1283aada0ff81108a5e.html b/classnlohmann_1_1basic__json_1_1iterator_a7031e759ee52d1283aada0ff81108a5e.html index c00059d27..4895e87f1 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a7031e759ee52d1283aada0ff81108a5e.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a7031e759ee52d1283aada0ff81108a5e.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6147 of file json.hpp.

    +

    Definition at line 6154 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a94285e2ade0bfef829b81377bbbca6cf.html b/classnlohmann_1_1basic__json_1_1iterator_a94285e2ade0bfef829b81377bbbca6cf.html index db8922e99..b9682bfd9 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a94285e2ade0bfef829b81377bbbca6cf.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a94285e2ade0bfef829b81377bbbca6cf.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6088 of file json.hpp.

    +

    Definition at line 6095 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a9fcfda575b08d0c73b6274cdbbe7f184.html b/classnlohmann_1_1basic__json_1_1iterator_a9fcfda575b08d0c73b6274cdbbe7f184.html index da17c142f..6bf788414 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_a9fcfda575b08d0c73b6274cdbbe7f184.html +++ b/classnlohmann_1_1basic__json_1_1iterator_a9fcfda575b08d0c73b6274cdbbe7f184.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6117 of file json.hpp.

    +

    Definition at line 6124 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_aa2bd10afdcfc70acb8eaabbd2f6496f0.html b/classnlohmann_1_1basic__json_1_1iterator_aa2bd10afdcfc70acb8eaabbd2f6496f0.html index 2c54c3948..b31b98f6c 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_aa2bd10afdcfc70acb8eaabbd2f6496f0.html +++ b/classnlohmann_1_1basic__json_1_1iterator_aa2bd10afdcfc70acb8eaabbd2f6496f0.html @@ -120,7 +120,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6077 of file json.hpp.

    +

    Definition at line 6084 of file json.hpp.

    @@ -130,7 +130,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_ab220a0cc3fe410fbae4524208bd5834f.html b/classnlohmann_1_1basic__json_1_1iterator_ab220a0cc3fe410fbae4524208bd5834f.html index 49e2989a8..becb13fbb 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_ab220a0cc3fe410fbae4524208bd5834f.html +++ b/classnlohmann_1_1basic__json_1_1iterator_ab220a0cc3fe410fbae4524208bd5834f.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6083 of file json.hpp.

    +

    Definition at line 6090 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_ab5cf753cb2f8ce53b9f3e54c39e50ee3.html b/classnlohmann_1_1basic__json_1_1iterator_ab5cf753cb2f8ce53b9f3e54c39e50ee3.html index a5e4b863c..7da1c4cc3 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_ab5cf753cb2f8ce53b9f3e54c39e50ee3.html +++ b/classnlohmann_1_1basic__json_1_1iterator_ab5cf753cb2f8ce53b9f3e54c39e50ee3.html @@ -132,7 +132,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6161 of file json.hpp.

    +

    Definition at line 6168 of file json.hpp.

    @@ -142,7 +142,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_abaebf4e21956dd20d9f862fa5647d32d.html b/classnlohmann_1_1basic__json_1_1iterator_abaebf4e21956dd20d9f862fa5647d32d.html index 875c9f287..5d70bbb70 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_abaebf4e21956dd20d9f862fa5647d32d.html +++ b/classnlohmann_1_1basic__json_1_1iterator_abaebf4e21956dd20d9f862fa5647d32d.html @@ -120,7 +120,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6075 of file json.hpp.

    +

    Definition at line 6082 of file json.hpp.

    @@ -130,7 +130,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_af64127418c567660d92b1afdfe9676db.html b/classnlohmann_1_1basic__json_1_1iterator_af64127418c567660d92b1afdfe9676db.html index 708c189d5..1bce9774c 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_af64127418c567660d92b1afdfe9676db.html +++ b/classnlohmann_1_1basic__json_1_1iterator_af64127418c567660d92b1afdfe9676db.html @@ -131,7 +131,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6188 of file json.hpp.

    +

    Definition at line 6195 of file json.hpp.

    @@ -141,7 +141,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_afe65b5a0572c7bfdd7ccc942bb8e9fe2.html b/classnlohmann_1_1basic__json_1_1iterator_afe65b5a0572c7bfdd7ccc942bb8e9fe2.html index fe81d6771..89f70b7ba 100644 --- a/classnlohmann_1_1basic__json_1_1iterator_afe65b5a0572c7bfdd7ccc942bb8e9fe2.html +++ b/classnlohmann_1_1basic__json_1_1iterator_afe65b5a0572c7bfdd7ccc942bb8e9fe2.html @@ -120,7 +120,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    -

    Definition at line 6076 of file json.hpp.

    +

    Definition at line 6083 of file json.hpp.

    @@ -130,7 +130,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator-members.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator-members.html index 035ef67d7..b0afc839c 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator-members.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator.html index 2eeb0ed0f..29cc06ba3 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator.html @@ -168,13 +168,13 @@ class nlohmann::basic_json::json_reverse_iterator< Base >
  • OutputIterator: It is possible to write to the pointed-to element (only if Base is iterator).
  • -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 232 of file json.hpp.

    diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a03e542423284327d3801cf078f1c2b44.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a03e542423284327d3801cf078f1c2b44.html index de3488258..d886380f6 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a03e542423284327d3801cf078f1c2b44.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a03e542423284327d3801cf078f1c2b44.html @@ -129,7 +129,7 @@ template<typename Base >
    -

    Definition at line 6272 of file json.hpp.

    +

    Definition at line 6279 of file json.hpp.

    @@ -139,7 +139,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a0b494ef7570d031216f907d2c85ec323.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a0b494ef7570d031216f907d2c85ec323.html index 9fd94bea8..68ed10f57 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a0b494ef7570d031216f907d2c85ec323.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a0b494ef7570d031216f907d2c85ec323.html @@ -129,7 +129,7 @@ template<typename Base >
    -

    Definition at line 6221 of file json.hpp.

    +

    Definition at line 6228 of file json.hpp.

    @@ -139,7 +139,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a15e9cf4c5a43238e82ab69c4a295c491.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a15e9cf4c5a43238e82ab69c4a295c491.html index 964f7f2be..79d30a825 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a15e9cf4c5a43238e82ab69c4a295c491.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a15e9cf4c5a43238e82ab69c4a295c491.html @@ -128,7 +128,7 @@ template<typename Base >
    -

    Definition at line 6237 of file json.hpp.

    +

    Definition at line 6244 of file json.hpp.

    @@ -138,7 +138,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a1c84e6d1f047ab4105fa665f455158a7.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a1c84e6d1f047ab4105fa665f455158a7.html index 9c593796e..ce9354c5d 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a1c84e6d1f047ab4105fa665f455158a7.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a1c84e6d1f047ab4105fa665f455158a7.html @@ -129,7 +129,7 @@ template<typename Base >
    -

    Definition at line 6264 of file json.hpp.

    +

    Definition at line 6271 of file json.hpp.

    @@ -139,7 +139,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a2a1dc92fbec862883c8b89755c787c99.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a2a1dc92fbec862883c8b89755c787c99.html index 3cc754f76..1fcf10c29 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a2a1dc92fbec862883c8b89755c787c99.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a2a1dc92fbec862883c8b89755c787c99.html @@ -129,7 +129,7 @@ template<typename Base >
    -

    Definition at line 6257 of file json.hpp.

    +

    Definition at line 6264 of file json.hpp.

    @@ -139,7 +139,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a5ee9ec91a6ddcd8d72278d681361626f.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a5ee9ec91a6ddcd8d72278d681361626f.html index 157c0b489..48c3abb7d 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a5ee9ec91a6ddcd8d72278d681361626f.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a5ee9ec91a6ddcd8d72278d681361626f.html @@ -117,7 +117,7 @@ template<typename Base >
    -

    Definition at line 6218 of file json.hpp.

    +

    Definition at line 6225 of file json.hpp.

    @@ -127,7 +127,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a61d31531e0dfc5448e7fa15678b05bbe.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a61d31531e0dfc5448e7fa15678b05bbe.html index 7dde9d947..f613bdb31 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a61d31531e0dfc5448e7fa15678b05bbe.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a61d31531e0dfc5448e7fa15678b05bbe.html @@ -128,7 +128,7 @@ template<typename Base >
    -

    Definition at line 6299 of file json.hpp.

    +

    Definition at line 6306 of file json.hpp.

    @@ -138,7 +138,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a6bd38ed124df0332ba3263a9176b0101.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a6bd38ed124df0332ba3263a9176b0101.html index 2cca73090..d7b393aa5 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a6bd38ed124df0332ba3263a9176b0101.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a6bd38ed124df0332ba3263a9176b0101.html @@ -129,7 +129,7 @@ template<typename Base >
    -

    Definition at line 6244 of file json.hpp.

    +

    Definition at line 6251 of file json.hpp.

    @@ -139,7 +139,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a70086e392779ecbbc9e6845b2be126a0.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a70086e392779ecbbc9e6845b2be126a0.html index fb7eba679..baf4f45cb 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a70086e392779ecbbc9e6845b2be126a0.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_a70086e392779ecbbc9e6845b2be126a0.html @@ -129,7 +129,7 @@ template<typename Base >
    -

    Definition at line 6226 of file json.hpp.

    +

    Definition at line 6233 of file json.hpp.

    @@ -139,7 +139,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_aa82b48aee07baee284f8340b37ec6864.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_aa82b48aee07baee284f8340b37ec6864.html index 3d0eaac07..617cbabd0 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_aa82b48aee07baee284f8340b37ec6864.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_aa82b48aee07baee284f8340b37ec6864.html @@ -129,7 +129,7 @@ template<typename Base >
    -

    Definition at line 6231 of file json.hpp.

    +

    Definition at line 6238 of file json.hpp.

    @@ -139,7 +139,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ab6245ab29d8481ef2a2351c02cc31d4d.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ab6245ab29d8481ef2a2351c02cc31d4d.html index d0fa245ce..d83512ba5 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ab6245ab29d8481ef2a2351c02cc31d4d.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ab6245ab29d8481ef2a2351c02cc31d4d.html @@ -117,7 +117,7 @@ template<typename Base >
    -

    Definition at line 6216 of file json.hpp.

    +

    Definition at line 6223 of file json.hpp.

    @@ -127,7 +127,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ac427d8f61858c13b7c16649bfbf75e76.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ac427d8f61858c13b7c16649bfbf75e76.html index bf5fa18d3..7c14c1c4d 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ac427d8f61858c13b7c16649bfbf75e76.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ac427d8f61858c13b7c16649bfbf75e76.html @@ -129,7 +129,7 @@ template<typename Base >
    -

    Definition at line 6280 of file json.hpp.

    +

    Definition at line 6287 of file json.hpp.

    @@ -139,7 +139,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ad3d6837b6f97065625c6c65f62f4b6d4.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ad3d6837b6f97065625c6c65f62f4b6d4.html index 2c87c9d20..75cd2a5af 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ad3d6837b6f97065625c6c65f62f4b6d4.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ad3d6837b6f97065625c6c65f62f4b6d4.html @@ -128,7 +128,7 @@ template<typename Base >
    -

    Definition at line 6250 of file json.hpp.

    +

    Definition at line 6257 of file json.hpp.

    @@ -138,7 +138,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ae988bd36b7d098b1157871f83b2d6265.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ae988bd36b7d098b1157871f83b2d6265.html index 1785e6b02..dcd947f14 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ae988bd36b7d098b1157871f83b2d6265.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_ae988bd36b7d098b1157871f83b2d6265.html @@ -129,7 +129,7 @@ template<typename Base >
    -

    Definition at line 6286 of file json.hpp.

    +

    Definition at line 6293 of file json.hpp.

    @@ -139,7 +139,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_af972fce017b24906236ab235857a11a8.html b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_af972fce017b24906236ab235857a11a8.html index fb1075c7f..bbe2ae5c5 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator_af972fce017b24906236ab235857a11a8.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator_af972fce017b24906236ab235857a11a8.html @@ -128,7 +128,7 @@ template<typename Base >
    -

    Definition at line 6292 of file json.hpp.

    +

    Definition at line 6299 of file json.hpp.

    @@ -138,7 +138,7 @@ template<typename Base > diff --git a/classnlohmann_1_1basic__json_a01a2643289b69cd71d9b3f3fc209b748.html b/classnlohmann_1_1basic__json_a01a2643289b69cd71d9b3f3fc209b748.html index 5c79352d6..812a76875 100644 --- a/classnlohmann_1_1basic__json_a01a2643289b69cd71d9b3f3fc209b748.html +++ b/classnlohmann_1_1basic__json_a01a2643289b69cd71d9b3f3fc209b748.html @@ -283,7 +283,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    number of elements with key "two": 1
     number of elements with key "three": 0
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/count.cpp -o count 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3546 of file json.hpp.

    @@ -295,7 +295,7 @@ number of elements with key "three": 0 diff --git a/classnlohmann_1_1basic__json_a0703ae5cbd2daac5e6c0ae01d3a1b114.html b/classnlohmann_1_1basic__json_a0703ae5cbd2daac5e6c0ae01d3a1b114.html index 06bf4fb68..bdbb2f599 100644 --- a/classnlohmann_1_1basic__json_a0703ae5cbd2daac5e6c0ae01d3a1b114.html +++ b/classnlohmann_1_1basic__json_a0703ae5cbd2daac5e6c0ae01d3a1b114.html @@ -289,16 +289,16 @@ template<template< typename U, typename V, typename...Args > class Obje
    23  std::cout << null << '\n';
    24 }
    a class to store JSON values
    Definition: json.hpp:187
    -
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4096
    +
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4095
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    {"one":1,"two":2}
     null
     {"four":4,"one":1,"three":3,"two":2}
     {"A":"a","B":"b"}
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/push_back__object_t__value.cpp -o push_back__object_t__value 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4203 of file json.hpp.

    +

    Definition at line 4202 of file json.hpp.

    @@ -308,7 +308,7 @@ null diff --git a/classnlohmann_1_1basic__json_a07c9c38a1f01675759e05d5d34627343.html b/classnlohmann_1_1basic__json_a07c9c38a1f01675759e05d5d34627343.html index f099fb399..45cd6148d 100644 --- a/classnlohmann_1_1basic__json_a07c9c38a1f01675759e05d5d34627343.html +++ b/classnlohmann_1_1basic__json_a07c9c38a1f01675759e05d5d34627343.html @@ -271,7 +271,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    Returns
    iterator pointing to the inserted val.
    Exceptions
    - +
    std::domain_errorif called on JSON values other than arrays
    std::domain_errorif called on JSON values other than arrays; example: "cannot use insert() with string"
    std::domain_errorif pos is not an iterator of *this; example: "iterator does not fit current value"
    @@ -300,7 +300,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    10
     [1,2,10,3,4]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/insert.cpp -o insert 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 4256 of file json.hpp.

    @@ -312,7 +312,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a088460b5d95f384a4f2ec9e52f4f66ba.html b/classnlohmann_1_1basic__json_a088460b5d95f384a4f2ec9e52f4f66ba.html index 5c92c292d..14ad6f3f1 100644 --- a/classnlohmann_1_1basic__json_a088460b5d95f384a4f2ec9e52f4f66ba.html +++ b/classnlohmann_1_1basic__json_a088460b5d95f384a4f2ec9e52f4f66ba.html @@ -288,7 +288,7 @@ false false true The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/is_string.cpp -o is_string 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2103 of file json.hpp.

    @@ -300,7 +300,7 @@ true diff --git a/classnlohmann_1_1basic__json_a0afa4512f03406db0d0432657e9c7361.html b/classnlohmann_1_1basic__json_a0afa4512f03406db0d0432657e9c7361.html index b694daceb..d0202ef96 100644 --- a/classnlohmann_1_1basic__json_a0afa4512f03406db0d0432657e9c7361.html +++ b/classnlohmann_1_1basic__json_a0afa4512f03406db0d0432657e9c7361.html @@ -334,7 +334,7 @@ false basic_json(const number_float_t) – create a number (floating-point) value
    basic_json(const number_integer_t) – create a number (integer) value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 866 of file json.hpp.

    @@ -346,7 +346,7 @@ false diff --git a/classnlohmann_1_1basic__json_a114095c452ca2f4ba976548df3da68be.html b/classnlohmann_1_1basic__json_a114095c452ca2f4ba976548df3da68be.html index 5bcc03754..51d85ecf7 100644 --- a/classnlohmann_1_1basic__json_a114095c452ca2f4ba976548df3da68be.html +++ b/classnlohmann_1_1basic__json_a114095c452ca2f4ba976548df3da68be.html @@ -288,7 +288,7 @@ false false false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/is_null.cpp -o is_null 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1957 of file json.hpp.

    @@ -300,7 +300,7 @@ false diff --git a/classnlohmann_1_1basic__json_a11c3dd843c21c58daa651e84046a82af.html b/classnlohmann_1_1basic__json_a11c3dd843c21c58daa651e84046a82af.html index f209741f7..e7562f785 100644 --- a/classnlohmann_1_1basic__json_a11c3dd843c21c58daa651e84046a82af.html +++ b/classnlohmann_1_1basic__json_a11c3dd843c21c58daa651e84046a82af.html @@ -288,7 +288,7 @@ false true false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/is_array.cpp -o is_array 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2084 of file json.hpp.

    @@ -300,7 +300,7 @@ false diff --git a/classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.html b/classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.html index 49bba0e87..5b751a436 100644 --- a/classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.html +++ b/classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.html @@ -304,9 +304,9 @@ template<template< typename U, typename V, typename...Args > class Obje 17 == 17 true "foo" == "bar" false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator__equal.cpp -o operator__equal 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4600 of file json.hpp.

    +

    Definition at line 4607 of file json.hpp.

    @@ -316,7 +316,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a13e5642dbfa1602c937d295a085413cc.html b/classnlohmann_1_1basic__json_a13e5642dbfa1602c937d295a085413cc.html index def50bd67..4ac58161b 100644 --- a/classnlohmann_1_1basic__json_a13e5642dbfa1602c937d295a085413cc.html +++ b/classnlohmann_1_1basic__json_a13e5642dbfa1602c937d295a085413cc.html @@ -249,7 +249,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a1683189bd539313b5559f07961166c8b.html b/classnlohmann_1_1basic__json_a1683189bd539313b5559f07961166c8b.html index a974ae64a..dd6f0dd6a 100644 --- a/classnlohmann_1_1basic__json_a1683189bd539313b5559f07961166c8b.html +++ b/classnlohmann_1_1basic__json_a1683189bd539313b5559f07961166c8b.html @@ -249,7 +249,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a16a275d0201e9aedc87c933c764b8869.html b/classnlohmann_1_1basic__json_a16a275d0201e9aedc87c933c764b8869.html index 300681967..9031b7f70 100644 --- a/classnlohmann_1_1basic__json_a16a275d0201e9aedc87c933c764b8869.html +++ b/classnlohmann_1_1basic__json_a16a275d0201e9aedc87c933c764b8869.html @@ -302,7 +302,7 @@ out of range
    See also
    operator[](const typename object_t::key_type&) for unchecked access by reference
    value() for access by value with a default value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2757 of file json.hpp.

    @@ -314,7 +314,7 @@ out of range diff --git a/classnlohmann_1_1basic__json_a1dc0c521042807e216d11110d2f002ff.html b/classnlohmann_1_1basic__json_a1dc0c521042807e216d11110d2f002ff.html index 70cab2fa9..8be2d527a 100644 --- a/classnlohmann_1_1basic__json_a1dc0c521042807e216d11110d2f002ff.html +++ b/classnlohmann_1_1basic__json_a1dc0c521042807e216d11110d2f002ff.html @@ -294,7 +294,7 @@ template<class CompatibleStringType , typename std::enable_if<
    See also
    basic_json(const string_t&) – create a string value
    basic_json(const typename string_t::value_type*) – create a string value from a character pointer
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1113 of file json.hpp.

    @@ -306,7 +306,7 @@ template<class CompatibleStringType , typename std::enable_if< diff --git a/classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html b/classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html index 7960abe21..23321a56f 100644 --- a/classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html +++ b/classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html @@ -247,7 +247,7 @@ template<template< typename U, typename V, typename...Args > class Obje

    This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions is_null(), is_object(), is_array(), is_string(), is_boolean(), is_number(), and is_discarded() rely on it.

    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    See also
    at(const typename object_t::key_type&) for access by reference with range checking
    operator[](const typename object_t::key_type&) for unchecked access by reference
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3092 of file json.hpp.

    @@ -342,7 +342,7 @@ value() with null" diff --git a/classnlohmann_1_1basic__json_a2adfc8d24bea3908398cbf325b5dc1d7.html b/classnlohmann_1_1basic__json_a2adfc8d24bea3908398cbf325b5dc1d7.html index 66c537498..9dcdc399b 100644 --- a/classnlohmann_1_1basic__json_a2adfc8d24bea3908398cbf325b5dc1d7.html +++ b/classnlohmann_1_1basic__json_a2adfc8d24bea3908398cbf325b5dc1d7.html @@ -281,7 +281,7 @@ Illustration from cppreference.com
    a template for a reverse iterator class
    Definition: json.hpp:232
    Output (play with this example online):
    5
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/crbegin.cpp -o crbegin 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3705 of file json.hpp.

    @@ -293,7 +293,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a2f07bcf7e75c34396476dd1790f26ce8.html b/classnlohmann_1_1basic__json_a2f07bcf7e75c34396476dd1790f26ce8.html index 805736090..23e17910a 100644 --- a/classnlohmann_1_1basic__json_a2f07bcf7e75c34396476dd1790f26ce8.html +++ b/classnlohmann_1_1basic__json_a2f07bcf7e75c34396476dd1790f26ce8.html @@ -289,16 +289,16 @@ template<template< typename U, typename V, typename...Args > class Obje
    23  std::cout << null << '\n';
    24 }
    a class to store JSON values
    Definition: json.hpp:187
    -
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4096
    +
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4095
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    {"one":1,"two":2}
     null
     {"four":4,"one":1,"three":3,"two":2}
     {"A":"a","B":"b"}
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/push_back__object_t__value.cpp -o push_back__object_t__value 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4180 of file json.hpp.

    +

    Definition at line 4179 of file json.hpp.

    @@ -308,7 +308,7 @@ null diff --git a/classnlohmann_1_1basic__json_a3173944e7b1809a333def4078a0b92a3.html b/classnlohmann_1_1basic__json_a3173944e7b1809a333def4078a0b92a3.html index 089b7f3cf..283f4683b 100644 --- a/classnlohmann_1_1basic__json_a3173944e7b1809a333def4078a0b92a3.html +++ b/classnlohmann_1_1basic__json_a3173944e7b1809a333def4078a0b92a3.html @@ -289,16 +289,16 @@ template<template< typename U, typename V, typename...Args > class Obje
    23  std::cout << null << '\n';
    24 }
    a class to store JSON values
    Definition: json.hpp:187
    -
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4096
    +
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4095
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    [1,2,3,4,5]
     null
     [1,2,3,4,5,6,7]
     ["first","second"]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/push_back.cpp -o push_back 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4121 of file json.hpp.

    +

    Definition at line 4120 of file json.hpp.

    @@ -308,7 +308,7 @@ null diff --git a/classnlohmann_1_1basic__json_a317b01b0fba3ac458561f1634759ea3b.html b/classnlohmann_1_1basic__json_a317b01b0fba3ac458561f1634759ea3b.html index e102f8916..31b18028b 100644 --- a/classnlohmann_1_1basic__json_a317b01b0fba3ac458561f1634759ea3b.html +++ b/classnlohmann_1_1basic__json_a317b01b0fba3ac458561f1634759ea3b.html @@ -263,7 +263,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a3287df6546c905fb0a5786deb4b1cf32.html b/classnlohmann_1_1basic__json_a3287df6546c905fb0a5786deb4b1cf32.html index ba5a4c36f..0c62ea9a6 100644 --- a/classnlohmann_1_1basic__json_a3287df6546c905fb0a5786deb4b1cf32.html +++ b/classnlohmann_1_1basic__json_a3287df6546c905fb0a5786deb4b1cf32.html @@ -317,7 +317,7 @@ false true false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/empty.cpp -o empty 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3855 of file json.hpp.

    @@ -329,7 +329,7 @@ false diff --git a/classnlohmann_1_1basic__json_a33f1632cfdbf460b4913f4e8a43dd9e4.html b/classnlohmann_1_1basic__json_a33f1632cfdbf460b4913f4e8a43dd9e4.html index 47c8ad5b9..be132d4a5 100644 --- a/classnlohmann_1_1basic__json_a33f1632cfdbf460b4913f4e8a43dd9e4.html +++ b/classnlohmann_1_1basic__json_a33f1632cfdbf460b4913f4e8a43dd9e4.html @@ -280,7 +280,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    null
     23
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__moveconstructor.cpp -o basic_json__moveconstructor 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1741 of file json.hpp.

    @@ -292,7 +292,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html b/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html index b2795b430..f0f55eece 100644 --- a/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html +++ b/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html @@ -308,9 +308,9 @@ template<template< typename U, typename V, typename...Args > class Obje ] The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator_serialize.cpp -o operator_serialize 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4909 of file json.hpp.

    +

    Definition at line 4916 of file json.hpp.

    @@ -320,7 +320,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a3d4e4bab95b24ccab42ed37e0ede2d98.html b/classnlohmann_1_1basic__json_a3d4e4bab95b24ccab42ed37e0ede2d98.html index 704006b7c..c045cfe74 100644 --- a/classnlohmann_1_1basic__json_a3d4e4bab95b24ccab42ed37e0ede2d98.html +++ b/classnlohmann_1_1basic__json_a3d4e4bab95b24ccab42ed37e0ede2d98.html @@ -285,7 +285,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    {"one":1,"two":2}
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__object_t.cpp -o basic_json__object_t 
    See also
    basic_json(const CompatibleObjectType&) – create an object value from a compatible STL container
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 933 of file json.hpp.

    @@ -297,7 +297,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a42f9133f978dde4cce5851b2c2434a0c.html b/classnlohmann_1_1basic__json_a42f9133f978dde4cce5851b2c2434a0c.html index 28703a832..4a3d04b93 100644 --- a/classnlohmann_1_1basic__json_a42f9133f978dde4cce5851b2c2434a0c.html +++ b/classnlohmann_1_1basic__json_a42f9133f978dde4cce5851b2c2434a0c.html @@ -295,7 +295,7 @@ true true true The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/type.cpp -o type 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1897 of file json.hpp.

    @@ -307,7 +307,7 @@ true diff --git a/classnlohmann_1_1basic__json_a4361aa791f3980abb239e4155a3450cb.html b/classnlohmann_1_1basic__json_a4361aa791f3980abb239e4155a3450cb.html index 4323f722b..173c09f58 100644 --- a/classnlohmann_1_1basic__json_a4361aa791f3980abb239e4155a3450cb.html +++ b/classnlohmann_1_1basic__json_a4361aa791f3980abb239e4155a3450cb.html @@ -279,10 +279,10 @@ Illustration from cppreference.com
    a class to store JSON values
    Definition: json.hpp:187
    const_iterator cbegin() const
    returns a const iterator to the first element
    Definition: json.hpp:3614
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    a const random access iterator for the basic_json class
    Definition: json.hpp:5570
    +
    a const random access iterator for the basic_json class
    Definition: json.hpp:5577
    Output (play with this example online):
    1
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/cbegin.cpp -o cbegin 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3590 of file json.hpp.

    @@ -294,7 +294,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a457fec897d7b6283c60ca236ebb1f5e8.html b/classnlohmann_1_1basic__json_a457fec897d7b6283c60ca236ebb1f5e8.html index fd586791b..307507fa3 100644 --- a/classnlohmann_1_1basic__json_a457fec897d7b6283c60ca236ebb1f5e8.html +++ b/classnlohmann_1_1basic__json_a457fec897d7b6283c60ca236ebb1f5e8.html @@ -285,7 +285,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    ["one","two",3,4.5,false]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__array_t.cpp -o basic_json__array_t 
    See also
    basic_json(const CompatibleArrayType&) – create an array value from a compatible STL containers
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 992 of file json.hpp.

    @@ -297,7 +297,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a48c8d153bc2fd1af655063a4b984feac.html b/classnlohmann_1_1basic__json_a48c8d153bc2fd1af655063a4b984feac.html index aca0589fb..918509daf 100644 --- a/classnlohmann_1_1basic__json_a48c8d153bc2fd1af655063a4b984feac.html +++ b/classnlohmann_1_1basic__json_a48c8d153bc2fd1af655063a4b984feac.html @@ -287,7 +287,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    See also
    basic_json(const typename string_t::value_type*) – create a string value from a character pointer
    basic_json(const CompatibleStringType&) – create a string value from a compatible string container
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1058 of file json.hpp.

    @@ -299,7 +299,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a4943b7f16ddc4e0df33c0cae7ef14471.html b/classnlohmann_1_1basic__json_a4943b7f16ddc4e0df33c0cae7ef14471.html index 0939c01e5..40d4da2ef 100644 --- a/classnlohmann_1_1basic__json_a4943b7f16ddc4e0df33c0cae7ef14471.html +++ b/classnlohmann_1_1basic__json_a4943b7f16ddc4e0df33c0cae7ef14471.html @@ -284,7 +284,7 @@ Illustration from cppreference.com
    a template for a reverse iterator class
    Definition: json.hpp:232
    Output (play with this example online):
    1
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/crend.cpp -o crend 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3782 of file json.hpp.

    @@ -296,7 +296,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a4ad3f27ecece8f644e8dca69a97eb67f.html b/classnlohmann_1_1basic__json_a4ad3f27ecece8f644e8dca69a97eb67f.html index 6776aff4f..4d239e7f9 100644 --- a/classnlohmann_1_1basic__json_a4ad3f27ecece8f644e8dca69a97eb67f.html +++ b/classnlohmann_1_1basic__json_a4ad3f27ecece8f644e8dca69a97eb67f.html @@ -284,7 +284,7 @@ Illustration from cppreference.com
    a template for a reverse iterator class
    Definition: json.hpp:232
    Output (play with this example online):
    1
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/crend.cpp -o crend 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3736 of file json.hpp.

    @@ -296,7 +296,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a4bf695ddf4a00ea8feea2c725ec847f1.html b/classnlohmann_1_1basic__json_a4bf695ddf4a00ea8feea2c725ec847f1.html index e90c08dca..b972e3bef 100644 --- a/classnlohmann_1_1basic__json_a4bf695ddf4a00ea8feea2c725ec847f1.html +++ b/classnlohmann_1_1basic__json_a4bf695ddf4a00ea8feea2c725ec847f1.html @@ -259,7 +259,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    Exceptions
    Enumerator
    null 

    null value

    @@ -285,7 +285,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a234f03dce002783748ca401a42bc6472.html b/classnlohmann_1_1basic__json_a234f03dce002783748ca401a42bc6472.html index f95b5468f..ccec411ce 100644 --- a/classnlohmann_1_1basic__json_a234f03dce002783748ca401a42bc6472.html +++ b/classnlohmann_1_1basic__json_a234f03dce002783748ca401a42bc6472.html @@ -290,7 +290,7 @@ template<typename PointerType , typename std::enable_if< Output (play with this example online):
    17 17 17 17
     true
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/get_ptr.cpp -o get_ptr 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2542 of file json.hpp.

    @@ -302,7 +302,7 @@ true diff --git a/classnlohmann_1_1basic__json_a266c4dd24d11a86e4831523af5d9df4d.html b/classnlohmann_1_1basic__json_a266c4dd24d11a86e4831523af5d9df4d.html index 55227de4e..1e811581e 100644 --- a/classnlohmann_1_1basic__json_a266c4dd24d11a86e4831523af5d9df4d.html +++ b/classnlohmann_1_1basic__json_a266c4dd24d11a86e4831523af5d9df4d.html @@ -325,7 +325,7 @@ This function is required for compatibility reasons with Clang.
    See also
    at(const typename object_t::key_type&) for access by reference with range checking
    value() for access by value with a default value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2977 of file json.hpp.

    @@ -337,7 +337,7 @@ This function is required for compatibility reasons with Clang. diff --git a/classnlohmann_1_1basic__json_a26b7e4876af25eae5800ce43f93aaef2.html b/classnlohmann_1_1basic__json_a26b7e4876af25eae5800ce43f93aaef2.html index d2e6735d5..b6b61e6e3 100644 --- a/classnlohmann_1_1basic__json_a26b7e4876af25eae5800ce43f93aaef2.html +++ b/classnlohmann_1_1basic__json_a26b7e4876af25eae5800ce43f93aaef2.html @@ -330,7 +330,7 @@ value() with null"
    - +
    std::domain_errorwhen JSON value is not an object
    std::domain_errorwhen JSON value is not an object; example: "cannot use swap() with string"
    @@ -286,13 +286,13 @@ template<template< typename U, typename V, typename...Args > class Obje
    a class to store JSON values
    Definition: json.hpp:187
    ObjectType< StringType, basic_json, std::less< StringType >, AllocatorType< std::pair< const StringType, basic_json >>> object_t
    a type for an object
    Definition: json.hpp:340
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    void swap(reference other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    exchanges the values
    Definition: json.hpp:4427
    +
    void swap(reference other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    exchanges the values
    Definition: json.hpp:4431
    Output (play with this example online):
    value = {"translation":{"cow":"Kuh","dog":"Hund"}}
     object = {"one":"eins","two":"zwei"}
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/swap__object_t.cpp -o swap__object_t 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4489 of file json.hpp.

    +

    Definition at line 4495 of file json.hpp.

    @@ -302,7 +302,7 @@ object = {"one":"eins","two":"zwei"} diff --git a/classnlohmann_1_1basic__json_a4d688b5ff534d3ab4e284b3191061529.html b/classnlohmann_1_1basic__json_a4d688b5ff534d3ab4e284b3191061529.html index 0058db12c..78d1ea5e0 100644 --- a/classnlohmann_1_1basic__json_a4d688b5ff534d3ab4e284b3191061529.html +++ b/classnlohmann_1_1basic__json_a4d688b5ff534d3ab4e284b3191061529.html @@ -281,7 +281,7 @@ Illustration from cppreference.com
    a template for a reverse iterator class
    Definition: json.hpp:232
    Output (play with this example online):
    5
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/crbegin.cpp -o crbegin 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3759 of file json.hpp.

    @@ -293,7 +293,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a5114ed5eb394a2805da0bd1acba95ae2.html b/classnlohmann_1_1basic__json_a5114ed5eb394a2805da0bd1acba95ae2.html index 06c6d3f00..598465cdf 100644 --- a/classnlohmann_1_1basic__json_a5114ed5eb394a2805da0bd1acba95ae2.html +++ b/classnlohmann_1_1basic__json_a5114ed5eb394a2805da0bd1acba95ae2.html @@ -289,16 +289,16 @@ template<template< typename U, typename V, typename...Args > class Obje
    23  std::cout << null << '\n';
    24 }
    a class to store JSON values
    Definition: json.hpp:187
    -
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4096
    +
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4095
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    [1,2,3,4,5]
     null
     [1,2,3,4,5,6,7]
     ["first","second"]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/push_back.cpp -o push_back 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4131 of file json.hpp.

    +

    Definition at line 4130 of file json.hpp.

    @@ -308,7 +308,7 @@ null diff --git a/classnlohmann_1_1basic__json_a53a2abfdd4f72c7df5aba1155bf03e48.html b/classnlohmann_1_1basic__json_a53a2abfdd4f72c7df5aba1155bf03e48.html index 8da8dab27..02f539105 100644 --- a/classnlohmann_1_1basic__json_a53a2abfdd4f72c7df5aba1155bf03e48.html +++ b/classnlohmann_1_1basic__json_a53a2abfdd4f72c7df5aba1155bf03e48.html @@ -289,7 +289,7 @@ false false false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/is_discarded.cpp -o is_discarded 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2127 of file json.hpp.

    @@ -301,7 +301,7 @@ false diff --git a/classnlohmann_1_1basic__json_a57703688bee6b9736ab3a430d8d246f2.html b/classnlohmann_1_1basic__json_a57703688bee6b9736ab3a430d8d246f2.html index 77d6fda70..c1059eda7 100644 --- a/classnlohmann_1_1basic__json_a57703688bee6b9736ab3a430d8d246f2.html +++ b/classnlohmann_1_1basic__json_a57703688bee6b9736ab3a430d8d246f2.html @@ -297,7 +297,7 @@ use operator[] with null" [1,2,3,4,6] [1,2,3,4,6,null,null,null,null,null,11] The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operatorarray__size_type.cpp -o operatorarray__size_type 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2803 of file json.hpp.

    @@ -309,7 +309,7 @@ use operator[] with null" diff --git a/classnlohmann_1_1basic__json_a57a96ab3ff1ce7b48a754129fb12c982.html b/classnlohmann_1_1basic__json_a57a96ab3ff1ce7b48a754129fb12c982.html index fffe7c2e3..967a2a127 100644 --- a/classnlohmann_1_1basic__json_a57a96ab3ff1ce7b48a754129fb12c982.html +++ b/classnlohmann_1_1basic__json_a57a96ab3ff1ce7b48a754129fb12c982.html @@ -259,7 +259,8 @@ template<template< typename U, typename V, typename...Args > class Obje
    Exceptions
    - +
    std::domain_errorwhen JSON value is not a string
    std::domain_errorwhen JSON value is not a string; example: "cannot +use swap() with boolean"
    @@ -286,13 +287,13 @@ template<template< typename U, typename V, typename...Args > class Obje
    StringType string_t
    a type for a string
    Definition: json.hpp:433
    a class to store JSON values
    Definition: json.hpp:187
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    void swap(reference other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    exchanges the values
    Definition: json.hpp:4427
    +
    void swap(reference other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    exchanges the values
    Definition: json.hpp:4431
    Output (play with this example online):
    value = ["the good","the fast","the ugly"]
     string = the bad
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/swap__string_t.cpp -o swap__string_t 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4521 of file json.hpp.

    +

    Definition at line 4528 of file json.hpp.

    @@ -302,7 +303,7 @@ string = the bad diff --git a/classnlohmann_1_1basic__json_a5a2d4dbcdbc8ea065b87daf52cd786b9.html b/classnlohmann_1_1basic__json_a5a2d4dbcdbc8ea065b87daf52cd786b9.html index 53c567335..edbf41f51 100644 --- a/classnlohmann_1_1basic__json_a5a2d4dbcdbc8ea065b87daf52cd786b9.html +++ b/classnlohmann_1_1basic__json_a5a2d4dbcdbc8ea065b87daf52cd786b9.html @@ -273,7 +273,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    null
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json.cpp -o basic_json 
    See also
    basic_json(std::nullptr_t) – create a null value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    @@ -283,7 +283,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a5c8bb5200f5eac10d31e26be46e5b1ac.html b/classnlohmann_1_1basic__json_a5c8bb5200f5eac10d31e26be46e5b1ac.html index 6b4397579..bc289898b 100644 --- a/classnlohmann_1_1basic__json_a5c8bb5200f5eac10d31e26be46e5b1ac.html +++ b/classnlohmann_1_1basic__json_a5c8bb5200f5eac10d31e26be46e5b1ac.html @@ -300,9 +300,9 @@ template<template< typename U, typename V, typename...Args > class Obje 17 == 17.0000000000001 false "foo" == "bar" true The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator__greater.cpp -o operator__greater 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4810 of file json.hpp.

    +

    Definition at line 4817 of file json.hpp.

    @@ -312,7 +312,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a5d428360d75a52f6af74751d1cc912c6.html b/classnlohmann_1_1basic__json_a5d428360d75a52f6af74751d1cc912c6.html index c520c5e8f..b59d4727e 100644 --- a/classnlohmann_1_1basic__json_a5d428360d75a52f6af74751d1cc912c6.html +++ b/classnlohmann_1_1basic__json_a5d428360d75a52f6af74751d1cc912c6.html @@ -304,7 +304,7 @@ true true true The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator__value_t.cpp -o operator__value_t 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2147 of file json.hpp.

    @@ -316,7 +316,7 @@ true diff --git a/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html b/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html index 64c567446..b748ec3db 100644 --- a/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html +++ b/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html @@ -308,9 +308,9 @@ template<template< typename U, typename V, typename...Args > class Obje ] The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator_serialize.cpp -o operator_serialize 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4891 of file json.hpp.

    +

    Definition at line 4898 of file json.hpp.

    @@ -320,7 +320,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a5f0aad50ed7e8aec3128fe018c18b3fe.html b/classnlohmann_1_1basic__json_a5f0aad50ed7e8aec3128fe018c18b3fe.html index 08ca1af70..7871690c5 100644 --- a/classnlohmann_1_1basic__json_a5f0aad50ed7e8aec3128fe018c18b3fe.html +++ b/classnlohmann_1_1basic__json_a5f0aad50ed7e8aec3128fe018c18b3fe.html @@ -333,7 +333,7 @@ array: [1,2,3,4,5]
    See also
    operator ValueType() const for implicit conversion
    get() for pointer-member access
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2443 of file json.hpp.

    @@ -345,7 +345,7 @@ array: [1,2,3,4,5] diff --git a/classnlohmann_1_1basic__json_a5fd8b54389698edf0c08e2dd001f610b.html b/classnlohmann_1_1basic__json_a5fd8b54389698edf0c08e2dd001f610b.html index 3e401b11f..175f39a5d 100644 --- a/classnlohmann_1_1basic__json_a5fd8b54389698edf0c08e2dd001f610b.html +++ b/classnlohmann_1_1basic__json_a5fd8b54389698edf0c08e2dd001f610b.html @@ -249,7 +249,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html b/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html index 5e610df1f..bf58dc658 100644 --- a/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html +++ b/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html @@ -316,9 +316,9 @@ template<template< typename U, typename V, typename...Args > class Obje } The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator_deserialize.cpp -o operator_deserialize 
    See also
    parse(std::istream&, parser_callback_t) for a variant with a parser callback function to filter values while parsing
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 5013 of file json.hpp.

    +

    Definition at line 5020 of file json.hpp.

    @@ -328,7 +328,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a63691315292df8e1522b00d37ebb1ffc.html b/classnlohmann_1_1basic__json_a63691315292df8e1522b00d37ebb1ffc.html index 680cccaaf..fcea16eb1 100644 --- a/classnlohmann_1_1basic__json_a63691315292df8e1522b00d37ebb1ffc.html +++ b/classnlohmann_1_1basic__json_a63691315292df8e1522b00d37ebb1ffc.html @@ -274,7 +274,7 @@ template<template< typename U, typename V, typename...Args > class Obje

    Storage

    Objects are stored as pointers in a basic_json type. That is, for any access to object values, a pointer of type object_t* must be dereferenced.

    See also
    array_t – type for an array value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 340 of file json.hpp.

    @@ -286,7 +286,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a652414dd930cb3af3b6f454cc535a23e.html b/classnlohmann_1_1basic__json_a652414dd930cb3af3b6f454cc535a23e.html index 5e0dd88e8..fb2043c6b 100644 --- a/classnlohmann_1_1basic__json_a652414dd930cb3af3b6f454cc535a23e.html +++ b/classnlohmann_1_1basic__json_a652414dd930cb3af3b6f454cc535a23e.html @@ -309,7 +309,7 @@ out of range: key 'the fast' not found
    See also
    operator[](const typename object_t::key_type&) for unchecked access by reference
    value() for access by value with a default value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2710 of file json.hpp.

    @@ -321,7 +321,7 @@ out of range: key 'the fast' not found diff --git a/classnlohmann_1_1basic__json_a656939a3dc9a6047e4afacd9e11b83a6.html b/classnlohmann_1_1basic__json_a656939a3dc9a6047e4afacd9e11b83a6.html index fec11a2aa..5d6166573 100644 --- a/classnlohmann_1_1basic__json_a656939a3dc9a6047e4afacd9e11b83a6.html +++ b/classnlohmann_1_1basic__json_a656939a3dc9a6047e4afacd9e11b83a6.html @@ -290,7 +290,7 @@ template<typename PointerType , typename std::enable_if< Output (play with this example online):
    17 17 17 17
     true
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/get_ptr.cpp -o get_ptr 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2527 of file json.hpp.

    @@ -302,7 +302,7 @@ true diff --git a/classnlohmann_1_1basic__json_a66f936cfbd252f85bd3dc2598e37a64b.html b/classnlohmann_1_1basic__json_a66f936cfbd252f85bd3dc2598e37a64b.html index 2f51b5343..0868c41f3 100644 --- a/classnlohmann_1_1basic__json_a66f936cfbd252f85bd3dc2598e37a64b.html +++ b/classnlohmann_1_1basic__json_a66f936cfbd252f85bd3dc2598e37a64b.html @@ -289,16 +289,16 @@ template<template< typename U, typename V, typename...Args > class Obje
    23  std::cout << null << '\n';
    24 }
    a class to store JSON values
    Definition: json.hpp:187
    -
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4096
    +
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4095
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    [1,2,3,4,5]
     null
     [1,2,3,4,5,6,7]
     ["first","second"]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/push_back.cpp -o push_back 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4096 of file json.hpp.

    +

    Definition at line 4095 of file json.hpp.

    @@ -308,7 +308,7 @@ null diff --git a/classnlohmann_1_1basic__json_a6944904b3b59769b1cf62ac2532cbe33.html b/classnlohmann_1_1basic__json_a6944904b3b59769b1cf62ac2532cbe33.html index 1aae661ed..78760337b 100644 --- a/classnlohmann_1_1basic__json_a6944904b3b59769b1cf62ac2532cbe33.html +++ b/classnlohmann_1_1basic__json_a6944904b3b59769b1cf62ac2532cbe33.html @@ -263,7 +263,7 @@ template<template< typename U, typename V, typename...Args > class Obje

    Storage

    Integer number values are stored directly inside a basic_json type.

    See also
    number_float_t – type for number values (floating-point)
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 527 of file json.hpp.

    @@ -275,7 +275,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a696ced74d8edc0b63a000a72907ab109.html b/classnlohmann_1_1basic__json_a696ced74d8edc0b63a000a72907ab109.html index 1abd8b476..6115658e7 100644 --- a/classnlohmann_1_1basic__json_a696ced74d8edc0b63a000a72907ab109.html +++ b/classnlohmann_1_1basic__json_a696ced74d8edc0b63a000a72907ab109.html @@ -291,7 +291,7 @@ false
    See also
    is_number_integer() – check if value is an integer number
    is_number_float() – check if value is a floating-point number
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2000 of file json.hpp.

    @@ -303,7 +303,7 @@ false diff --git a/classnlohmann_1_1basic__json_a6a7f45095675ac6fd1d018a0e41874be.html b/classnlohmann_1_1basic__json_a6a7f45095675ac6fd1d018a0e41874be.html index faea018b9..b8f3131dc 100644 --- a/classnlohmann_1_1basic__json_a6a7f45095675ac6fd1d018a0e41874be.html +++ b/classnlohmann_1_1basic__json_a6a7f45095675ac6fd1d018a0e41874be.html @@ -321,7 +321,7 @@ construct with iterators from null" 42 {"one":"eins"} The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__InputIt_InputIt.cpp -o basic_json__InputIt_InputIt 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1577 of file json.hpp.

    @@ -333,7 +333,7 @@ construct with iterators from null" diff --git a/classnlohmann_1_1basic__json_a6b7428e8c1169497f47b81667001cbfb.html b/classnlohmann_1_1basic__json_a6b7428e8c1169497f47b81667001cbfb.html index 479adab22..6734a38f8 100644 --- a/classnlohmann_1_1basic__json_a6b7428e8c1169497f47b81667001cbfb.html +++ b/classnlohmann_1_1basic__json_a6b7428e8c1169497f47b81667001cbfb.html @@ -278,7 +278,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    Returns
    iterator pointing to the first element inserted, or pos if cnt==0
    Exceptions
    - +
    std::domain_errorif called on JSON values other than arrays
    std::domain_errorif called on JSON values other than arrays; example: "cannot use insert() with string"
    std::domain_errorif pos is not an iterator of *this; example: "iterator does not fit current value"
    @@ -307,9 +307,9 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    7
     [1,2,7,7,7,7,7,7,7,3,4]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/insert__count.cpp -o insert__count 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4284 of file json.hpp.

    +

    Definition at line 4285 of file json.hpp.

    @@ -319,7 +319,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a6bbd3e72a870f1ba81ff6886b063b0fe.html b/classnlohmann_1_1basic__json_a6bbd3e72a870f1ba81ff6886b063b0fe.html index 4eeb9c32c..31e07903e 100644 --- a/classnlohmann_1_1basic__json_a6bbd3e72a870f1ba81ff6886b063b0fe.html +++ b/classnlohmann_1_1basic__json_a6bbd3e72a870f1ba81ff6886b063b0fe.html @@ -249,7 +249,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a6dff6a02a2be250b8f8dc2f47be65544.html b/classnlohmann_1_1basic__json_a6dff6a02a2be250b8f8dc2f47be65544.html index 33b48c7fb..506608f83 100644 --- a/classnlohmann_1_1basic__json_a6dff6a02a2be250b8f8dc2f47be65544.html +++ b/classnlohmann_1_1basic__json_a6dff6a02a2be250b8f8dc2f47be65544.html @@ -291,7 +291,7 @@ range" erase(InteratorType, InteratorType) – removes the elements in the given range
    erase(const typename object_t::key_type&) – remvoes the element from an object at the given key
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3465 of file json.hpp.

    @@ -303,7 +303,7 @@ range" diff --git a/classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.html b/classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.html index 6a838cbd5..30779eb3b 100644 --- a/classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.html +++ b/classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.html @@ -300,9 +300,9 @@ template<template< typename U, typename V, typename...Args > class Obje 17 == 17 false "foo" == "bar" true The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator__notequal.cpp -o operator__notequal 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4688 of file json.hpp.

    +

    Definition at line 4695 of file json.hpp.

    @@ -312,7 +312,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a71eba33d906745e66f340952b79fbce3.html b/classnlohmann_1_1basic__json_a71eba33d906745e66f340952b79fbce3.html index ccf293870..eb95dc679 100644 --- a/classnlohmann_1_1basic__json_a71eba33d906745e66f340952b79fbce3.html +++ b/classnlohmann_1_1basic__json_a71eba33d906745e66f340952b79fbce3.html @@ -249,7 +249,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a72442ccbb378b4464a24a2da1e784041.html b/classnlohmann_1_1basic__json_a72442ccbb378b4464a24a2da1e784041.html index 5ca5a2bb7..9dd4ba91a 100644 --- a/classnlohmann_1_1basic__json_a72442ccbb378b4464a24a2da1e784041.html +++ b/classnlohmann_1_1basic__json_a72442ccbb378b4464a24a2da1e784041.html @@ -328,7 +328,7 @@ value() with null"
    See also
    at(const typename object_t::key_type&) for access by reference with range checking
    operator[](const typename object_t::key_type&) for unchecked access by reference
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3118 of file json.hpp.

    @@ -340,7 +340,7 @@ value() with null" diff --git a/classnlohmann_1_1basic__json_a72ba20783ecb3eec98bd6a3b870d565c.html b/classnlohmann_1_1basic__json_a72ba20783ecb3eec98bd6a3b870d565c.html index 354e0250f..7a91ff266 100644 --- a/classnlohmann_1_1basic__json_a72ba20783ecb3eec98bd6a3b870d565c.html +++ b/classnlohmann_1_1basic__json_a72ba20783ecb3eec98bd6a3b870d565c.html @@ -282,10 +282,10 @@ Illustration from cppreference.com
    a class to store JSON values
    Definition: json.hpp:187
    const_iterator cend() const
    returns a const iterator to one past the last element
    Definition: json.hpp:3673
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    a const random access iterator for the basic_json class
    Definition: json.hpp:5570
    +
    a const random access iterator for the basic_json class
    Definition: json.hpp:5577
    Output (play with this example online):
    5
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/cend.cpp -o cend 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3673 of file json.hpp.

    @@ -297,7 +297,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a74472977b798c7b7989e6e7cb960ecff.html b/classnlohmann_1_1basic__json_a74472977b798c7b7989e6e7cb960ecff.html index a7dc8586f..62c74f5d2 100644 --- a/classnlohmann_1_1basic__json_a74472977b798c7b7989e6e7cb960ecff.html +++ b/classnlohmann_1_1basic__json_a74472977b798c7b7989e6e7cb960ecff.html @@ -291,7 +291,7 @@ null null The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__number_float_t.cpp -o basic_json__number_float_t 
    See also
    basic_json(const CompatibleNumberFloatType) – create a number value (floating-point) from a compatible number type
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1258 of file json.hpp.

    @@ -303,7 +303,7 @@ null diff --git a/classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.html b/classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.html index 3cd7c2c20..fe3885cf2 100644 --- a/classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.html +++ b/classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.html @@ -300,9 +300,9 @@ template<template< typename U, typename V, typename...Args > class Obje 17 >= 17.0000000000001 false "foo" >= "bar" true The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator__greaterequal.cpp -o operator__greaterequal 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4854 of file json.hpp.

    +

    Definition at line 4861 of file json.hpp.

    @@ -312,7 +312,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a74ccfa471a0c061876b247f820f3c741.html b/classnlohmann_1_1basic__json_a74ccfa471a0c061876b247f820f3c741.html index 701683964..f8b559c55 100644 --- a/classnlohmann_1_1basic__json_a74ccfa471a0c061876b247f820f3c741.html +++ b/classnlohmann_1_1basic__json_a74ccfa471a0c061876b247f820f3c741.html @@ -325,13 +325,13 @@ template<template< typename U, typename V, typename...Args > class Obje
    53  json j_filtered = json::parse(ss, cb);
    54  std::cout << std::setw(4) << j_filtered << '\n';
    55 }
    -
    basic_json<> json
    default JSON class
    Definition: json.hpp:7799
    +
    basic_json<> json
    default JSON class
    Definition: json.hpp:7811
    a class to store JSON values
    Definition: json.hpp:187
    std::function< bool(int depth, parse_event_t event, basic_json &parsed)> parser_callback_t
    per-element parser callback type
    Definition: json.hpp:819
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    void clear() noexcept
    clears the contents
    Definition: json.hpp:4029
    +
    void clear() noexcept
    clears the contents
    Definition: json.hpp:4028
    the parser read a key of a value in an object
    -
    static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
    deserialize from string
    Definition: json.hpp:4948
    +
    static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
    deserialize from string
    Definition: json.hpp:4955
    parse_event_t
    JSON callback events.
    Definition: json.hpp:754
    Output (play with this example online):
    {
         "Image": {
    @@ -369,9 +369,9 @@ template<template< typename U, typename V, typename...Args > class Obje
     }
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/parse__istream__parser_callback_t.cpp -o parse__istream__parser_callback_t 
    See also
    parse(const string_t&, parser_callback_t) for a version that reads from a string
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4977 of file json.hpp.

    +

    Definition at line 4984 of file json.hpp.

    @@ -381,7 +381,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a75a1754e0d39f33095d3102a8bdb9881.html b/classnlohmann_1_1basic__json_a75a1754e0d39f33095d3102a8bdb9881.html index 66f487662..735c05b31 100644 --- a/classnlohmann_1_1basic__json_a75a1754e0d39f33095d3102a8bdb9881.html +++ b/classnlohmann_1_1basic__json_a75a1754e0d39f33095d3102a8bdb9881.html @@ -331,7 +331,7 @@ null erase(const typename object_t::key_type&) – remvoes the element from an object at the given key
    erase(const size_type) – removes the element from an array at the given index
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3244 of file json.hpp.

    @@ -343,7 +343,7 @@ null diff --git a/classnlohmann_1_1basic__json_a76cfc5062bf6223396ab82c753cd4634.html b/classnlohmann_1_1basic__json_a76cfc5062bf6223396ab82c753cd4634.html index 817947fd3..a956dea37 100644 --- a/classnlohmann_1_1basic__json_a76cfc5062bf6223396ab82c753cd4634.html +++ b/classnlohmann_1_1basic__json_a76cfc5062bf6223396ab82c753cd4634.html @@ -291,7 +291,7 @@ template<typename PointerType , typename std::enable_if< true The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/get__PointerType.cpp -o get__PointerType 
    See also
    get_ptr() for explicit pointer-member access
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2492 of file json.hpp.

    @@ -303,7 +303,7 @@ true diff --git a/classnlohmann_1_1basic__json_a7c08f966200af98db0313a3b517ce0a9.html b/classnlohmann_1_1basic__json_a7c08f966200af98db0313a3b517ce0a9.html index 7858c7964..370fc8e5e 100644 --- a/classnlohmann_1_1basic__json_a7c08f966200af98db0313a3b517ce0a9.html +++ b/classnlohmann_1_1basic__json_a7c08f966200af98db0313a3b517ce0a9.html @@ -284,7 +284,7 @@ Illustration from cppreference.com
    a template for a reverse iterator class
    Definition: json.hpp:232
    Output (play with this example online):
    1
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/rend.cpp -o rend 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3728 of file json.hpp.

    @@ -296,7 +296,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a7c19a5c3be6cc755377ee41eade78baf.html b/classnlohmann_1_1basic__json_a7c19a5c3be6cc755377ee41eade78baf.html index 136335a06..6be94308e 100644 --- a/classnlohmann_1_1basic__json_a7c19a5c3be6cc755377ee41eade78baf.html +++ b/classnlohmann_1_1basic__json_a7c19a5c3be6cc755377ee41eade78baf.html @@ -286,7 +286,7 @@ template<template< typename U, typename V, typename...Args > class Obje value at key "two": 2 "three" was found: false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/find__key_type.cpp -o find__key_type 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3516 of file json.hpp.

    @@ -298,7 +298,7 @@ value at key "two": 2 diff --git a/classnlohmann_1_1basic__json_a7d0db3b728d820d4984df78d97d2b104.html b/classnlohmann_1_1basic__json_a7d0db3b728d820d4984df78d97d2b104.html index 427976238..29e949752 100644 --- a/classnlohmann_1_1basic__json_a7d0db3b728d820d4984df78d97d2b104.html +++ b/classnlohmann_1_1basic__json_a7d0db3b728d820d4984df78d97d2b104.html @@ -249,7 +249,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a7d1b990f2c12fecb57db1504fdadd0bb.html b/classnlohmann_1_1basic__json_a7d1b990f2c12fecb57db1504fdadd0bb.html index 8771b60da..e923010fb 100644 --- a/classnlohmann_1_1basic__json_a7d1b990f2c12fecb57db1504fdadd0bb.html +++ b/classnlohmann_1_1basic__json_a7d1b990f2c12fecb57db1504fdadd0bb.html @@ -293,7 +293,7 @@ template<template< typename U, typename V, typename...Args > class Obje erase(InteratorType, InteratorType) – removes the elements in the given range
    erase(const size_type) – removes the element from an array at the given index
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3428 of file json.hpp.

    @@ -305,7 +305,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a7dab69b10b98e7bc694339720e37fb2b.html b/classnlohmann_1_1basic__json_a7dab69b10b98e7bc694339720e37fb2b.html index 65e264e95..03820d45e 100644 --- a/classnlohmann_1_1basic__json_a7dab69b10b98e7bc694339720e37fb2b.html +++ b/classnlohmann_1_1basic__json_a7dab69b10b98e7bc694339720e37fb2b.html @@ -286,7 +286,7 @@ template<template< typename U, typename V, typename...Args > class Obje value at key "two": 2 "three" was found: false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/find__key_type.cpp -o find__key_type 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3500 of file json.hpp.

    @@ -298,7 +298,7 @@ value at key "two": 2 diff --git a/classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html b/classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html index 193769804..0a84d899e 100644 --- a/classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html +++ b/classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html @@ -298,9 +298,9 @@ template<template< typename U, typename V, typename...Args > class Obje 17 != nullptr true "foo" != nullptr true null != nullptr false -

    The example code above can be translated with

    g++ -std=c++11 -Isrc doc/examples/operator__notequal__nullptr_t.cpp -o operator__notequal__nullptr_t 
    Since
    version 1.0
    +

    The example code above can be translated with

    g++ -std=c++11 -Isrc doc/examples/operator__notequal__nullptr_t.cpp -o operator__notequal__nullptr_t 
    Since
    version 1.0.0
    -

    Definition at line 4720 of file json.hpp.

    +

    Definition at line 4727 of file json.hpp.

    @@ -310,7 +310,7 @@ null != nullptr false diff --git a/classnlohmann_1_1basic__json_a80ceaa3bdd346292273b309e08525c1c.html b/classnlohmann_1_1basic__json_a80ceaa3bdd346292273b309e08525c1c.html index 07739887e..a674b6ff2 100644 --- a/classnlohmann_1_1basic__json_a80ceaa3bdd346292273b309e08525c1c.html +++ b/classnlohmann_1_1basic__json_a80ceaa3bdd346292273b309e08525c1c.html @@ -249,7 +249,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a83cbbfbf5d3ecbad6de8ece0be6b36c4.html b/classnlohmann_1_1basic__json_a83cbbfbf5d3ecbad6de8ece0be6b36c4.html index ca61db278..c309c08bd 100644 --- a/classnlohmann_1_1basic__json_a83cbbfbf5d3ecbad6de8ece0be6b36c4.html +++ b/classnlohmann_1_1basic__json_a83cbbfbf5d3ecbad6de8ece0be6b36c4.html @@ -299,7 +299,7 @@ template<template< typename U, typename V, typename...Args > class Obje 1 "Hello, world" The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/front.cpp -o front 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3143 of file json.hpp.

    @@ -311,7 +311,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a87db51b6b936fb2ea293cdbc8702dcb8.html b/classnlohmann_1_1basic__json_a87db51b6b936fb2ea293cdbc8702dcb8.html index 31f813f94..581931ff2 100644 --- a/classnlohmann_1_1basic__json_a87db51b6b936fb2ea293cdbc8702dcb8.html +++ b/classnlohmann_1_1basic__json_a87db51b6b936fb2ea293cdbc8702dcb8.html @@ -300,9 +300,9 @@ template<template< typename U, typename V, typename...Args > class Obje 17 <= 17.0000000000001 true "foo" <= "bar" false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator__lessequal.cpp -o operator__lessequal 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4832 of file json.hpp.

    +

    Definition at line 4839 of file json.hpp.

    @@ -312,7 +312,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a8b526709d395142b68d21abfbfff17c3.html b/classnlohmann_1_1basic__json_a8b526709d395142b68d21abfbfff17c3.html index 175ef282a..b7762d0c6 100644 --- a/classnlohmann_1_1basic__json_a8b526709d395142b68d21abfbfff17c3.html +++ b/classnlohmann_1_1basic__json_a8b526709d395142b68d21abfbfff17c3.html @@ -299,7 +299,7 @@ template<template< typename U, typename V, typename...Args > class Obje 1 "Hello, world" The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/front.cpp -o front 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3151 of file json.hpp.

    @@ -311,7 +311,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a8c40cd9ead4de7c82f28268bdf0ec98a.html b/classnlohmann_1_1basic__json_a8c40cd9ead4de7c82f28268bdf0ec98a.html index 9ec6afb87..f677233e3 100644 --- a/classnlohmann_1_1basic__json_a8c40cd9ead4de7c82f28268bdf0ec98a.html +++ b/classnlohmann_1_1basic__json_a8c40cd9ead4de7c82f28268bdf0ec98a.html @@ -303,7 +303,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    33 }
    a class to store JSON values
    Definition: json.hpp:187
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    void clear() noexcept
    clears the contents
    Definition: json.hpp:4029
    +
    void clear() noexcept
    clears the contents
    Definition: json.hpp:4028
    Output (play with this example online):
    null
     false
     0
    @@ -312,9 +312,9 @@ false
     []
     ""
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/clear.cpp -o clear 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4029 of file json.hpp.

    +

    Definition at line 4028 of file json.hpp.

    @@ -324,7 +324,7 @@ false diff --git a/classnlohmann_1_1basic__json_a8e34088252a3ee6b2377f3a1f26dd1ba.html b/classnlohmann_1_1basic__json_a8e34088252a3ee6b2377f3a1f26dd1ba.html index 7c47e8ece..9a98b65f4 100644 --- a/classnlohmann_1_1basic__json_a8e34088252a3ee6b2377f3a1f26dd1ba.html +++ b/classnlohmann_1_1basic__json_a8e34088252a3ee6b2377f3a1f26dd1ba.html @@ -289,7 +289,7 @@ operator[] with null"
    See also
    at(const typename object_t::key_type&) for access by reference with range checking
    value() for access by value with a default value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2934 of file json.hpp.

    @@ -301,7 +301,7 @@ operator[] with null" diff --git a/classnlohmann_1_1basic__json_a8e4e11999b4e7faa8f31f21164ebd65a.html b/classnlohmann_1_1basic__json_a8e4e11999b4e7faa8f31f21164ebd65a.html index 50251ec87..b60ea3d46 100644 --- a/classnlohmann_1_1basic__json_a8e4e11999b4e7faa8f31f21164ebd65a.html +++ b/classnlohmann_1_1basic__json_a8e4e11999b4e7faa8f31f21164ebd65a.html @@ -263,7 +263,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a8fa74698f4061e18ec664009f3af1ddf.html b/classnlohmann_1_1basic__json_a8fa74698f4061e18ec664009f3af1ddf.html index be233b565..6a197b87a 100644 --- a/classnlohmann_1_1basic__json_a8fa74698f4061e18ec664009f3af1ddf.html +++ b/classnlohmann_1_1basic__json_a8fa74698f4061e18ec664009f3af1ddf.html @@ -277,7 +277,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    Exceptions
    - + Output (play with this example online):
    "one"
     [1,2,3,4,"one","two","three","four"]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/insert__range.cpp -o insert__range 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4335 of file json.hpp.

    +

    Definition at line 4337 of file json.hpp.

    @@ -326,7 +326,7 @@ belong to container" diff --git a/classnlohmann_1_1basic__json_a930e14150ffa067bcf56d35cb00271e1.html b/classnlohmann_1_1basic__json_a930e14150ffa067bcf56d35cb00271e1.html index 84f8065ab..5f3f0f560 100644 --- a/classnlohmann_1_1basic__json_a930e14150ffa067bcf56d35cb00271e1.html +++ b/classnlohmann_1_1basic__json_a930e14150ffa067bcf56d35cb00271e1.html @@ -269,7 +269,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    null
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__nullptr_t.cpp -o basic_json__nullptr_t 
    See also
    basic_json() – default constructor (implicitly creating a null value)
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 910 of file json.hpp.

    @@ -281,7 +281,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a960962c683909619d1d2fbbe856c022e.html b/classnlohmann_1_1basic__json_a960962c683909619d1d2fbbe856c022e.html index f6d313463..7487b40e4 100644 --- a/classnlohmann_1_1basic__json_a960962c683909619d1d2fbbe856c022e.html +++ b/classnlohmann_1_1basic__json_a960962c683909619d1d2fbbe856c022e.html @@ -289,16 +289,16 @@ template<template< typename U, typename V, typename...Args > class Obje
    23  std::cout << null << '\n';
    24 }
    a class to store JSON values
    Definition: json.hpp:187
    -
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4096
    +
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4095
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    [1,2,3,4,5]
     null
     [1,2,3,4,5,6,7]
     ["first","second"]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/push_back.cpp -o push_back 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4154 of file json.hpp.

    +

    Definition at line 4153 of file json.hpp.

    @@ -308,7 +308,7 @@ null diff --git a/classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html b/classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html index f029ab669..eb28da4de 100644 --- a/classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html +++ b/classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html @@ -298,9 +298,9 @@ template<template< typename U, typename V, typename...Args > class Obje 17 == nullptr false "foo" == nullptr false null == nullptr true -

    The example code above can be translated with

    g++ -std=c++11 -Isrc doc/examples/operator__equal__nullptr_t.cpp -o operator__equal__nullptr_t 
    Since
    version 1.0
    +

    The example code above can be translated with

    g++ -std=c++11 -Isrc doc/examples/operator__equal__nullptr_t.cpp -o operator__equal__nullptr_t 
    Since
    version 1.0.0
    -

    Definition at line 4658 of file json.hpp.

    +

    Definition at line 4665 of file json.hpp.

    @@ -310,7 +310,7 @@ null == nullptr true diff --git a/classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html b/classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html index a5fe329d2..2002ada24 100644 --- a/classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html +++ b/classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html @@ -298,9 +298,9 @@ template<template< typename U, typename V, typename...Args > class Obje 17 == nullptr false "foo" == nullptr false null == nullptr true -

    The example code above can be translated with

    g++ -std=c++11 -Isrc doc/examples/operator__equal__nullptr_t.cpp -o operator__equal__nullptr_t 
    Since
    version 1.0
    +

    The example code above can be translated with

    g++ -std=c++11 -Isrc doc/examples/operator__equal__nullptr_t.cpp -o operator__equal__nullptr_t 
    Since
    version 1.0.0
    -

    Definition at line 4667 of file json.hpp.

    +

    Definition at line 4674 of file json.hpp.

    @@ -310,7 +310,7 @@ null == nullptr true diff --git a/classnlohmann_1_1basic__json_a9993148cb0473365e52998c7315f9ada.html b/classnlohmann_1_1basic__json_a9993148cb0473365e52998c7315f9ada.html index a48331468..f63b0b218 100644 --- a/classnlohmann_1_1basic__json_a9993148cb0473365e52998c7315f9ada.html +++ b/classnlohmann_1_1basic__json_a9993148cb0473365e52998c7315f9ada.html @@ -291,7 +291,7 @@ false
    See also
    is_number() – check if value is a number
    is_number_float() – check if value is a floating-point number
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2023 of file json.hpp.

    @@ -303,7 +303,7 @@ false diff --git a/classnlohmann_1_1basic__json_a9a73d1b71c9e913aa2888d8b40c72ee9.html b/classnlohmann_1_1basic__json_a9a73d1b71c9e913aa2888d8b40c72ee9.html index 2da1edaf9..e2181b5e7 100644 --- a/classnlohmann_1_1basic__json_a9a73d1b71c9e913aa2888d8b40c72ee9.html +++ b/classnlohmann_1_1basic__json_a9a73d1b71c9e913aa2888d8b40c72ee9.html @@ -286,14 +286,14 @@ template<template< typename U, typename V, typename...Args > class Obje
    15  std::cout << array_1 << '\n';
    16  std::cout << array_5 << '\n';
    17 }
    -
    basic_json<> json
    default JSON class
    Definition: json.hpp:7799
    +
    basic_json<> json
    default JSON class
    Definition: json.hpp:7811
    a class to store JSON values
    Definition: json.hpp:187
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    []
     ["Hello"]
     ["Hello","Hello","Hello","Hello","Hello"]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__size_type_basic_json.cpp -o basic_json__size_type_basic_json 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1531 of file json.hpp.

    @@ -305,7 +305,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a9c26c5d0f4a519c7236149b9aeb3ef9e.html b/classnlohmann_1_1basic__json_a9c26c5d0f4a519c7236149b9aeb3ef9e.html index 1ee408997..9e8becbf2 100644 --- a/classnlohmann_1_1basic__json_a9c26c5d0f4a519c7236149b9aeb3ef9e.html +++ b/classnlohmann_1_1basic__json_a9c26c5d0f4a519c7236149b9aeb3ef9e.html @@ -291,7 +291,7 @@ false
    See also
    is_number() – check if value is number
    is_number_integer() – check if value is an integer number
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2046 of file json.hpp.

    @@ -303,7 +303,7 @@ false diff --git a/classnlohmann_1_1basic__json_a9daafb4c15ed5a008cb825bbd8c29d87.html b/classnlohmann_1_1basic__json_a9daafb4c15ed5a008cb825bbd8c29d87.html index 02a805b9f..82a0f546d 100644 --- a/classnlohmann_1_1basic__json_a9daafb4c15ed5a008cb825bbd8c29d87.html +++ b/classnlohmann_1_1basic__json_a9daafb4c15ed5a008cb825bbd8c29d87.html @@ -292,7 +292,7 @@ operator[] with null"
    See also
    at(const typename object_t::key_type&) for access by reference with range checking
    value() for access by value with a default value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3027 of file json.hpp.

    @@ -304,7 +304,7 @@ operator[] with null" diff --git a/classnlohmann_1_1basic__json_a9f17a0690155e3a5603246ccec81499e.html b/classnlohmann_1_1basic__json_a9f17a0690155e3a5603246ccec81499e.html index e5abcfb05..85eb85b8e 100644 --- a/classnlohmann_1_1basic__json_a9f17a0690155e3a5603246ccec81499e.html +++ b/classnlohmann_1_1basic__json_a9f17a0690155e3a5603246ccec81499e.html @@ -288,7 +288,7 @@ false false true The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/is_primitive.cpp -o is_primitive 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1918 of file json.hpp.

    @@ -300,7 +300,7 @@ true diff --git a/classnlohmann_1_1basic__json_aa0422e861b4cbd7cdcaad7a11a1304a9.html b/classnlohmann_1_1basic__json_aa0422e861b4cbd7cdcaad7a11a1304a9.html index 973aa99e9..1cc60a1ab 100644 --- a/classnlohmann_1_1basic__json_aa0422e861b4cbd7cdcaad7a11a1304a9.html +++ b/classnlohmann_1_1basic__json_aa0422e861b4cbd7cdcaad7a11a1304a9.html @@ -325,13 +325,13 @@ template<template< typename U, typename V, typename...Args > class Obje
    53  json j_filtered = json::parse(ss, cb);
    54  std::cout << std::setw(4) << j_filtered << '\n';
    55 }
    -
    basic_json<> json
    default JSON class
    Definition: json.hpp:7799
    +
    basic_json<> json
    default JSON class
    Definition: json.hpp:7811
    a class to store JSON values
    Definition: json.hpp:187
    std::function< bool(int depth, parse_event_t event, basic_json &parsed)> parser_callback_t
    per-element parser callback type
    Definition: json.hpp:819
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    void clear() noexcept
    clears the contents
    Definition: json.hpp:4029
    +
    void clear() noexcept
    clears the contents
    Definition: json.hpp:4028
    the parser read a key of a value in an object
    -
    static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
    deserialize from string
    Definition: json.hpp:4948
    +
    static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
    deserialize from string
    Definition: json.hpp:4955
    parse_event_t
    JSON callback events.
    Definition: json.hpp:754
    Output (play with this example online):
    {
         "Image": {
    @@ -369,9 +369,9 @@ template<template< typename U, typename V, typename...Args > class Obje
     }
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/parse__istream__parser_callback_t.cpp -o parse__istream__parser_callback_t 
    See also
    parse(const string_t&, parser_callback_t) for a version that reads from a string
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4985 of file json.hpp.

    +

    Definition at line 4992 of file json.hpp.

    @@ -381,7 +381,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_aa1f3b3f1dca79392d6727b81f9668c6c.html b/classnlohmann_1_1basic__json_aa1f3b3f1dca79392d6727b81f9668c6c.html index 700c50d14..1a56c3987 100644 --- a/classnlohmann_1_1basic__json_aa1f3b3f1dca79392d6727b81f9668c6c.html +++ b/classnlohmann_1_1basic__json_aa1f3b3f1dca79392d6727b81f9668c6c.html @@ -299,7 +299,7 @@ template<template< typename U, typename V, typename...Args > class Obje 16 "Hello, world" The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/back.cpp -o back 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3177 of file json.hpp.

    @@ -311,7 +311,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_aa5413178b8041f7ac685dec4b040dd2c.html b/classnlohmann_1_1basic__json_aa5413178b8041f7ac685dec4b040dd2c.html index aa5276b8d..f29926b04 100644 --- a/classnlohmann_1_1basic__json_aa5413178b8041f7ac685dec4b040dd2c.html +++ b/classnlohmann_1_1basic__json_aa5413178b8041f7ac685dec4b040dd2c.html @@ -282,10 +282,10 @@ Illustration from cppreference.com
    a class to store JSON values
    Definition: json.hpp:187
    const_iterator cend() const
    returns a const iterator to one past the last element
    Definition: json.hpp:3673
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    a const random access iterator for the basic_json class
    Definition: json.hpp:5570
    +
    a const random access iterator for the basic_json class
    Definition: json.hpp:5577
    Output (play with this example online):
    5
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/cend.cpp -o cend 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3649 of file json.hpp.

    @@ -297,7 +297,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_aa6a24b176f9599a21d662cc5f8e1ca76.html b/classnlohmann_1_1basic__json_aa6a24b176f9599a21d662cc5f8e1ca76.html index 2fc9f5905..3b103dd01 100644 --- a/classnlohmann_1_1basic__json_aa6a24b176f9599a21d662cc5f8e1ca76.html +++ b/classnlohmann_1_1basic__json_aa6a24b176f9599a21d662cc5f8e1ca76.html @@ -256,7 +256,7 @@ template<template< typename U, typename V, typename...Args > class Obje
  • All stored elements are destroyed and all memory is freed.
  • -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1797 of file json.hpp.

    @@ -268,7 +268,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_aa6c32f669a2e523666072003d0ea46f4.html b/classnlohmann_1_1basic__json_aa6c32f669a2e523666072003d0ea46f4.html index 44e3198eb..2361ca492 100644 --- a/classnlohmann_1_1basic__json_aa6c32f669a2e523666072003d0ea46f4.html +++ b/classnlohmann_1_1basic__json_aa6c32f669a2e523666072003d0ea46f4.html @@ -321,7 +321,7 @@ template<class CompatibleObjectType , typename std::enable_if< {"one":true,"three":false,"two":true} The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__CompatibleObjectType.cpp -o basic_json__CompatibleObjectType 
    See also
    basic_json(const object_t&) – create an object value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 965 of file json.hpp.

    @@ -333,7 +333,7 @@ template<class CompatibleObjectType , typename std::enable_if< diff --git a/classnlohmann_1_1basic__json_aa71e977d31f470689883ac60d16ea4ac.html b/classnlohmann_1_1basic__json_aa71e977d31f470689883ac60d16ea4ac.html index d5668da66..6d56f62c0 100644 --- a/classnlohmann_1_1basic__json_aa71e977d31f470689883ac60d16ea4ac.html +++ b/classnlohmann_1_1basic__json_aa71e977d31f470689883ac60d16ea4ac.html @@ -259,7 +259,8 @@ template<template< typename U, typename V, typename...Args > class Obje
    Exceptions
    std::domain_errorif called on JSON values other than arrays
    std::domain_errorif called on JSON values other than arrays; example: "cannot use insert() with string"
    std::domain_errorif pos is not an iterator of *this; example: "iterator does not fit current value"
    std::domain_errorif first and last do not belong to the same JSON value; example: "iterators do not fit"
    std::domain_errorif first or last are iterators into container for which insert is called; example: "passed iterators may not @@ -314,9 +314,9 @@ belong to container"
    - +
    std::domain_errorwhen JSON value is not an array
    std::domain_errorwhen JSON value is not an array; example: "cannot +use swap() with string"
    @@ -287,13 +288,13 @@ template<template< typename U, typename V, typename...Args > class Obje
    a class to store JSON values
    Definition: json.hpp:187
    ValueType value(const typename object_t::key_type &key, ValueType default_value) const
    access specified object element with default value
    Definition: json.hpp:3092
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    void swap(reference other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    exchanges the values
    Definition: json.hpp:4427
    +
    void swap(reference other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    exchanges the values
    Definition: json.hpp:4431
    Output (play with this example online):
    value = {"array":["Snap","Crackle","Pop"]}
     array = [1,2,3,4]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/swap__array_t.cpp -o swap__array_t 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4457 of file json.hpp.

    +

    Definition at line 4462 of file json.hpp.

    @@ -303,7 +304,7 @@ array = [1,2,3,4] diff --git a/classnlohmann_1_1basic__json_aabe4661644ea549089f0886c2551d2ac.html b/classnlohmann_1_1basic__json_aabe4661644ea549089f0886c2551d2ac.html index 10aad8a11..c77f3d48f 100644 --- a/classnlohmann_1_1basic__json_aabe4661644ea549089f0886c2551d2ac.html +++ b/classnlohmann_1_1basic__json_aabe4661644ea549089f0886c2551d2ac.html @@ -271,7 +271,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    Returns
    Whether the JSON value which called the function during parsing should be kept (true) or not (false). In the latter case, it is either skipped completely or replaced by an empty discarded object.
    See also
    parse(std::istream&, parser_callback_t) or parse(const string_t&, parser_callback_t) for examples
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 819 of file json.hpp.

    @@ -283,7 +283,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_aac185a137428a7337aa620de07bfbbd7.html b/classnlohmann_1_1basic__json_aac185a137428a7337aa620de07bfbbd7.html index 3e8ef9abf..3223d8e8f 100644 --- a/classnlohmann_1_1basic__json_aac185a137428a7337aa620de07bfbbd7.html +++ b/classnlohmann_1_1basic__json_aac185a137428a7337aa620de07bfbbd7.html @@ -264,9 +264,9 @@ template<template< typename U, typename V, typename...Args > class Obje
  • order: null < boolean < number < object < array < string
  • furthermore, each type is not smaller than itself
  • -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4554 of file json.hpp.

    +

    Definition at line 4561 of file json.hpp.

    @@ -276,7 +276,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_aacd442b66140c764c594ac8ad7dfd5b3.html b/classnlohmann_1_1basic__json_aacd442b66140c764c594ac8ad7dfd5b3.html index caba00416..c494452ba 100644 --- a/classnlohmann_1_1basic__json_aacd442b66140c764c594ac8ad7dfd5b3.html +++ b/classnlohmann_1_1basic__json_aacd442b66140c764c594ac8ad7dfd5b3.html @@ -304,9 +304,9 @@ template<template< typename U, typename V, typename...Args > class Obje 17 == 17.0000000000001 true "foo" == "bar" false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator__less.cpp -o operator__less 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4749 of file json.hpp.

    +

    Definition at line 4756 of file json.hpp.

    @@ -316,7 +316,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_aacf6c869f6a9c66ac1bc99e93f310044.html b/classnlohmann_1_1basic__json_aacf6c869f6a9c66ac1bc99e93f310044.html index 94a9f6f72..0983dc189 100644 --- a/classnlohmann_1_1basic__json_aacf6c869f6a9c66ac1bc99e93f310044.html +++ b/classnlohmann_1_1basic__json_aacf6c869f6a9c66ac1bc99e93f310044.html @@ -259,7 +259,7 @@ template<template< typename U, typename V, typename...Args > class Obje

    Storage

    Floating-point number values are stored directly inside a basic_json type.

    See also
    number_integer_t – type for number values (integer)
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 592 of file json.hpp.

    @@ -271,7 +271,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html b/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html index 1a04ec2d4..83c849278 100644 --- a/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html +++ b/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html @@ -316,9 +316,9 @@ template<template< typename U, typename V, typename...Args > class Obje } The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator_deserialize.cpp -o operator_deserialize 
    See also
    parse(std::istream&, parser_callback_t) for a variant with a parser callback function to filter values while parsing
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 5023 of file json.hpp.

    +

    Definition at line 5030 of file json.hpp.

    @@ -328,7 +328,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_aafa839f2a74dc1b5060314b3423143b8.html b/classnlohmann_1_1basic__json_aafa839f2a74dc1b5060314b3423143b8.html index 71be563b7..d1a269c19 100644 --- a/classnlohmann_1_1basic__json_aafa839f2a74dc1b5060314b3423143b8.html +++ b/classnlohmann_1_1basic__json_aafa839f2a74dc1b5060314b3423143b8.html @@ -245,7 +245,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    bool

    Storage

    Boolean values are stored directly inside a basic_json type.

    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 459 of file json.hpp.

    @@ -257,7 +257,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ab14e3503305622fb5ab01a7f490916e8.html b/classnlohmann_1_1basic__json_ab14e3503305622fb5ab01a7f490916e8.html index 46556631f..590c89539 100644 --- a/classnlohmann_1_1basic__json_ab14e3503305622fb5ab01a7f490916e8.html +++ b/classnlohmann_1_1basic__json_ab14e3503305622fb5ab01a7f490916e8.html @@ -270,8 +270,8 @@ template<template< typename U, typename V, typename...Args > class Obje
    Exceptions
    - - + +
    std::domain_errorif called on JSON values other than arrays
    std::domain_errorif pos is not an iterator of *this; example: "iterator does not fit current value"
    std::domain_errorif called on JSON values other than arrays; example: "cannot use insert() with string"
    std::domain_errorif pos is not an iterator of *this; example: "iterator does not fit current value"
    @@ -300,9 +300,9 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    7
     [1,2,3,4,7,8,9]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/insert__ilist.cpp -o insert__ilist 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4390 of file json.hpp.

    +

    Definition at line 4394 of file json.hpp.

    @@ -312,7 +312,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ab2162bc76e10d8736cab9b2039956054.html b/classnlohmann_1_1basic__json_ab2162bc76e10d8736cab9b2039956054.html index 20c4fe9df..0037e77d3 100644 --- a/classnlohmann_1_1basic__json_ab2162bc76e10d8736cab9b2039956054.html +++ b/classnlohmann_1_1basic__json_ab2162bc76e10d8736cab9b2039956054.html @@ -279,12 +279,12 @@ Illustration from cppreference.com
    17  std::cout << *it << '\n';
    18 }
    a class to store JSON values
    Definition: json.hpp:187
    -
    a mutable random access iterator for the basic_json class
    Definition: json.hpp:6072
    +
    a mutable random access iterator for the basic_json class
    Definition: json.hpp:6079
    iterator end()
    returns an iterator to one past the last element
    Definition: json.hpp:3639
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    5
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/end.cpp -o end 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3639 of file json.hpp.

    @@ -296,7 +296,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_ab74b2398f29acc6ffbf48f1b8974a848.html b/classnlohmann_1_1basic__json_ab74b2398f29acc6ffbf48f1b8974a848.html index 52565e7c7..120c1cf35 100644 --- a/classnlohmann_1_1basic__json_ab74b2398f29acc6ffbf48f1b8974a848.html +++ b/classnlohmann_1_1basic__json_ab74b2398f29acc6ffbf48f1b8974a848.html @@ -304,7 +304,7 @@ template<typename CompatibleNumberIntegerType , typename std::enable_if<
    See also
    basic_json(const number_integer_t) – create a number value (integer)
    basic_json(const int) – create a number value (integer)
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1229 of file json.hpp.

    @@ -316,7 +316,7 @@ template<typename CompatibleNumberIntegerType , typename std::enable_if< diff --git a/classnlohmann_1_1basic__json_ab7d60fb6cb8e8f5740e588f9dc953819.html b/classnlohmann_1_1basic__json_ab7d60fb6cb8e8f5740e588f9dc953819.html index 4f4ea5191..20617c816 100644 --- a/classnlohmann_1_1basic__json_ab7d60fb6cb8e8f5740e588f9dc953819.html +++ b/classnlohmann_1_1basic__json_ab7d60fb6cb8e8f5740e588f9dc953819.html @@ -343,7 +343,7 @@ template<class CompatibleArrayType , typename std::enable_if< ["four","two","one","one"] The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__CompatibleArrayType.cpp -o basic_json__CompatibleArrayType 
    See also
    basic_json(const array_t&) – create an array value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1029 of file json.hpp.

    @@ -355,7 +355,7 @@ template<class CompatibleArrayType , typename std::enable_if< diff --git a/classnlohmann_1_1basic__json_ab9a20bd1d391e9cb968db50c246f728d.html b/classnlohmann_1_1basic__json_ab9a20bd1d391e9cb968db50c246f728d.html index f763aea6c..3dc68ab97 100644 --- a/classnlohmann_1_1basic__json_ab9a20bd1d391e9cb968db50c246f728d.html +++ b/classnlohmann_1_1basic__json_ab9a20bd1d391e9cb968db50c246f728d.html @@ -302,7 +302,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    27  std::cout << j_string.size() << '\n';
    28 }
    a class to store JSON values
    Definition: json.hpp:187
    -
    size_type size() const noexcept
    returns the number of elements
    Definition: json.hpp:3912
    +
    size_type size() const noexcept
    returns the number of elements
    Definition: json.hpp:3911
    object (unordered set of name/value pairs)
    namespace for Niels Lohmann
    Definition: json.hpp:78
    array (ordered collection of values)
    @@ -316,9 +316,9 @@ template<template< typename U, typename V, typename...Args > class Obje 0 1 The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/size.cpp -o size 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 3912 of file json.hpp.

    +

    Definition at line 3911 of file json.hpp.

    @@ -328,7 +328,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ab9da2afc6f77295f25252725fde142a6.html b/classnlohmann_1_1basic__json_ab9da2afc6f77295f25252725fde142a6.html index 8680e1fdb..e1eea1b58 100644 --- a/classnlohmann_1_1basic__json_ab9da2afc6f77295f25252725fde142a6.html +++ b/classnlohmann_1_1basic__json_ab9da2afc6f77295f25252725fde142a6.html @@ -299,7 +299,7 @@ template<template< typename U, typename V, typename...Args > class Obje 16 "Hello, world" The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/back.cpp -o back 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3187 of file json.hpp.

    @@ -311,7 +311,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_abe8f3224ca4041908ddb466cb9caecf1.html b/classnlohmann_1_1basic__json_abe8f3224ca4041908ddb466cb9caecf1.html index 3f93ce642..41b4c3377 100644 --- a/classnlohmann_1_1basic__json_abe8f3224ca4041908ddb466cb9caecf1.html +++ b/classnlohmann_1_1basic__json_abe8f3224ca4041908ddb466cb9caecf1.html @@ -299,7 +299,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    24 }
    a class to store JSON values
    Definition: json.hpp:187
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    size_type max_size() const noexcept
    returns the maximum possible number of elements
    Definition: json.hpp:3972
    +
    size_type max_size() const noexcept
    returns the maximum possible number of elements
    Definition: json.hpp:3971
    Output (play with this example online):
    0
     1
     1
    @@ -308,9 +308,9 @@ template<template< typename U, typename V, typename...Args > class Obje
     1152921504606846975
     1
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/max_size.cpp -o max_size 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 3972 of file json.hpp.

    +

    Definition at line 3971 of file json.hpp.

    @@ -320,7 +320,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ac160789f17d206a5404981ca0957e303.html b/classnlohmann_1_1basic__json_ac160789f17d206a5404981ca0957e303.html index 50dc66cd3..4a8cb27f2 100644 --- a/classnlohmann_1_1basic__json_ac160789f17d206a5404981ca0957e303.html +++ b/classnlohmann_1_1basic__json_ac160789f17d206a5404981ca0957e303.html @@ -281,7 +281,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    See also
    basic_json(const number_integer_t) – create a number value (integer)
    basic_json(const CompatibleNumberIntegerType) – create a number value (integer) from a compatible number type
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1194 of file json.hpp.

    @@ -293,7 +293,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ac4011bd0781e51afe4994d2b09fd27e9.html b/classnlohmann_1_1basic__json_ac4011bd0781e51afe4994d2b09fd27e9.html index e259a21b6..f4524a3ad 100644 --- a/classnlohmann_1_1basic__json_ac4011bd0781e51afe4994d2b09fd27e9.html +++ b/classnlohmann_1_1basic__json_ac4011bd0781e51afe4994d2b09fd27e9.html @@ -249,7 +249,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ac8163abe518595f19dbee68db1caaaf7.html b/classnlohmann_1_1basic__json_ac8163abe518595f19dbee68db1caaaf7.html index 3108e4018..d1dd47481 100644 --- a/classnlohmann_1_1basic__json_ac8163abe518595f19dbee68db1caaaf7.html +++ b/classnlohmann_1_1basic__json_ac8163abe518595f19dbee68db1caaaf7.html @@ -288,7 +288,7 @@ true false false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/is_object.cpp -o is_object 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2065 of file json.hpp.

    @@ -300,7 +300,7 @@ false diff --git a/classnlohmann_1_1basic__json_ac82abedf356d252e0589850c3d8b35ba.html b/classnlohmann_1_1basic__json_ac82abedf356d252e0589850c3d8b35ba.html index 928bce053..6ca2fc915 100644 --- a/classnlohmann_1_1basic__json_ac82abedf356d252e0589850c3d8b35ba.html +++ b/classnlohmann_1_1basic__json_ac82abedf356d252e0589850c3d8b35ba.html @@ -263,7 +263,7 @@ template<template< typename U, typename V, typename...Args > class Obje

    Storage

    Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of type array_t* must be dereferenced.

    See also
    object_t – type for an object value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 386 of file json.hpp.

    @@ -275,7 +275,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ac943391891fcde0a71a15ce990e0f7f4.html b/classnlohmann_1_1basic__json_ac943391891fcde0a71a15ce990e0f7f4.html index 23139a59f..3b720e62b 100644 --- a/classnlohmann_1_1basic__json_ac943391891fcde0a71a15ce990e0f7f4.html +++ b/classnlohmann_1_1basic__json_ac943391891fcde0a71a15ce990e0f7f4.html @@ -290,7 +290,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    ["one","two",3,4.5,false] = ["one","two",3,4.5,false]
     true
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__basic_json.cpp -o basic_json__basic_json 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1675 of file json.hpp.

    @@ -302,7 +302,7 @@ true diff --git a/classnlohmann_1_1basic__json_acd08f9179c8c1e9f2cd7575a724ce27e.html b/classnlohmann_1_1basic__json_acd08f9179c8c1e9f2cd7575a724ce27e.html index 9ee572b38..54f7bc74e 100644 --- a/classnlohmann_1_1basic__json_acd08f9179c8c1e9f2cd7575a724ce27e.html +++ b/classnlohmann_1_1basic__json_acd08f9179c8c1e9f2cd7575a724ce27e.html @@ -289,7 +289,7 @@ template<typename T , typename std::enable_if<
    See also
    basic_json(const int) – create a number value (integer)
    basic_json(const CompatibleNumberIntegerType) – create a number value (integer) from a compatible number type
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1165 of file json.hpp.

    @@ -301,7 +301,7 @@ template<typename T , typename std::enable_if< diff --git a/classnlohmann_1_1basic__json_acdf4445333649ec94198f09a62144884.html b/classnlohmann_1_1basic__json_acdf4445333649ec94198f09a62144884.html index 068eb7d28..2036a39ef 100644 --- a/classnlohmann_1_1basic__json_acdf4445333649ec94198f09a62144884.html +++ b/classnlohmann_1_1basic__json_acdf4445333649ec94198f09a62144884.html @@ -276,12 +276,12 @@ Illustration from cppreference.com
    14  std::cout << *it << '\n';
    15 }
    a class to store JSON values
    Definition: json.hpp:187
    -
    a mutable random access iterator for the basic_json class
    Definition: json.hpp:6072
    +
    a mutable random access iterator for the basic_json class
    Definition: json.hpp:6079
    iterator begin()
    returns an iterator to the first element
    Definition: json.hpp:3580
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    1
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/begin.cpp -o begin 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3580 of file json.hpp.

    @@ -293,7 +293,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_ace8338e57fdb11e1955c2a0c2d782069.html b/classnlohmann_1_1basic__json_ace8338e57fdb11e1955c2a0c2d782069.html index 6668de07f..70ff3ac63 100644 --- a/classnlohmann_1_1basic__json_ace8338e57fdb11e1955c2a0c2d782069.html +++ b/classnlohmann_1_1basic__json_ace8338e57fdb11e1955c2a0c2d782069.html @@ -258,7 +258,7 @@ template<template< typename U, typename V, typename...Args > class Obje

    This implementation is interoperable as it does compare strings code unit by code unit.

    Storage

    String values are stored as pointers in a basic_json type. That is, for any access to string values, a pointer of type string_t* must be dereferenced.

    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 433 of file json.hpp.

    @@ -270,7 +270,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ad1f617d29e8923dd40c89153f792b1bc.html b/classnlohmann_1_1basic__json_ad1f617d29e8923dd40c89153f792b1bc.html index d9fbb870c..d993c52bb 100644 --- a/classnlohmann_1_1basic__json_ad1f617d29e8923dd40c89153f792b1bc.html +++ b/classnlohmann_1_1basic__json_ad1f617d29e8923dd40c89153f792b1bc.html @@ -293,7 +293,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    See also
    basic_json(std::initializer_list<basic_json>, bool, value_t) – create a JSON value from an initializer list
    array(std::initializer_list<basic_json>) – create a JSON array value from an initializer list
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1507 of file json.hpp.

    @@ -305,7 +305,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ad2c4513cef5d8db760c4b2d871eea42c.html b/classnlohmann_1_1basic__json_ad2c4513cef5d8db760c4b2d871eea42c.html index bc1e0f1a1..f39c05215 100644 --- a/classnlohmann_1_1basic__json_ad2c4513cef5d8db760c4b2d871eea42c.html +++ b/classnlohmann_1_1basic__json_ad2c4513cef5d8db760c4b2d871eea42c.html @@ -260,7 +260,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ad497cbc4f80c8d79662ee6e19bf145dd.html b/classnlohmann_1_1basic__json_ad497cbc4f80c8d79662ee6e19bf145dd.html index a7e53a5c9..dda6f850d 100644 --- a/classnlohmann_1_1basic__json_ad497cbc4f80c8d79662ee6e19bf145dd.html +++ b/classnlohmann_1_1basic__json_ad497cbc4f80c8d79662ee6e19bf145dd.html @@ -342,7 +342,7 @@ null erase(const typename object_t::key_type&) – remvoes the element from an object at the given key
    erase(const size_type) – removes the element from an array at the given index
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3347 of file json.hpp.

    @@ -354,7 +354,7 @@ null diff --git a/classnlohmann_1_1basic__json_ad6734c2b91b1b77aa2b43b65c3619c05.html b/classnlohmann_1_1basic__json_ad6734c2b91b1b77aa2b43b65c3619c05.html index c8876018e..9f050971b 100644 --- a/classnlohmann_1_1basic__json_ad6734c2b91b1b77aa2b43b65c3619c05.html +++ b/classnlohmann_1_1basic__json_ad6734c2b91b1b77aa2b43b65c3619c05.html @@ -298,7 +298,7 @@ null 23.42 The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__CompatibleNumberFloatType.cpp -o basic_json__CompatibleNumberFloatType 
    See also
    basic_json(const number_float_t) – create a number value (floating-point)
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1304 of file json.hpp.

    @@ -310,7 +310,7 @@ null diff --git a/classnlohmann_1_1basic__json_ad8e0c5d04f016d1b3ac7369e5c73bedf.html b/classnlohmann_1_1basic__json_ad8e0c5d04f016d1b3ac7369e5c73bedf.html index 0a0d950ae..413640b7d 100644 --- a/classnlohmann_1_1basic__json_ad8e0c5d04f016d1b3ac7369e5c73bedf.html +++ b/classnlohmann_1_1basic__json_ad8e0c5d04f016d1b3ac7369e5c73bedf.html @@ -279,10 +279,10 @@ Illustration from cppreference.com
    a class to store JSON values
    Definition: json.hpp:187
    const_iterator cbegin() const
    returns a const iterator to the first element
    Definition: json.hpp:3614
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    a const random access iterator for the basic_json class
    Definition: json.hpp:5570
    +
    a const random access iterator for the basic_json class
    Definition: json.hpp:5577
    Output (play with this example online):
    1
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/cbegin.cpp -o cbegin 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3614 of file json.hpp.

    @@ -294,7 +294,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_ada8e01109a60088e4db2a670d4903b54.html b/classnlohmann_1_1basic__json_ada8e01109a60088e4db2a670d4903b54.html index 8116ca82e..f23fc4e6e 100644 --- a/classnlohmann_1_1basic__json_ada8e01109a60088e4db2a670d4903b54.html +++ b/classnlohmann_1_1basic__json_ada8e01109a60088e4db2a670d4903b54.html @@ -301,7 +301,7 @@ template<template< typename U, typename V, typename...Args > class Obje ["first","second","third","fourth"] out of range: array index 5 is out of range The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/at__size_type.cpp -o at__size_type 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2620 of file json.hpp.

    @@ -313,7 +313,7 @@ out of range: array index 5 is out of range diff --git a/classnlohmann_1_1basic__json_adbd4c16c9ac641b2a4736bc2c6787d83.html b/classnlohmann_1_1basic__json_adbd4c16c9ac641b2a4736bc2c6787d83.html index 149bd2b08..f2be3374f 100644 --- a/classnlohmann_1_1basic__json_adbd4c16c9ac641b2a4736bc2c6787d83.html +++ b/classnlohmann_1_1basic__json_adbd4c16c9ac641b2a4736bc2c6787d83.html @@ -249,7 +249,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ade7bd6e0fe221fec9d3fa9b430f5ce76.html b/classnlohmann_1_1basic__json_ade7bd6e0fe221fec9d3fa9b430f5ce76.html index 03c960230..b542920b0 100644 --- a/classnlohmann_1_1basic__json_ade7bd6e0fe221fec9d3fa9b430f5ce76.html +++ b/classnlohmann_1_1basic__json_ade7bd6e0fe221fec9d3fa9b430f5ce76.html @@ -318,7 +318,7 @@ template<template< typename U, typename V, typename...Args > class Obje The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/dump.cpp -o dump 
    See also
    https://docs.python.org/2/library/json.html#json.dump
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1866 of file json.hpp.

    @@ -330,7 +330,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_adeaef2ab021997a11a826c378c2365e1.html b/classnlohmann_1_1basic__json_adeaef2ab021997a11a826c378c2365e1.html index c5101bd5e..be8a384ba 100644 --- a/classnlohmann_1_1basic__json_adeaef2ab021997a11a826c378c2365e1.html +++ b/classnlohmann_1_1basic__json_adeaef2ab021997a11a826c378c2365e1.html @@ -277,7 +277,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    true
     false
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__boolean_t.cpp -o basic_json__boolean_t 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1131 of file json.hpp.

    @@ -289,7 +289,7 @@ false diff --git a/classnlohmann_1_1basic__json_adf5dea6fa9d7075ff89ca0796ab47a7e.html b/classnlohmann_1_1basic__json_adf5dea6fa9d7075ff89ca0796ab47a7e.html index 6558984ee..5f861a750 100644 --- a/classnlohmann_1_1basic__json_adf5dea6fa9d7075ff89ca0796ab47a7e.html +++ b/classnlohmann_1_1basic__json_adf5dea6fa9d7075ff89ca0796ab47a7e.html @@ -284,7 +284,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    23
     23
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/basic_json__copyassignment.cpp -o basic_json__copyassignment 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1771 of file json.hpp.

    @@ -296,7 +296,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ae347859ec88176ef76a0cbe5b4514fcf.html b/classnlohmann_1_1basic__json_ae347859ec88176ef76a0cbe5b4514fcf.html index 62cf563e9..816dab576 100644 --- a/classnlohmann_1_1basic__json_ae347859ec88176ef76a0cbe5b4514fcf.html +++ b/classnlohmann_1_1basic__json_ae347859ec88176ef76a0cbe5b4514fcf.html @@ -298,9 +298,9 @@ template<template< typename U, typename V, typename...Args > class Obje 17 != nullptr true "foo" != nullptr true null != nullptr false -

    The example code above can be translated with

    g++ -std=c++11 -Isrc doc/examples/operator__notequal__nullptr_t.cpp -o operator__notequal__nullptr_t 
    Since
    version 1.0
    +

    The example code above can be translated with

    g++ -std=c++11 -Isrc doc/examples/operator__notequal__nullptr_t.cpp -o operator__notequal__nullptr_t 
    Since
    version 1.0.0
    -

    Definition at line 4711 of file json.hpp.

    +

    Definition at line 4718 of file json.hpp.

    @@ -310,7 +310,7 @@ null != nullptr false diff --git a/classnlohmann_1_1basic__json_ae50f22a1c646b8627e88f1313cceffd4.html b/classnlohmann_1_1basic__json_ae50f22a1c646b8627e88f1313cceffd4.html index 3942f033e..d8169b132 100644 --- a/classnlohmann_1_1basic__json_ae50f22a1c646b8627e88f1313cceffd4.html +++ b/classnlohmann_1_1basic__json_ae50f22a1c646b8627e88f1313cceffd4.html @@ -291,7 +291,7 @@ template<typename PointerType , typename std::enable_if< true The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/get__PointerType.cpp -o get__PointerType 
    See also
    get_ptr() for explicit pointer-member access
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2478 of file json.hpp.

    @@ -303,7 +303,7 @@ true diff --git a/classnlohmann_1_1basic__json_ae874cfc1746b560c53a03bcf5b7bbeed.html b/classnlohmann_1_1basic__json_ae874cfc1746b560c53a03bcf5b7bbeed.html index 761523f23..bb88d673d 100644 --- a/classnlohmann_1_1basic__json_ae874cfc1746b560c53a03bcf5b7bbeed.html +++ b/classnlohmann_1_1basic__json_ae874cfc1746b560c53a03bcf5b7bbeed.html @@ -288,7 +288,7 @@ true true false The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/is_structured.cpp -o is_structured 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1938 of file json.hpp.

    @@ -300,7 +300,7 @@ false diff --git a/classnlohmann_1_1basic__json_ae928414b2805cf6ef56b4e4f8d235416.html b/classnlohmann_1_1basic__json_ae928414b2805cf6ef56b4e4f8d235416.html index d1bed5796..7e2f7b268 100644 --- a/classnlohmann_1_1basic__json_ae928414b2805cf6ef56b4e4f8d235416.html +++ b/classnlohmann_1_1basic__json_ae928414b2805cf6ef56b4e4f8d235416.html @@ -249,7 +249,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_ae960d2d6bc7b94fe39cc5e9f106edfa9.html b/classnlohmann_1_1basic__json_ae960d2d6bc7b94fe39cc5e9f106edfa9.html index 5a3d2343e..f7190e727 100644 --- a/classnlohmann_1_1basic__json_ae960d2d6bc7b94fe39cc5e9f106edfa9.html +++ b/classnlohmann_1_1basic__json_ae960d2d6bc7b94fe39cc5e9f106edfa9.html @@ -283,7 +283,7 @@ operator[] with null"
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    "third"
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operatorarray__size_type_const.cpp -o operatorarray__size_type_const 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2847 of file json.hpp.

    @@ -295,7 +295,7 @@ operator[] with null" diff --git a/classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html b/classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html index c152d6ba8..7ff3c2a80 100644 --- a/classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html +++ b/classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html @@ -247,7 +247,7 @@ template<template< typename U, typename V, typename...Args > class Obje

    This enumeration lists the parser events that can trigger calling a callback function of type parser_callback_t during parsing.

    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    18  std::cout << j_nested_object << '\n';
    19  std::cout << j_nested_array << '\n';
    20 }
    -
    basic_json<> json
    default JSON class
    Definition: json.hpp:7799
    +
    basic_json<> json
    default JSON class
    Definition: json.hpp:7811
    a class to store JSON values
    Definition: json.hpp:187
    namespace for Niels Lohmann
    Definition: json.hpp:78
    Output (play with this example online):
    {}
    @@ -332,7 +332,7 @@ initializer list"
     
    See also
    array(std::initializer_list<basic_json>) – create a JSON array value from an initializer list
    object(std::initializer_list<basic_json>) – create a JSON object value from an initializer list
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1377 of file json.hpp.

    @@ -344,7 +344,7 @@ initializer list" diff --git a/classnlohmann_1_1basic__json_af2730bc8ffa6b28916875c13ee7b83f5.html b/classnlohmann_1_1basic__json_af2730bc8ffa6b28916875c13ee7b83f5.html index c3a1ec500..64f9e0418 100644 --- a/classnlohmann_1_1basic__json_af2730bc8ffa6b28916875c13ee7b83f5.html +++ b/classnlohmann_1_1basic__json_af2730bc8ffa6b28916875c13ee7b83f5.html @@ -317,12 +317,12 @@ template<template< typename U, typename V, typename...Args > class Obje
    45  json j_filtered = json::parse(text, cb);
    46  std::cout << std::setw(4) << j_filtered << '\n';
    47 }
    -
    basic_json<> json
    default JSON class
    Definition: json.hpp:7799
    +
    basic_json<> json
    default JSON class
    Definition: json.hpp:7811
    a class to store JSON values
    Definition: json.hpp:187
    std::function< bool(int depth, parse_event_t event, basic_json &parsed)> parser_callback_t
    per-element parser callback type
    Definition: json.hpp:819
    namespace for Niels Lohmann
    Definition: json.hpp:78
    the parser read a key of a value in an object
    -
    static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
    deserialize from string
    Definition: json.hpp:4948
    +
    static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
    deserialize from string
    Definition: json.hpp:4955
    parse_event_t
    JSON callback events.
    Definition: json.hpp:754
    Output (play with this example online):
    {
         "Image": {
    @@ -360,9 +360,9 @@ template<template< typename U, typename V, typename...Args > class Obje
     }
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/parse__string__parser_callback_t.cpp -o parse__string__parser_callback_t 
    See also
    parse(std::istream&, parser_callback_t) for a version that reads from an input stream
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4948 of file json.hpp.

    +

    Definition at line 4955 of file json.hpp.

    @@ -372,7 +372,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_af661bc209bf22097e2f76607a11b56bf.html b/classnlohmann_1_1basic__json_af661bc209bf22097e2f76607a11b56bf.html index 98332bc96..bc77cc6ea 100644 --- a/classnlohmann_1_1basic__json_af661bc209bf22097e2f76607a11b56bf.html +++ b/classnlohmann_1_1basic__json_af661bc209bf22097e2f76607a11b56bf.html @@ -288,7 +288,7 @@ false false false
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/is_boolean.cpp -o is_boolean 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1976 of file json.hpp.

    @@ -300,7 +300,7 @@ false diff --git a/classnlohmann_1_1basic__json_af6b6050ccd906dddf7c9f47fe3ad62a5.html b/classnlohmann_1_1basic__json_af6b6050ccd906dddf7c9f47fe3ad62a5.html index d85756aed..ca1c29a4a 100644 --- a/classnlohmann_1_1basic__json_af6b6050ccd906dddf7c9f47fe3ad62a5.html +++ b/classnlohmann_1_1basic__json_af6b6050ccd906dddf7c9f47fe3ad62a5.html @@ -294,7 +294,7 @@ template<template< typename U, typename V, typename...Args > class Obje Output (play with this example online):
    "third"
     out of range
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/at__size_type_const.cpp -o at__size_type_const 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2663 of file json.hpp.

    @@ -306,7 +306,7 @@ out of range diff --git a/classnlohmann_1_1basic__json_af709c079de0ac3507143ea2c60699bd0.html b/classnlohmann_1_1basic__json_af709c079de0ac3507143ea2c60699bd0.html index acb14a0e8..09f7e79b7 100644 --- a/classnlohmann_1_1basic__json_af709c079de0ac3507143ea2c60699bd0.html +++ b/classnlohmann_1_1basic__json_af709c079de0ac3507143ea2c60699bd0.html @@ -329,7 +329,7 @@ null: null boolean: true array: [1,2,3,4,5] The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/operator__ValueType.cpp -o operator__ValueType 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2582 of file json.hpp.

    @@ -341,7 +341,7 @@ array: [1,2,3,4,5] diff --git a/classnlohmann_1_1basic__json_af74581d177dafc38df5a126ccd358999.html b/classnlohmann_1_1basic__json_af74581d177dafc38df5a126ccd358999.html index cdd9253fb..a35cd0b7c 100644 --- a/classnlohmann_1_1basic__json_af74581d177dafc38df5a126ccd358999.html +++ b/classnlohmann_1_1basic__json_af74581d177dafc38df5a126ccd358999.html @@ -321,7 +321,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    See also
    at(const typename object_t::key_type&) for access by reference with range checking
    value() for access by value with a default value
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 2887 of file json.hpp.

    @@ -333,7 +333,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_af7d0adc984d04fc70c3d29fcd63e096a.html b/classnlohmann_1_1basic__json_af7d0adc984d04fc70c3d29fcd63e096a.html index eac544ced..ba12c9267 100644 --- a/classnlohmann_1_1basic__json_af7d0adc984d04fc70c3d29fcd63e096a.html +++ b/classnlohmann_1_1basic__json_af7d0adc984d04fc70c3d29fcd63e096a.html @@ -271,7 +271,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    Returns
    iterator pointing to the inserted val.
    Exceptions
    Enumerator
    object_start 

    the parser read { and started to process a JSON object

    @@ -279,7 +279,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_af073eec08d2e68924098aef09e9a10ba.html b/classnlohmann_1_1basic__json_af073eec08d2e68924098aef09e9a10ba.html index 5ef5ca952..fb46d729a 100644 --- a/classnlohmann_1_1basic__json_af073eec08d2e68924098aef09e9a10ba.html +++ b/classnlohmann_1_1basic__json_af073eec08d2e68924098aef09e9a10ba.html @@ -277,13 +277,13 @@ template<template< typename U, typename V, typename...Args > class Obje
    17 }
    a class to store JSON values
    Definition: json.hpp:187
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    void swap(reference other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    exchanges the values
    Definition: json.hpp:4427
    +
    void swap(reference other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    exchanges the values
    Definition: json.hpp:4431
    Output (play with this example online):
    j1 = {"e":2.71828182845905,"pi":3.14159265358979}
     j2 = [1,2,3,4,5]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/swap__reference.cpp -o swap__reference 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 4427 of file json.hpp.

    +

    Definition at line 4431 of file json.hpp.

    @@ -293,7 +293,7 @@ j2 = [1,2,3,4,5] diff --git a/classnlohmann_1_1basic__json_af0ebd1757acb971a6504b4acabf88584.html b/classnlohmann_1_1basic__json_af0ebd1757acb971a6504b4acabf88584.html index abec97ad2..b9f3b7f80 100644 --- a/classnlohmann_1_1basic__json_af0ebd1757acb971a6504b4acabf88584.html +++ b/classnlohmann_1_1basic__json_af0ebd1757acb971a6504b4acabf88584.html @@ -281,7 +281,7 @@ Illustration from cppreference.com
    a template for a reverse iterator class
    Definition: json.hpp:232
    Output (play with this example online):
    5
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/rbegin.cpp -o rbegin 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 3697 of file json.hpp.

    @@ -293,7 +293,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_af127fb69c580c17821da5f5be57e3585.html b/classnlohmann_1_1basic__json_af127fb69c580c17821da5f5be57e3585.html index ce198f61d..092a09610 100644 --- a/classnlohmann_1_1basic__json_af127fb69c580c17821da5f5be57e3585.html +++ b/classnlohmann_1_1basic__json_af127fb69c580c17821da5f5be57e3585.html @@ -283,7 +283,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    See also
    basic_json(const string_t&) – create a string value
    basic_json(const CompatibleStringType&) – create a string value from a compatible string container
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1082 of file json.hpp.

    @@ -295,7 +295,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_af1e3f9e079136abca2530c8191c56292.html b/classnlohmann_1_1basic__json_af1e3f9e079136abca2530c8191c56292.html index c76486314..f9814c9ec 100644 --- a/classnlohmann_1_1basic__json_af1e3f9e079136abca2530c8191c56292.html +++ b/classnlohmann_1_1basic__json_af1e3f9e079136abca2530c8191c56292.html @@ -320,7 +320,7 @@ initializer list"
    - +
    std::domain_errorif called on JSON values other than arrays
    std::domain_errorif called on JSON values other than arrays; example: "cannot use insert() with string"
    std::domain_errorif pos is not an iterator of *this; example: "iterator does not fit current value"
    @@ -300,7 +300,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    Output (play with this example online):
    10
     [1,2,10,3,4]
     
    The example code above can be translated with
    g++ -std=c++11 -Isrc doc/examples/insert.cpp -o insert 
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 4230 of file json.hpp.

    @@ -312,7 +312,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_afc4223b5ad03b1b76e925374a8fff98e.html b/classnlohmann_1_1basic__json_afc4223b5ad03b1b76e925374a8fff98e.html index a875a07c3..4a5913a55 100644 --- a/classnlohmann_1_1basic__json_afc4223b5ad03b1b76e925374a8fff98e.html +++ b/classnlohmann_1_1basic__json_afc4223b5ad03b1b76e925374a8fff98e.html @@ -293,7 +293,7 @@ template<template< typename U, typename V, typename...Args > class Obje
    See also
    basic_json(std::initializer_list<basic_json>, bool, value_t) – create a JSON value from an initializer list
    object(std::initializer_list<basic_json>) – create a JSON object value from an initializer list
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0

    Definition at line 1467 of file json.hpp.

    @@ -305,7 +305,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 9fc0b842f..c710c0bc0 100644 --- a/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -92,7 +92,7 @@ Files diff --git a/functions.html b/functions.html index 51eff1a76..68abab915 100644 --- a/functions.html +++ b/functions.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_b.html b/functions_b.html index 69d4c92c5..05ba8a81a 100644 --- a/functions_b.html +++ b/functions_b.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_c.html b/functions_c.html index ba7573a5e..9e51e6696 100644 --- a/functions_c.html +++ b/functions_c.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_d.html b/functions_d.html index 234353a0b..0aeee2eb6 100644 --- a/functions_d.html +++ b/functions_d.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_e.html b/functions_e.html index 07e46ca87..1fc3004ff 100644 --- a/functions_e.html +++ b/functions_e.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_enum.html b/functions_enum.html index 8c5f8c423..ad0573c0f 100644 --- a/functions_enum.html +++ b/functions_enum.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_f.html b/functions_f.html index d8b54ad6a..f84777e6b 100644 --- a/functions_f.html +++ b/functions_f.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func.html b/functions_func.html index d51278fb6..dcbe6c67d 100644 --- a/functions_func.html +++ b/functions_func.html @@ -413,7 +413,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_g.html b/functions_g.html index 749e317fa..8fbb186a7 100644 --- a/functions_g.html +++ b/functions_g.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_i.html b/functions_i.html index 01c1f9988..08ba5a6ed 100644 --- a/functions_i.html +++ b/functions_i.html @@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_j.html b/functions_j.html index afb2d275f..755aae3d5 100644 --- a/functions_j.html +++ b/functions_j.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_k.html b/functions_k.html index 0f365e142..242f19a6c 100644 --- a/functions_k.html +++ b/functions_k.html @@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_m.html b/functions_m.html index 8476fc725..77447ed34 100644 --- a/functions_m.html +++ b/functions_m.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_n.html b/functions_n.html index 162a8488f..eb199c5c2 100644 --- a/functions_n.html +++ b/functions_n.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_o.html b/functions_o.html index 0cbed62fb..a3a3c33fa 100644 --- a/functions_o.html +++ b/functions_o.html @@ -216,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_p.html b/functions_p.html index 505121456..075fa8f14 100644 --- a/functions_p.html +++ b/functions_p.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_r.html b/functions_r.html index 6a5da7564..59d35d45c 100644 --- a/functions_r.html +++ b/functions_r.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_rela.html b/functions_rela.html index 48ab084f7..b78999079 100644 --- a/functions_rela.html +++ b/functions_rela.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_s.html b/functions_s.html index cf313f2fd..8346cd9d4 100644 --- a/functions_s.html +++ b/functions_s.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_t.html b/functions_t.html index 6a834d047..73cdc6b8c 100644 --- a/functions_t.html +++ b/functions_t.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_type.html b/functions_type.html index 91fad4629..ae8cf8be5 100644 --- a/functions_type.html +++ b/functions_type.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_v.html b/functions_v.html index dfd0e51e1..a134ac608 100644 --- a/functions_v.html +++ b/functions_v.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_~.html b/functions_~.html index cf328b8ad..4f85e351a 100644 --- a/functions_~.html +++ b/functions_~.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/graph_legend.html b/graph_legend.html index a9d8aedc4..d0413b1b3 100644 --- a/graph_legend.html +++ b/graph_legend.html @@ -142,7 +142,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem diff --git a/hierarchy.html b/hierarchy.html index ca13d8a39..ede1b7478 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/index.html b/index.html index 5e8717c7d..15a77b69f 100644 --- a/index.html +++ b/index.html @@ -88,11 +88,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); 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.
    Author
    Niels Lohmann
    See also
    https://github.com/nlohmann/json to download the source code
    -
    Version
    1.0
    +
    Version
    1.0.0
    diff --git a/json_8hpp_source.html b/json_8hpp_source.html index 3baa5dbfa..11604e6df 100644 --- a/json_8hpp_source.html +++ b/json_8hpp_source.html @@ -1649,185 +1649,185 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    3880  }
    3881  }
    3882 
    -
    3912  size_type size() const noexcept
    -
    3913  {
    -
    3914  switch (m_type)
    -
    3915  {
    -
    3916  case value_t::null:
    -
    3917  {
    -
    3918  // null values are empty
    -
    3919  return 0;
    -
    3920  }
    -
    3921 
    -
    3922  case value_t::array:
    -
    3923  {
    -
    3924  return m_value.array->size();
    -
    3925  }
    -
    3926 
    -
    3927  case value_t::object:
    -
    3928  {
    -
    3929  return m_value.object->size();
    -
    3930  }
    -
    3931 
    -
    3932  default:
    -
    3933  {
    -
    3934  // all other types have size 1
    -
    3935  return 1;
    -
    3936  }
    -
    3937  }
    -
    3938  }
    -
    3939 
    -
    3972  size_type max_size() const noexcept
    -
    3973  {
    -
    3974  switch (m_type)
    -
    3975  {
    -
    3976  case value_t::array:
    -
    3977  {
    -
    3978  return m_value.array->max_size();
    -
    3979  }
    -
    3980 
    -
    3981  case value_t::object:
    -
    3982  {
    -
    3983  return m_value.object->max_size();
    -
    3984  }
    -
    3985 
    -
    3986  default:
    -
    3987  {
    -
    3988  // all other types have max_size() == size()
    -
    3989  return size();
    -
    3990  }
    -
    3991  }
    -
    3992  }
    -
    3993 
    +
    3911  size_type size() const noexcept
    +
    3912  {
    +
    3913  switch (m_type)
    +
    3914  {
    +
    3915  case value_t::null:
    +
    3916  {
    +
    3917  // null values are empty
    +
    3918  return 0;
    +
    3919  }
    +
    3920 
    +
    3921  case value_t::array:
    +
    3922  {
    +
    3923  return m_value.array->size();
    +
    3924  }
    +
    3925 
    +
    3926  case value_t::object:
    +
    3927  {
    +
    3928  return m_value.object->size();
    +
    3929  }
    +
    3930 
    +
    3931  default:
    +
    3932  {
    +
    3933  // all other types have size 1
    +
    3934  return 1;
    +
    3935  }
    +
    3936  }
    +
    3937  }
    +
    3938 
    +
    3971  size_type max_size() const noexcept
    +
    3972  {
    +
    3973  switch (m_type)
    +
    3974  {
    +
    3975  case value_t::array:
    +
    3976  {
    +
    3977  return m_value.array->max_size();
    +
    3978  }
    +
    3979 
    +
    3980  case value_t::object:
    +
    3981  {
    +
    3982  return m_value.object->max_size();
    +
    3983  }
    +
    3984 
    +
    3985  default:
    +
    3986  {
    +
    3987  // all other types have max_size() == size()
    +
    3988  return size();
    +
    3989  }
    +
    3990  }
    +
    3991  }
    +
    3992 
    +
    3994 
    3995 
    -
    3996 
    -
    3998  // modifiers //
    -
    4000 
    -
    4003 
    -
    4029  void clear() noexcept
    -
    4030  {
    -
    4031  switch (m_type)
    -
    4032  {
    -
    4033  case value_t::number_integer:
    -
    4034  {
    -
    4035  m_value.number_integer = 0;
    -
    4036  break;
    -
    4037  }
    -
    4038 
    -
    4039  case value_t::number_float:
    -
    4040  {
    -
    4041  m_value.number_float = 0.0;
    -
    4042  break;
    -
    4043  }
    -
    4044 
    -
    4045  case value_t::boolean:
    -
    4046  {
    -
    4047  m_value.boolean = false;
    -
    4048  break;
    -
    4049  }
    -
    4050 
    -
    4051  case value_t::string:
    -
    4052  {
    -
    4053  m_value.string->clear();
    -
    4054  break;
    -
    4055  }
    -
    4056 
    -
    4057  case value_t::array:
    -
    4058  {
    -
    4059  m_value.array->clear();
    -
    4060  break;
    -
    4061  }
    -
    4062 
    -
    4063  case value_t::object:
    -
    4064  {
    -
    4065  m_value.object->clear();
    -
    4066  break;
    -
    4067  }
    -
    4068 
    -
    4069  default:
    -
    4070  {
    -
    4071  break;
    -
    4072  }
    -
    4073  }
    -
    4074  }
    -
    4075 
    -
    4096  void push_back(basic_json&& val)
    -
    4097  {
    -
    4098  // push_back only works for null objects or arrays
    -
    4099  if (not(is_null() or is_array()))
    -
    4100  {
    -
    4101  throw std::domain_error("cannot use push_back() with " + type_name());
    -
    4102  }
    -
    4103 
    -
    4104  // transform null object into an array
    -
    4105  if (is_null())
    -
    4106  {
    -
    4107  m_type = value_t::array;
    -
    4108  m_value = value_t::array;
    -
    4109  }
    -
    4110 
    -
    4111  // add element to array (move semantics)
    -
    4112  m_value.array->push_back(std::move(val));
    -
    4113  // invalidate object
    -
    4114  val.m_type = value_t::null;
    -
    4115  }
    -
    4116 
    -
    4121  reference operator+=(basic_json&& val)
    -
    4122  {
    -
    4123  push_back(std::move(val));
    -
    4124  return *this;
    -
    4125  }
    -
    4126 
    -
    4131  void push_back(const basic_json& val)
    -
    4132  {
    -
    4133  // push_back only works for null objects or arrays
    -
    4134  if (not(is_null() or is_array()))
    -
    4135  {
    -
    4136  throw std::domain_error("cannot use push_back() with " + type_name());
    -
    4137  }
    -
    4138 
    -
    4139  // transform null object into an array
    -
    4140  if (is_null())
    -
    4141  {
    -
    4142  m_type = value_t::array;
    -
    4143  m_value = value_t::array;
    -
    4144  }
    -
    4145 
    -
    4146  // add element to array
    -
    4147  m_value.array->push_back(val);
    -
    4148  }
    -
    4149 
    -
    4154  reference operator+=(const basic_json& val)
    -
    4155  {
    -
    4156  push_back(val);
    -
    4157  return *this;
    -
    4158  }
    -
    4159 
    -
    4180  void push_back(const typename object_t::value_type& val)
    -
    4181  {
    -
    4182  // push_back only works for null objects or objects
    -
    4183  if (not(is_null() or is_object()))
    -
    4184  {
    -
    4185  throw std::domain_error("cannot use push_back() with " + type_name());
    -
    4186  }
    -
    4187 
    -
    4188  // transform null object into an object
    -
    4189  if (is_null())
    -
    4190  {
    -
    4191  m_type = value_t::object;
    -
    4192  m_value = value_t::object;
    -
    4193  }
    -
    4194 
    -
    4195  // add element to array
    -
    4196  m_value.object->insert(val);
    -
    4197  }
    -
    4198 
    -
    4203  reference operator+=(const typename object_t::value_type& val)
    -
    4204  {
    -
    4205  push_back(val);
    -
    4206  return operator[](val.first);
    -
    4207  }
    -
    4208 
    +
    3997  // modifiers //
    +
    3999 
    +
    4002 
    +
    4028  void clear() noexcept
    +
    4029  {
    +
    4030  switch (m_type)
    +
    4031  {
    +
    4032  case value_t::number_integer:
    +
    4033  {
    +
    4034  m_value.number_integer = 0;
    +
    4035  break;
    +
    4036  }
    +
    4037 
    +
    4038  case value_t::number_float:
    +
    4039  {
    +
    4040  m_value.number_float = 0.0;
    +
    4041  break;
    +
    4042  }
    +
    4043 
    +
    4044  case value_t::boolean:
    +
    4045  {
    +
    4046  m_value.boolean = false;
    +
    4047  break;
    +
    4048  }
    +
    4049 
    +
    4050  case value_t::string:
    +
    4051  {
    +
    4052  m_value.string->clear();
    +
    4053  break;
    +
    4054  }
    +
    4055 
    +
    4056  case value_t::array:
    +
    4057  {
    +
    4058  m_value.array->clear();
    +
    4059  break;
    +
    4060  }
    +
    4061 
    +
    4062  case value_t::object:
    +
    4063  {
    +
    4064  m_value.object->clear();
    +
    4065  break;
    +
    4066  }
    +
    4067 
    +
    4068  default:
    +
    4069  {
    +
    4070  break;
    +
    4071  }
    +
    4072  }
    +
    4073  }
    +
    4074 
    +
    4095  void push_back(basic_json&& val)
    +
    4096  {
    +
    4097  // push_back only works for null objects or arrays
    +
    4098  if (not(is_null() or is_array()))
    +
    4099  {
    +
    4100  throw std::domain_error("cannot use push_back() with " + type_name());
    +
    4101  }
    +
    4102 
    +
    4103  // transform null object into an array
    +
    4104  if (is_null())
    +
    4105  {
    +
    4106  m_type = value_t::array;
    +
    4107  m_value = value_t::array;
    +
    4108  }
    +
    4109 
    +
    4110  // add element to array (move semantics)
    +
    4111  m_value.array->push_back(std::move(val));
    +
    4112  // invalidate object
    +
    4113  val.m_type = value_t::null;
    +
    4114  }
    +
    4115 
    +
    4120  reference operator+=(basic_json&& val)
    +
    4121  {
    +
    4122  push_back(std::move(val));
    +
    4123  return *this;
    +
    4124  }
    +
    4125 
    +
    4130  void push_back(const basic_json& val)
    +
    4131  {
    +
    4132  // push_back only works for null objects or arrays
    +
    4133  if (not(is_null() or is_array()))
    +
    4134  {
    +
    4135  throw std::domain_error("cannot use push_back() with " + type_name());
    +
    4136  }
    +
    4137 
    +
    4138  // transform null object into an array
    +
    4139  if (is_null())
    +
    4140  {
    +
    4141  m_type = value_t::array;
    +
    4142  m_value = value_t::array;
    +
    4143  }
    +
    4144 
    +
    4145  // add element to array
    +
    4146  m_value.array->push_back(val);
    +
    4147  }
    +
    4148 
    +
    4153  reference operator+=(const basic_json& val)
    +
    4154  {
    +
    4155  push_back(val);
    +
    4156  return *this;
    +
    4157  }
    +
    4158 
    +
    4179  void push_back(const typename object_t::value_type& val)
    +
    4180  {
    +
    4181  // push_back only works for null objects or objects
    +
    4182  if (not(is_null() or is_object()))
    +
    4183  {
    +
    4184  throw std::domain_error("cannot use push_back() with " + type_name());
    +
    4185  }
    +
    4186 
    +
    4187  // transform null object into an object
    +
    4188  if (is_null())
    +
    4189  {
    +
    4190  m_type = value_t::object;
    +
    4191  m_value = value_t::object;
    +
    4192  }
    +
    4193 
    +
    4194  // add element to array
    +
    4195  m_value.object->insert(val);
    +
    4196  }
    +
    4197 
    +
    4202  reference operator+=(const typename object_t::value_type& val)
    +
    4203  {
    +
    4204  push_back(val);
    +
    4205  return operator[](val.first);
    +
    4206  }
    +
    4207 
    4230  iterator insert(const_iterator pos, const basic_json& val)
    4231  {
    4232  // insert only works for arrays
    @@ -1855,1612 +1855,1601 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    4258  return insert(pos, val);
    4259  }
    4260 
    -
    4284  iterator insert(const_iterator pos, size_type cnt, const basic_json& val)
    -
    4285  {
    -
    4286  // insert only works for arrays
    -
    4287  if (is_array())
    -
    4288  {
    -
    4289  // check if iterator pos fits to this JSON value
    -
    4290  if (pos.m_object != this)
    -
    4291  {
    -
    4292  throw std::domain_error("iterator does not fit current value");
    -
    4293  }
    -
    4294 
    -
    4295  // insert to array and return iterator
    -
    4296  iterator result(this);
    -
    4297  result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);
    -
    4298  return result;
    -
    4299  }
    -
    4300  else
    -
    4301  {
    -
    4302  throw std::domain_error("cannot use insert() with " + type_name());
    -
    4303  }
    -
    4304  }
    -
    4305 
    -
    4335  iterator insert(const_iterator pos, const_iterator first, const_iterator last)
    -
    4336  {
    -
    4337  // insert only works for arrays
    -
    4338  if (not is_array())
    -
    4339  {
    -
    4340  throw std::domain_error("cannot use insert() with " + type_name());
    -
    4341  }
    -
    4342 
    -
    4343  // check if iterator pos fits to this JSON value
    -
    4344  if (pos.m_object != this)
    -
    4345  {
    -
    4346  throw std::domain_error("iterator does not fit current value");
    -
    4347  }
    -
    4348 
    -
    4349  if (first.m_object != last.m_object)
    -
    4350  {
    -
    4351  throw std::domain_error("iterators do not fit");
    -
    4352  }
    -
    4353 
    -
    4354  if (first.m_object == this or last.m_object == this)
    -
    4355  {
    -
    4356  throw std::domain_error("passed iterators may not belong to container");
    -
    4357  }
    -
    4358 
    -
    4359  // insert to array and return iterator
    -
    4360  iterator result(this);
    -
    4361  result.m_it.array_iterator = m_value.array->insert(
    -
    4362  pos.m_it.array_iterator,
    -
    4363  first.m_it.array_iterator,
    -
    4364  last.m_it.array_iterator);
    -
    4365  return result;
    -
    4366  }
    -
    4367 
    -
    4390  iterator insert(const_iterator pos, std::initializer_list<basic_json> ilist)
    -
    4391  {
    -
    4392  // insert only works for arrays
    -
    4393  if (not is_array())
    -
    4394  {
    -
    4395  throw std::domain_error("cannot use insert() with " + type_name());
    -
    4396  }
    -
    4397 
    -
    4398  // check if iterator pos fits to this JSON value
    -
    4399  if (pos.m_object != this)
    -
    4400  {
    -
    4401  throw std::domain_error("iterator does not fit current value");
    -
    4402  }
    -
    4403 
    -
    4404  // insert to array and return iterator
    -
    4405  iterator result(this);
    -
    4406  result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, ilist);
    -
    4407  return result;
    -
    4408  }
    -
    4409 
    -
    4427  void swap(reference other) noexcept (
    -
    4428  std::is_nothrow_move_constructible<value_t>::value and
    -
    4429  std::is_nothrow_move_assignable<value_t>::value and
    -
    4430  std::is_nothrow_move_constructible<json_value>::value and
    -
    4431  std::is_nothrow_move_assignable<json_value>::value
    -
    4432  )
    -
    4433  {
    -
    4434  std::swap(m_type, other.m_type);
    -
    4435  std::swap(m_value, other.m_value);
    -
    4436  }
    -
    4437 
    -
    4457  void swap(array_t& other)
    -
    4458  {
    -
    4459  // swap only works for arrays
    -
    4460  if (is_array())
    -
    4461  {
    -
    4462  std::swap(*(m_value.array), other);
    -
    4463  }
    -
    4464  else
    -
    4465  {
    -
    4466  throw std::domain_error("cannot use swap() with " + type_name());
    -
    4467  }
    -
    4468  }
    -
    4469 
    -
    4489  void swap(object_t& other)
    -
    4490  {
    -
    4491  // swap only works for objects
    -
    4492  if (is_object())
    -
    4493  {
    -
    4494  std::swap(*(m_value.object), other);
    -
    4495  }
    -
    4496  else
    -
    4497  {
    -
    4498  throw std::domain_error("cannot use swap() with " + type_name());
    -
    4499  }
    -
    4500  }
    -
    4501 
    -
    4521  void swap(string_t& other)
    -
    4522  {
    -
    4523  // swap only works for strings
    -
    4524  if (is_string())
    -
    4525  {
    -
    4526  std::swap(*(m_value.string), other);
    -
    4527  }
    -
    4528  else
    -
    4529  {
    -
    4530  throw std::domain_error("cannot use swap() with " + type_name());
    -
    4531  }
    -
    4532  }
    -
    4533 
    -
    4535 
    -
    4536 
    -
    4538  // lexicographical comparison operators //
    -
    4540 
    +
    4285  iterator insert(const_iterator pos, size_type cnt, const basic_json& val)
    +
    4286  {
    +
    4287  // insert only works for arrays
    +
    4288  if (is_array())
    +
    4289  {
    +
    4290  // check if iterator pos fits to this JSON value
    +
    4291  if (pos.m_object != this)
    +
    4292  {
    +
    4293  throw std::domain_error("iterator does not fit current value");
    +
    4294  }
    +
    4295 
    +
    4296  // insert to array and return iterator
    +
    4297  iterator result(this);
    +
    4298  result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);
    +
    4299  return result;
    +
    4300  }
    +
    4301  else
    +
    4302  {
    +
    4303  throw std::domain_error("cannot use insert() with " + type_name());
    +
    4304  }
    +
    4305  }
    +
    4306 
    +
    4337  iterator insert(const_iterator pos, const_iterator first, const_iterator last)
    +
    4338  {
    +
    4339  // insert only works for arrays
    +
    4340  if (not is_array())
    +
    4341  {
    +
    4342  throw std::domain_error("cannot use insert() with " + type_name());
    +
    4343  }
    +
    4344 
    +
    4345  // check if iterator pos fits to this JSON value
    +
    4346  if (pos.m_object != this)
    +
    4347  {
    +
    4348  throw std::domain_error("iterator does not fit current value");
    +
    4349  }
    +
    4350 
    +
    4351  if (first.m_object != last.m_object)
    +
    4352  {
    +
    4353  throw std::domain_error("iterators do not fit");
    +
    4354  }
    +
    4355 
    +
    4356  if (first.m_object == this or last.m_object == this)
    +
    4357  {
    +
    4358  throw std::domain_error("passed iterators may not belong to container");
    +
    4359  }
    +
    4360 
    +
    4361  // insert to array and return iterator
    +
    4362  iterator result(this);
    +
    4363  result.m_it.array_iterator = m_value.array->insert(
    +
    4364  pos.m_it.array_iterator,
    +
    4365  first.m_it.array_iterator,
    +
    4366  last.m_it.array_iterator);
    +
    4367  return result;
    +
    4368  }
    +
    4369 
    +
    4394  iterator insert(const_iterator pos, std::initializer_list<basic_json> ilist)
    +
    4395  {
    +
    4396  // insert only works for arrays
    +
    4397  if (not is_array())
    +
    4398  {
    +
    4399  throw std::domain_error("cannot use insert() with " + type_name());
    +
    4400  }
    +
    4401 
    +
    4402  // check if iterator pos fits to this JSON value
    +
    4403  if (pos.m_object != this)
    +
    4404  {
    +
    4405  throw std::domain_error("iterator does not fit current value");
    +
    4406  }
    +
    4407 
    +
    4408  // insert to array and return iterator
    +
    4409  iterator result(this);
    +
    4410  result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, ilist);
    +
    4411  return result;
    +
    4412  }
    +
    4413 
    +
    4431  void swap(reference other) noexcept (
    +
    4432  std::is_nothrow_move_constructible<value_t>::value and
    +
    4433  std::is_nothrow_move_assignable<value_t>::value and
    +
    4434  std::is_nothrow_move_constructible<json_value>::value and
    +
    4435  std::is_nothrow_move_assignable<json_value>::value
    +
    4436  )
    +
    4437  {
    +
    4438  std::swap(m_type, other.m_type);
    +
    4439  std::swap(m_value, other.m_value);
    +
    4440  }
    +
    4441 
    +
    4462  void swap(array_t& other)
    +
    4463  {
    +
    4464  // swap only works for arrays
    +
    4465  if (is_array())
    +
    4466  {
    +
    4467  std::swap(*(m_value.array), other);
    +
    4468  }
    +
    4469  else
    +
    4470  {
    +
    4471  throw std::domain_error("cannot use swap() with " + type_name());
    +
    4472  }
    +
    4473  }
    +
    4474 
    +
    4495  void swap(object_t& other)
    +
    4496  {
    +
    4497  // swap only works for objects
    +
    4498  if (is_object())
    +
    4499  {
    +
    4500  std::swap(*(m_value.object), other);
    +
    4501  }
    +
    4502  else
    +
    4503  {
    +
    4504  throw std::domain_error("cannot use swap() with " + type_name());
    +
    4505  }
    +
    4506  }
    +
    4507 
    +
    4528  void swap(string_t& other)
    +
    4529  {
    +
    4530  // swap only works for strings
    +
    4531  if (is_string())
    +
    4532  {
    +
    4533  std::swap(*(m_value.string), other);
    +
    4534  }
    +
    4535  else
    +
    4536  {
    +
    4537  throw std::domain_error("cannot use swap() with " + type_name());
    +
    4538  }
    +
    4539  }
    +
    4540 
    +
    4542 
    4543 
    -
    4544  private:
    -
    4554  friend bool operator<(const value_t lhs, const value_t rhs)
    -
    4555  {
    -
    4556  static constexpr std::array<uint8_t, 7> order = {{
    -
    4557  0, // null
    -
    4558  3, // object
    -
    4559  4, // array
    -
    4560  5, // string
    -
    4561  1, // boolean
    -
    4562  2, // integer
    -
    4563  2 // float
    -
    4564  }
    -
    4565  };
    -
    4566 
    -
    4567  // discarded values are not comparable
    -
    4568  if (lhs == value_t::discarded or rhs == value_t::discarded)
    -
    4569  {
    -
    4570  return false;
    -
    4571  }
    -
    4572 
    -
    4573  return order[static_cast<std::size_t>(lhs)] < order[static_cast<std::size_t>(rhs)];
    -
    4574  }
    -
    4575 
    -
    4576  public:
    -
    4600  friend bool operator==(const_reference lhs, const_reference rhs) noexcept
    -
    4601  {
    -
    4602  const auto lhs_type = lhs.type();
    -
    4603  const auto rhs_type = rhs.type();
    -
    4604 
    -
    4605  if (lhs_type == rhs_type)
    -
    4606  {
    -
    4607  switch (lhs_type)
    -
    4608  {
    -
    4609  case value_t::array:
    -
    4610  return *lhs.m_value.array == *rhs.m_value.array;
    -
    4611  case value_t::object:
    -
    4612  return *lhs.m_value.object == *rhs.m_value.object;
    -
    4613  case value_t::null:
    -
    4614  return true;
    -
    4615  case value_t::string:
    -
    4616  return *lhs.m_value.string == *rhs.m_value.string;
    -
    4617  case value_t::boolean:
    -
    4618  return lhs.m_value.boolean == rhs.m_value.boolean;
    -
    4619  case value_t::number_integer:
    -
    4620  return lhs.m_value.number_integer == rhs.m_value.number_integer;
    -
    4621  case value_t::number_float:
    -
    4622  return approx(lhs.m_value.number_float, rhs.m_value.number_float);
    -
    4623  default:
    -
    4624  return false;
    -
    4625  }
    -
    4626  }
    -
    4627  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
    -
    4628  {
    -
    4629  return approx(static_cast<number_float_t>(lhs.m_value.number_integer),
    -
    4630  rhs.m_value.number_float);
    -
    4631  }
    -
    4632  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
    -
    4633  {
    -
    4634  return approx(lhs.m_value.number_float,
    -
    4635  static_cast<number_float_t>(rhs.m_value.number_integer));
    -
    4636  }
    -
    4637  return false;
    -
    4638  }
    -
    4639 
    -
    4658  friend bool operator==(const_reference v, std::nullptr_t) noexcept
    -
    4659  {
    -
    4660  return v.is_null();
    -
    4661  }
    -
    4662 
    -
    4667  friend bool operator==(std::nullptr_t, const_reference v) noexcept
    -
    4668  {
    -
    4669  return v.is_null();
    -
    4670  }
    -
    4671 
    -
    4688  friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
    -
    4689  {
    -
    4690  return not (lhs == rhs);
    -
    4691  }
    -
    4692 
    -
    4711  friend bool operator!=(const_reference v, std::nullptr_t) noexcept
    -
    4712  {
    -
    4713  return not v.is_null();
    -
    4714  }
    -
    4715 
    -
    4720  friend bool operator!=(std::nullptr_t, const_reference v) noexcept
    -
    4721  {
    -
    4722  return not v.is_null();
    -
    4723  }
    -
    4724 
    -
    4749  friend bool operator<(const_reference lhs, const_reference rhs) noexcept
    -
    4750  {
    -
    4751  const auto lhs_type = lhs.type();
    -
    4752  const auto rhs_type = rhs.type();
    -
    4753 
    -
    4754  if (lhs_type == rhs_type)
    -
    4755  {
    -
    4756  switch (lhs_type)
    -
    4757  {
    -
    4758  case value_t::array:
    -
    4759  return *lhs.m_value.array < *rhs.m_value.array;
    -
    4760  case value_t::object:
    -
    4761  return *lhs.m_value.object < *rhs.m_value.object;
    -
    4762  case value_t::null:
    -
    4763  return false;
    -
    4764  case value_t::string:
    -
    4765  return *lhs.m_value.string < *rhs.m_value.string;
    -
    4766  case value_t::boolean:
    -
    4767  return lhs.m_value.boolean < rhs.m_value.boolean;
    -
    4768  case value_t::number_integer:
    -
    4769  return lhs.m_value.number_integer < rhs.m_value.number_integer;
    -
    4770  case value_t::number_float:
    -
    4771  return lhs.m_value.number_float < rhs.m_value.number_float;
    -
    4772  default:
    -
    4773  return false;
    -
    4774  }
    -
    4775  }
    -
    4776  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
    -
    4777  {
    -
    4778  return static_cast<number_float_t>(lhs.m_value.number_integer) <
    -
    4779  rhs.m_value.number_float;
    -
    4780  }
    -
    4781  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
    -
    4782  {
    -
    4783  return lhs.m_value.number_float <
    -
    4784  static_cast<number_float_t>(rhs.m_value.number_integer);
    -
    4785  }
    -
    4786 
    -
    4787  // We only reach this line if we cannot compare values. In that case,
    -
    4788  // we compare types. Note we have to call the operator explicitly,
    -
    4789  // because MSVC has problems otherwise.
    -
    4790  return operator<(lhs_type, rhs_type);
    -
    4791  }
    -
    4792 
    -
    4810  friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
    -
    4811  {
    -
    4812  return not (rhs < lhs);
    -
    4813  }
    -
    4814 
    -
    4832  friend bool operator>(const_reference lhs, const_reference rhs) noexcept
    -
    4833  {
    -
    4834  return not (lhs <= rhs);
    -
    4835  }
    -
    4836 
    -
    4854  friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
    -
    4855  {
    -
    4856  return not (lhs < rhs);
    -
    4857  }
    -
    4858 
    -
    4860 
    -
    4861 
    -
    4863  // serialization //
    -
    4865 
    +
    4545  // lexicographical comparison operators //
    +
    4547 
    +
    4550 
    +
    4551  private:
    +
    4561  friend bool operator<(const value_t lhs, const value_t rhs)
    +
    4562  {
    +
    4563  static constexpr std::array<uint8_t, 7> order = {{
    +
    4564  0, // null
    +
    4565  3, // object
    +
    4566  4, // array
    +
    4567  5, // string
    +
    4568  1, // boolean
    +
    4569  2, // integer
    +
    4570  2 // float
    +
    4571  }
    +
    4572  };
    +
    4573 
    +
    4574  // discarded values are not comparable
    +
    4575  if (lhs == value_t::discarded or rhs == value_t::discarded)
    +
    4576  {
    +
    4577  return false;
    +
    4578  }
    +
    4579 
    +
    4580  return order[static_cast<std::size_t>(lhs)] < order[static_cast<std::size_t>(rhs)];
    +
    4581  }
    +
    4582 
    +
    4583  public:
    +
    4607  friend bool operator==(const_reference lhs, const_reference rhs) noexcept
    +
    4608  {
    +
    4609  const auto lhs_type = lhs.type();
    +
    4610  const auto rhs_type = rhs.type();
    +
    4611 
    +
    4612  if (lhs_type == rhs_type)
    +
    4613  {
    +
    4614  switch (lhs_type)
    +
    4615  {
    +
    4616  case value_t::array:
    +
    4617  return *lhs.m_value.array == *rhs.m_value.array;
    +
    4618  case value_t::object:
    +
    4619  return *lhs.m_value.object == *rhs.m_value.object;
    +
    4620  case value_t::null:
    +
    4621  return true;
    +
    4622  case value_t::string:
    +
    4623  return *lhs.m_value.string == *rhs.m_value.string;
    +
    4624  case value_t::boolean:
    +
    4625  return lhs.m_value.boolean == rhs.m_value.boolean;
    +
    4626  case value_t::number_integer:
    +
    4627  return lhs.m_value.number_integer == rhs.m_value.number_integer;
    +
    4628  case value_t::number_float:
    +
    4629  return approx(lhs.m_value.number_float, rhs.m_value.number_float);
    +
    4630  default:
    +
    4631  return false;
    +
    4632  }
    +
    4633  }
    +
    4634  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
    +
    4635  {
    +
    4636  return approx(static_cast<number_float_t>(lhs.m_value.number_integer),
    +
    4637  rhs.m_value.number_float);
    +
    4638  }
    +
    4639  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
    +
    4640  {
    +
    4641  return approx(lhs.m_value.number_float,
    +
    4642  static_cast<number_float_t>(rhs.m_value.number_integer));
    +
    4643  }
    +
    4644  return false;
    +
    4645  }
    +
    4646 
    +
    4665  friend bool operator==(const_reference v, std::nullptr_t) noexcept
    +
    4666  {
    +
    4667  return v.is_null();
    +
    4668  }
    +
    4669 
    +
    4674  friend bool operator==(std::nullptr_t, const_reference v) noexcept
    +
    4675  {
    +
    4676  return v.is_null();
    +
    4677  }
    +
    4678 
    +
    4695  friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
    +
    4696  {
    +
    4697  return not (lhs == rhs);
    +
    4698  }
    +
    4699 
    +
    4718  friend bool operator!=(const_reference v, std::nullptr_t) noexcept
    +
    4719  {
    +
    4720  return not v.is_null();
    +
    4721  }
    +
    4722 
    +
    4727  friend bool operator!=(std::nullptr_t, const_reference v) noexcept
    +
    4728  {
    +
    4729  return not v.is_null();
    +
    4730  }
    +
    4731 
    +
    4756  friend bool operator<(const_reference lhs, const_reference rhs) noexcept
    +
    4757  {
    +
    4758  const auto lhs_type = lhs.type();
    +
    4759  const auto rhs_type = rhs.type();
    +
    4760 
    +
    4761  if (lhs_type == rhs_type)
    +
    4762  {
    +
    4763  switch (lhs_type)
    +
    4764  {
    +
    4765  case value_t::array:
    +
    4766  return *lhs.m_value.array < *rhs.m_value.array;
    +
    4767  case value_t::object:
    +
    4768  return *lhs.m_value.object < *rhs.m_value.object;
    +
    4769  case value_t::null:
    +
    4770  return false;
    +
    4771  case value_t::string:
    +
    4772  return *lhs.m_value.string < *rhs.m_value.string;
    +
    4773  case value_t::boolean:
    +
    4774  return lhs.m_value.boolean < rhs.m_value.boolean;
    +
    4775  case value_t::number_integer:
    +
    4776  return lhs.m_value.number_integer < rhs.m_value.number_integer;
    +
    4777  case value_t::number_float:
    +
    4778  return lhs.m_value.number_float < rhs.m_value.number_float;
    +
    4779  default:
    +
    4780  return false;
    +
    4781  }
    +
    4782  }
    +
    4783  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
    +
    4784  {
    +
    4785  return static_cast<number_float_t>(lhs.m_value.number_integer) <
    +
    4786  rhs.m_value.number_float;
    +
    4787  }
    +
    4788  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
    +
    4789  {
    +
    4790  return lhs.m_value.number_float <
    +
    4791  static_cast<number_float_t>(rhs.m_value.number_integer);
    +
    4792  }
    +
    4793 
    +
    4794  // We only reach this line if we cannot compare values. In that case,
    +
    4795  // we compare types. Note we have to call the operator explicitly,
    +
    4796  // because MSVC has problems otherwise.
    +
    4797  return operator<(lhs_type, rhs_type);
    +
    4798  }
    +
    4799 
    +
    4817  friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
    +
    4818  {
    +
    4819  return not (rhs < lhs);
    +
    4820  }
    +
    4821 
    +
    4839  friend bool operator>(const_reference lhs, const_reference rhs) noexcept
    +
    4840  {
    +
    4841  return not (lhs <= rhs);
    +
    4842  }
    +
    4843 
    +
    4861  friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
    +
    4862  {
    +
    4863  return not (lhs < rhs);
    +
    4864  }
    +
    4865 
    +
    4867 
    4868 
    -
    4891  friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
    -
    4892  {
    -
    4893  // read width member and use it as indentation parameter if nonzero
    -
    4894  const bool pretty_print = (o.width() > 0);
    -
    4895  const auto indentation = (pretty_print ? o.width() : 0);
    -
    4896 
    -
    4897  // reset width to 0 for subsequent calls to this stream
    -
    4898  o.width(0);
    -
    4899 
    -
    4900  // do the actual serialization
    -
    4901  j.dump(o, pretty_print, static_cast<unsigned int>(indentation));
    -
    4902  return o;
    -
    4903  }
    -
    4904 
    -
    4909  friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
    -
    4910  {
    -
    4911  return o << j;
    -
    4912  }
    -
    4913 
    -
    4915 
    -
    4916 
    -
    4918  // deserialization //
    -
    4920 
    +
    4870  // serialization //
    +
    4872 
    +
    4875 
    +
    4898  friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
    +
    4899  {
    +
    4900  // read width member and use it as indentation parameter if nonzero
    +
    4901  const bool pretty_print = (o.width() > 0);
    +
    4902  const auto indentation = (pretty_print ? o.width() : 0);
    +
    4903 
    +
    4904  // reset width to 0 for subsequent calls to this stream
    +
    4905  o.width(0);
    +
    4906 
    +
    4907  // do the actual serialization
    +
    4908  j.dump(o, pretty_print, static_cast<unsigned int>(indentation));
    +
    4909  return o;
    +
    4910  }
    +
    4911 
    +
    4916  friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
    +
    4917  {
    +
    4918  return o << j;
    +
    4919  }
    +
    4920 
    +
    4922 
    4923 
    -
    4948  static basic_json parse(const string_t& s, parser_callback_t cb = nullptr)
    -
    4949  {
    -
    4950  return parser(s, cb).parse();
    -
    4951  }
    -
    4952 
    -
    4977  static basic_json parse(std::istream& i, parser_callback_t cb = nullptr)
    -
    4978  {
    -
    4979  return parser(i, cb).parse();
    -
    4980  }
    -
    4981 
    -
    4985  static basic_json parse(std::istream&& i, parser_callback_t cb = nullptr)
    -
    4986  {
    -
    4987  return parser(i, cb).parse();
    -
    4988  }
    -
    4989 
    -
    5013  friend std::istream& operator<<(basic_json& j, std::istream& i)
    -
    5014  {
    -
    5015  j = parser(i).parse();
    -
    5016  return i;
    -
    5017  }
    -
    5018 
    -
    5023  friend std::istream& operator>>(std::istream& i, basic_json& j)
    -
    5024  {
    -
    5025  j = parser(i).parse();
    -
    5026  return i;
    -
    5027  }
    -
    5028 
    -
    5030 
    -
    5031 
    -
    5032  private:
    -
    5034  // convenience functions //
    -
    5036 
    -
    5038  string_t type_name() const
    -
    5039  {
    -
    5040  switch (m_type)
    -
    5041  {
    -
    5042  case value_t::null:
    -
    5043  return "null";
    -
    5044  case value_t::object:
    -
    5045  return "object";
    -
    5046  case value_t::array:
    -
    5047  return "array";
    -
    5048  case value_t::string:
    -
    5049  return "string";
    -
    5050  case value_t::boolean:
    -
    5051  return "boolean";
    -
    5052  case value_t::discarded:
    -
    5053  return "discarded";
    -
    5054  default:
    -
    5055  return "number";
    -
    5056  }
    -
    5057  }
    -
    5058 
    -
    5067  static std::size_t extra_space(const string_t& s) noexcept
    -
    5068  {
    -
    5069  std::size_t result = 0;
    -
    5070 
    -
    5071  for (const auto& c : s)
    -
    5072  {
    -
    5073  switch (c)
    -
    5074  {
    -
    5075  case '"':
    -
    5076  case '\\':
    -
    5077  case '\b':
    -
    5078  case '\f':
    -
    5079  case '\n':
    -
    5080  case '\r':
    -
    5081  case '\t':
    -
    5082  {
    -
    5083  // from c (1 byte) to \x (2 bytes)
    -
    5084  result += 1;
    -
    5085  break;
    -
    5086  }
    -
    5087 
    -
    5088  default:
    +
    4925  // deserialization //
    +
    4927 
    +
    4930 
    +
    4955  static basic_json parse(const string_t& s, parser_callback_t cb = nullptr)
    +
    4956  {
    +
    4957  return parser(s, cb).parse();
    +
    4958  }
    +
    4959 
    +
    4984  static basic_json parse(std::istream& i, parser_callback_t cb = nullptr)
    +
    4985  {
    +
    4986  return parser(i, cb).parse();
    +
    4987  }
    +
    4988 
    +
    4992  static basic_json parse(std::istream&& i, parser_callback_t cb = nullptr)
    +
    4993  {
    +
    4994  return parser(i, cb).parse();
    +
    4995  }
    +
    4996 
    +
    5020  friend std::istream& operator<<(basic_json& j, std::istream& i)
    +
    5021  {
    +
    5022  j = parser(i).parse();
    +
    5023  return i;
    +
    5024  }
    +
    5025 
    +
    5030  friend std::istream& operator>>(std::istream& i, basic_json& j)
    +
    5031  {
    +
    5032  j = parser(i).parse();
    +
    5033  return i;
    +
    5034  }
    +
    5035 
    +
    5037 
    +
    5038 
    +
    5039  private:
    +
    5041  // convenience functions //
    +
    5043 
    +
    5045  string_t type_name() const
    +
    5046  {
    +
    5047  switch (m_type)
    +
    5048  {
    +
    5049  case value_t::null:
    +
    5050  return "null";
    +
    5051  case value_t::object:
    +
    5052  return "object";
    +
    5053  case value_t::array:
    +
    5054  return "array";
    +
    5055  case value_t::string:
    +
    5056  return "string";
    +
    5057  case value_t::boolean:
    +
    5058  return "boolean";
    +
    5059  case value_t::discarded:
    +
    5060  return "discarded";
    +
    5061  default:
    +
    5062  return "number";
    +
    5063  }
    +
    5064  }
    +
    5065 
    +
    5074  static std::size_t extra_space(const string_t& s) noexcept
    +
    5075  {
    +
    5076  std::size_t result = 0;
    +
    5077 
    +
    5078  for (const auto& c : s)
    +
    5079  {
    +
    5080  switch (c)
    +
    5081  {
    +
    5082  case '"':
    +
    5083  case '\\':
    +
    5084  case '\b':
    +
    5085  case '\f':
    +
    5086  case '\n':
    +
    5087  case '\r':
    +
    5088  case '\t':
    5089  {
    -
    5090  if (c >= 0x00 and c <= 0x1f)
    -
    5091  {
    -
    5092  // from c (1 byte) to \uxxxx (6 bytes)
    -
    5093  result += 5;
    -
    5094  }
    -
    5095  break;
    -
    5096  }
    -
    5097  }
    -
    5098  }
    -
    5099 
    -
    5100  return result;
    -
    5101  }
    -
    5102 
    -
    5116  static string_t escape_string(const string_t& s) noexcept
    -
    5117  {
    -
    5118  const auto space = extra_space(s);
    -
    5119  if (space == 0)
    -
    5120  {
    -
    5121  return s;
    -
    5122  }
    -
    5123 
    -
    5124  // create a result string of necessary size
    -
    5125  string_t result(s.size() + space, '\\');
    -
    5126  std::size_t pos = 0;
    -
    5127 
    -
    5128  for (const auto& c : s)
    -
    5129  {
    -
    5130  switch (c)
    -
    5131  {
    -
    5132  // quotation mark (0x22)
    -
    5133  case '"':
    -
    5134  {
    -
    5135  result[pos + 1] = '"';
    -
    5136  pos += 2;
    -
    5137  break;
    -
    5138  }
    -
    5139 
    -
    5140  // reverse solidus (0x5c)
    -
    5141  case '\\':
    -
    5142  {
    -
    5143  // nothing to change
    -
    5144  pos += 2;
    -
    5145  break;
    -
    5146  }
    -
    5147 
    -
    5148  // backspace (0x08)
    -
    5149  case '\b':
    -
    5150  {
    -
    5151  result[pos + 1] = 'b';
    -
    5152  pos += 2;
    -
    5153  break;
    -
    5154  }
    -
    5155 
    -
    5156  // formfeed (0x0c)
    -
    5157  case '\f':
    -
    5158  {
    -
    5159  result[pos + 1] = 'f';
    -
    5160  pos += 2;
    -
    5161  break;
    -
    5162  }
    -
    5163 
    -
    5164  // newline (0x0a)
    -
    5165  case '\n':
    -
    5166  {
    -
    5167  result[pos + 1] = 'n';
    -
    5168  pos += 2;
    -
    5169  break;
    -
    5170  }
    -
    5171 
    -
    5172  // carriage return (0x0d)
    -
    5173  case '\r':
    -
    5174  {
    -
    5175  result[pos + 1] = 'r';
    -
    5176  pos += 2;
    -
    5177  break;
    -
    5178  }
    -
    5179 
    -
    5180  // horizontal tab (0x09)
    -
    5181  case '\t':
    -
    5182  {
    -
    5183  result[pos + 1] = 't';
    -
    5184  pos += 2;
    -
    5185  break;
    -
    5186  }
    -
    5187 
    -
    5188  default:
    +
    5090  // from c (1 byte) to \x (2 bytes)
    +
    5091  result += 1;
    +
    5092  break;
    +
    5093  }
    +
    5094 
    +
    5095  default:
    +
    5096  {
    +
    5097  if (c >= 0x00 and c <= 0x1f)
    +
    5098  {
    +
    5099  // from c (1 byte) to \uxxxx (6 bytes)
    +
    5100  result += 5;
    +
    5101  }
    +
    5102  break;
    +
    5103  }
    +
    5104  }
    +
    5105  }
    +
    5106 
    +
    5107  return result;
    +
    5108  }
    +
    5109 
    +
    5123  static string_t escape_string(const string_t& s) noexcept
    +
    5124  {
    +
    5125  const auto space = extra_space(s);
    +
    5126  if (space == 0)
    +
    5127  {
    +
    5128  return s;
    +
    5129  }
    +
    5130 
    +
    5131  // create a result string of necessary size
    +
    5132  string_t result(s.size() + space, '\\');
    +
    5133  std::size_t pos = 0;
    +
    5134 
    +
    5135  for (const auto& c : s)
    +
    5136  {
    +
    5137  switch (c)
    +
    5138  {
    +
    5139  // quotation mark (0x22)
    +
    5140  case '"':
    +
    5141  {
    +
    5142  result[pos + 1] = '"';
    +
    5143  pos += 2;
    +
    5144  break;
    +
    5145  }
    +
    5146 
    +
    5147  // reverse solidus (0x5c)
    +
    5148  case '\\':
    +
    5149  {
    +
    5150  // nothing to change
    +
    5151  pos += 2;
    +
    5152  break;
    +
    5153  }
    +
    5154 
    +
    5155  // backspace (0x08)
    +
    5156  case '\b':
    +
    5157  {
    +
    5158  result[pos + 1] = 'b';
    +
    5159  pos += 2;
    +
    5160  break;
    +
    5161  }
    +
    5162 
    +
    5163  // formfeed (0x0c)
    +
    5164  case '\f':
    +
    5165  {
    +
    5166  result[pos + 1] = 'f';
    +
    5167  pos += 2;
    +
    5168  break;
    +
    5169  }
    +
    5170 
    +
    5171  // newline (0x0a)
    +
    5172  case '\n':
    +
    5173  {
    +
    5174  result[pos + 1] = 'n';
    +
    5175  pos += 2;
    +
    5176  break;
    +
    5177  }
    +
    5178 
    +
    5179  // carriage return (0x0d)
    +
    5180  case '\r':
    +
    5181  {
    +
    5182  result[pos + 1] = 'r';
    +
    5183  pos += 2;
    +
    5184  break;
    +
    5185  }
    +
    5186 
    +
    5187  // horizontal tab (0x09)
    +
    5188  case '\t':
    5189  {
    -
    5190  if (c >= 0x00 and c <= 0x1f)
    -
    5191  {
    -
    5192  // convert a number 0..15 to its hex representation (0..f)
    -
    5193  auto hexify = [](const char v) -> char
    -
    5194  {
    -
    5195  return (v < 10) ? ('0' + v) : ('a' + v - 10);
    -
    5196  };
    -
    5197 
    -
    5198  // print character c as \uxxxx
    -
    5199  for (const char m :
    -
    5200  { 'u', '0', '0', hexify(c >> 4), hexify(c & 0x0f)
    -
    5201  })
    -
    5202  {
    -
    5203  result[++pos] = m;
    -
    5204  }
    -
    5205 
    -
    5206  ++pos;
    -
    5207  }
    -
    5208  else
    -
    5209  {
    -
    5210  // all other characters are added as-is
    -
    5211  result[pos++] = c;
    -
    5212  }
    -
    5213  break;
    -
    5214  }
    -
    5215  }
    -
    5216  }
    -
    5217 
    -
    5218  return result;
    -
    5219  }
    -
    5220 
    -
    5238  void dump(std::ostream& o,
    -
    5239  const bool pretty_print,
    -
    5240  const unsigned int indent_step,
    -
    5241  const unsigned int current_indent = 0) const
    -
    5242  {
    -
    5243  // variable to hold indentation for recursive calls
    -
    5244  unsigned int new_indent = current_indent;
    -
    5245 
    -
    5246  switch (m_type)
    -
    5247  {
    -
    5248  case value_t::object:
    -
    5249  {
    -
    5250  if (m_value.object->empty())
    -
    5251  {
    -
    5252  o << "{}";
    -
    5253  return;
    -
    5254  }
    -
    5255 
    -
    5256  o << "{";
    -
    5257 
    -
    5258  // increase indentation
    -
    5259  if (pretty_print)
    -
    5260  {
    -
    5261  new_indent += indent_step;
    -
    5262  o << "\n";
    -
    5263  }
    +
    5190  result[pos + 1] = 't';
    +
    5191  pos += 2;
    +
    5192  break;
    +
    5193  }
    +
    5194 
    +
    5195  default:
    +
    5196  {
    +
    5197  if (c >= 0x00 and c <= 0x1f)
    +
    5198  {
    +
    5199  // convert a number 0..15 to its hex representation (0..f)
    +
    5200  auto hexify = [](const char v) -> char
    +
    5201  {
    +
    5202  return (v < 10) ? ('0' + v) : ('a' + v - 10);
    +
    5203  };
    +
    5204 
    +
    5205  // print character c as \uxxxx
    +
    5206  for (const char m :
    +
    5207  { 'u', '0', '0', hexify(c >> 4), hexify(c & 0x0f)
    +
    5208  })
    +
    5209  {
    +
    5210  result[++pos] = m;
    +
    5211  }
    +
    5212 
    +
    5213  ++pos;
    +
    5214  }
    +
    5215  else
    +
    5216  {
    +
    5217  // all other characters are added as-is
    +
    5218  result[pos++] = c;
    +
    5219  }
    +
    5220  break;
    +
    5221  }
    +
    5222  }
    +
    5223  }
    +
    5224 
    +
    5225  return result;
    +
    5226  }
    +
    5227 
    +
    5245  void dump(std::ostream& o,
    +
    5246  const bool pretty_print,
    +
    5247  const unsigned int indent_step,
    +
    5248  const unsigned int current_indent = 0) const
    +
    5249  {
    +
    5250  // variable to hold indentation for recursive calls
    +
    5251  unsigned int new_indent = current_indent;
    +
    5252 
    +
    5253  switch (m_type)
    +
    5254  {
    +
    5255  case value_t::object:
    +
    5256  {
    +
    5257  if (m_value.object->empty())
    +
    5258  {
    +
    5259  o << "{}";
    +
    5260  return;
    +
    5261  }
    +
    5262 
    +
    5263  o << "{";
    5264 
    -
    5265  for (auto i = m_value.object->cbegin(); i != m_value.object->cend(); ++i)
    -
    5266  {
    -
    5267  if (i != m_value.object->cbegin())
    -
    5268  {
    -
    5269  o << (pretty_print ? ",\n" : ",");
    -
    5270  }
    -
    5271  o << string_t(new_indent, ' ') << "\""
    -
    5272  << escape_string(i->first) << "\":"
    -
    5273  << (pretty_print ? " " : "");
    -
    5274  i->second.dump(o, pretty_print, indent_step, new_indent);
    -
    5275  }
    -
    5276 
    -
    5277  // decrease indentation
    -
    5278  if (pretty_print)
    -
    5279  {
    -
    5280  new_indent -= indent_step;
    -
    5281  o << "\n";
    +
    5265  // increase indentation
    +
    5266  if (pretty_print)
    +
    5267  {
    +
    5268  new_indent += indent_step;
    +
    5269  o << "\n";
    +
    5270  }
    +
    5271 
    +
    5272  for (auto i = m_value.object->cbegin(); i != m_value.object->cend(); ++i)
    +
    5273  {
    +
    5274  if (i != m_value.object->cbegin())
    +
    5275  {
    +
    5276  o << (pretty_print ? ",\n" : ",");
    +
    5277  }
    +
    5278  o << string_t(new_indent, ' ') << "\""
    +
    5279  << escape_string(i->first) << "\":"
    +
    5280  << (pretty_print ? " " : "");
    +
    5281  i->second.dump(o, pretty_print, indent_step, new_indent);
    5282  }
    5283 
    -
    5284  o << string_t(new_indent, ' ') + "}";
    -
    5285  return;
    -
    5286  }
    -
    5287 
    -
    5288  case value_t::array:
    -
    5289  {
    -
    5290  if (m_value.array->empty())
    -
    5291  {
    -
    5292  o << "[]";
    -
    5293  return;
    -
    5294  }
    -
    5295 
    -
    5296  o << "[";
    -
    5297 
    -
    5298  // increase indentation
    -
    5299  if (pretty_print)
    -
    5300  {
    -
    5301  new_indent += indent_step;
    -
    5302  o << "\n";
    -
    5303  }
    +
    5284  // decrease indentation
    +
    5285  if (pretty_print)
    +
    5286  {
    +
    5287  new_indent -= indent_step;
    +
    5288  o << "\n";
    +
    5289  }
    +
    5290 
    +
    5291  o << string_t(new_indent, ' ') + "}";
    +
    5292  return;
    +
    5293  }
    +
    5294 
    +
    5295  case value_t::array:
    +
    5296  {
    +
    5297  if (m_value.array->empty())
    +
    5298  {
    +
    5299  o << "[]";
    +
    5300  return;
    +
    5301  }
    +
    5302 
    +
    5303  o << "[";
    5304 
    -
    5305  for (auto i = m_value.array->cbegin(); i != m_value.array->cend(); ++i)
    -
    5306  {
    -
    5307  if (i != m_value.array->cbegin())
    -
    5308  {
    -
    5309  o << (pretty_print ? ",\n" : ",");
    -
    5310  }
    -
    5311  o << string_t(new_indent, ' ');
    -
    5312  i->dump(o, pretty_print, indent_step, new_indent);
    -
    5313  }
    -
    5314 
    -
    5315  // decrease indentation
    -
    5316  if (pretty_print)
    -
    5317  {
    -
    5318  new_indent -= indent_step;
    -
    5319  o << "\n";
    +
    5305  // increase indentation
    +
    5306  if (pretty_print)
    +
    5307  {
    +
    5308  new_indent += indent_step;
    +
    5309  o << "\n";
    +
    5310  }
    +
    5311 
    +
    5312  for (auto i = m_value.array->cbegin(); i != m_value.array->cend(); ++i)
    +
    5313  {
    +
    5314  if (i != m_value.array->cbegin())
    +
    5315  {
    +
    5316  o << (pretty_print ? ",\n" : ",");
    +
    5317  }
    +
    5318  o << string_t(new_indent, ' ');
    +
    5319  i->dump(o, pretty_print, indent_step, new_indent);
    5320  }
    5321 
    -
    5322  o << string_t(new_indent, ' ') << "]";
    -
    5323  return;
    -
    5324  }
    -
    5325 
    -
    5326  case value_t::string:
    -
    5327  {
    -
    5328  o << string_t("\"") << escape_string(*m_value.string) << "\"";
    -
    5329  return;
    -
    5330  }
    -
    5331 
    -
    5332  case value_t::boolean:
    -
    5333  {
    -
    5334  o << (m_value.boolean ? "true" : "false");
    -
    5335  return;
    -
    5336  }
    -
    5337 
    -
    5338  case value_t::number_integer:
    -
    5339  {
    -
    5340  o << m_value.number_integer;
    -
    5341  return;
    -
    5342  }
    -
    5343 
    -
    5344  case value_t::number_float:
    -
    5345  {
    -
    5346  // 15 digits of precision allows round-trip IEEE 754
    -
    5347  // string->double->string; to be safe, we read this value from
    -
    5348  // std::numeric_limits<number_float_t>::digits10
    -
    5349  o << std::setprecision(std::numeric_limits<number_float_t>::digits10) << m_value.number_float;
    -
    5350  return;
    -
    5351  }
    -
    5352 
    -
    5353  case value_t::discarded:
    -
    5354  {
    -
    5355  o << "<discarded>";
    -
    5356  return;
    -
    5357  }
    -
    5358 
    -
    5359  case value_t::null:
    -
    5360  {
    -
    5361  o << "null";
    -
    5362  return;
    -
    5363  }
    -
    5364  }
    -
    5365  }
    -
    5366 
    -
    5367  private:
    -
    5369  // member variables //
    -
    5371 
    -
    5373  value_t m_type = value_t::null;
    -
    5374 
    -
    5376  json_value m_value = {};
    -
    5377 
    -
    5378 
    -
    5379  private:
    -
    5381  // iterators //
    -
    5383 
    -
    5393  class primitive_iterator_t
    -
    5394  {
    -
    5395  public:
    -
    5397  void set_begin()
    -
    5398  {
    -
    5399  m_it = begin_value;
    -
    5400  }
    -
    5401 
    -
    5403  void set_end()
    -
    5404  {
    -
    5405  m_it = end_value;
    -
    5406  }
    -
    5407 
    -
    5409  bool is_begin() const
    -
    5410  {
    -
    5411  return (m_it == begin_value);
    -
    5412  }
    -
    5413 
    -
    5415  bool is_end() const
    -
    5416  {
    -
    5417  return (m_it == end_value);
    -
    5418  }
    -
    5419 
    -
    5421  operator difference_type& ()
    -
    5422  {
    -
    5423  return m_it;
    -
    5424  }
    -
    5425 
    -
    5427  operator difference_type () const
    -
    5428  {
    -
    5429  return m_it;
    -
    5430  }
    -
    5431 
    -
    5432  private:
    -
    5433  static constexpr difference_type begin_value = 0;
    -
    5434  static constexpr difference_type end_value = begin_value + 1;
    -
    5435 
    -
    5437  difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min();
    -
    5438  };
    -
    5439 
    -
    5447  struct internal_iterator
    -
    5448  {
    -
    5450  typename object_t::iterator object_iterator;
    -
    5452  typename array_t::iterator array_iterator;
    -
    5454  primitive_iterator_t primitive_iterator;
    -
    5455 
    -
    5457  internal_iterator()
    -
    5458  : object_iterator(), array_iterator(), primitive_iterator()
    -
    5459  {}
    -
    5460  };
    -
    5461 
    -
    5463  template<typename IteratorType>
    -
    5464  class iteration_proxy
    -
    5465  {
    -
    5466  private:
    -
    5468  class iteration_proxy_internal
    -
    5469  {
    -
    5470  private:
    -
    5472  IteratorType anchor;
    -
    5474  size_t array_index = 0;
    -
    5475 
    -
    5476  public:
    -
    5477  iteration_proxy_internal(IteratorType it)
    -
    5478  : anchor(it)
    -
    5479  {}
    -
    5480 
    -
    5482  iteration_proxy_internal& operator*()
    -
    5483  {
    -
    5484  return *this;
    -
    5485  }
    -
    5486 
    -
    5488  iteration_proxy_internal& operator++()
    -
    5489  {
    -
    5490  ++anchor;
    -
    5491  ++array_index;
    -
    5492 
    -
    5493  return *this;
    -
    5494  }
    -
    5495 
    -
    5497  bool operator!= (const iteration_proxy_internal& o)
    -
    5498  {
    -
    5499  return anchor != o.anchor;
    -
    5500  }
    -
    5501 
    -
    5503  typename basic_json::string_t key() const
    -
    5504  {
    -
    5505  switch (anchor.m_object->type())
    -
    5506  {
    -
    5507  // use integer array index as key
    -
    5508  case value_t::array:
    -
    5509  {
    -
    5510  return std::to_string(array_index);
    -
    5511  }
    -
    5512 
    -
    5513  // use key from the object
    -
    5514  case value_t::object:
    -
    5515  {
    -
    5516  return anchor.key();
    -
    5517  }
    -
    5518 
    -
    5519  // use an empty key for all primitive types
    -
    5520  default:
    -
    5521  {
    -
    5522  return "";
    -
    5523  }
    -
    5524  }
    -
    5525  }
    -
    5526 
    -
    5528  typename IteratorType::reference value() const
    -
    5529  {
    -
    5530  return anchor.value();
    -
    5531  }
    -
    5532  };
    +
    5322  // decrease indentation
    +
    5323  if (pretty_print)
    +
    5324  {
    +
    5325  new_indent -= indent_step;
    +
    5326  o << "\n";
    +
    5327  }
    +
    5328 
    +
    5329  o << string_t(new_indent, ' ') << "]";
    +
    5330  return;
    +
    5331  }
    +
    5332 
    +
    5333  case value_t::string:
    +
    5334  {
    +
    5335  o << string_t("\"") << escape_string(*m_value.string) << "\"";
    +
    5336  return;
    +
    5337  }
    +
    5338 
    +
    5339  case value_t::boolean:
    +
    5340  {
    +
    5341  o << (m_value.boolean ? "true" : "false");
    +
    5342  return;
    +
    5343  }
    +
    5344 
    +
    5345  case value_t::number_integer:
    +
    5346  {
    +
    5347  o << m_value.number_integer;
    +
    5348  return;
    +
    5349  }
    +
    5350 
    +
    5351  case value_t::number_float:
    +
    5352  {
    +
    5353  // 15 digits of precision allows round-trip IEEE 754
    +
    5354  // string->double->string; to be safe, we read this value from
    +
    5355  // std::numeric_limits<number_float_t>::digits10
    +
    5356  o << std::setprecision(std::numeric_limits<number_float_t>::digits10) << m_value.number_float;
    +
    5357  return;
    +
    5358  }
    +
    5359 
    +
    5360  case value_t::discarded:
    +
    5361  {
    +
    5362  o << "<discarded>";
    +
    5363  return;
    +
    5364  }
    +
    5365 
    +
    5366  case value_t::null:
    +
    5367  {
    +
    5368  o << "null";
    +
    5369  return;
    +
    5370  }
    +
    5371  }
    +
    5372  }
    +
    5373 
    +
    5374  private:
    +
    5376  // member variables //
    +
    5378 
    +
    5380  value_t m_type = value_t::null;
    +
    5381 
    +
    5383  json_value m_value = {};
    +
    5384 
    +
    5385 
    +
    5386  private:
    +
    5388  // iterators //
    +
    5390 
    +
    5400  class primitive_iterator_t
    +
    5401  {
    +
    5402  public:
    +
    5404  void set_begin()
    +
    5405  {
    +
    5406  m_it = begin_value;
    +
    5407  }
    +
    5408 
    +
    5410  void set_end()
    +
    5411  {
    +
    5412  m_it = end_value;
    +
    5413  }
    +
    5414 
    +
    5416  bool is_begin() const
    +
    5417  {
    +
    5418  return (m_it == begin_value);
    +
    5419  }
    +
    5420 
    +
    5422  bool is_end() const
    +
    5423  {
    +
    5424  return (m_it == end_value);
    +
    5425  }
    +
    5426 
    +
    5428  operator difference_type& ()
    +
    5429  {
    +
    5430  return m_it;
    +
    5431  }
    +
    5432 
    +
    5434  operator difference_type () const
    +
    5435  {
    +
    5436  return m_it;
    +
    5437  }
    +
    5438 
    +
    5439  private:
    +
    5440  static constexpr difference_type begin_value = 0;
    +
    5441  static constexpr difference_type end_value = begin_value + 1;
    +
    5442 
    +
    5444  difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min();
    +
    5445  };
    +
    5446 
    +
    5454  struct internal_iterator
    +
    5455  {
    +
    5457  typename object_t::iterator object_iterator;
    +
    5459  typename array_t::iterator array_iterator;
    +
    5461  primitive_iterator_t primitive_iterator;
    +
    5462 
    +
    5464  internal_iterator()
    +
    5465  : object_iterator(), array_iterator(), primitive_iterator()
    +
    5466  {}
    +
    5467  };
    +
    5468 
    +
    5470  template<typename IteratorType>
    +
    5471  class iteration_proxy
    +
    5472  {
    +
    5473  private:
    +
    5475  class iteration_proxy_internal
    +
    5476  {
    +
    5477  private:
    +
    5479  IteratorType anchor;
    +
    5481  size_t array_index = 0;
    +
    5482 
    +
    5483  public:
    +
    5484  iteration_proxy_internal(IteratorType it)
    +
    5485  : anchor(it)
    +
    5486  {}
    +
    5487 
    +
    5489  iteration_proxy_internal& operator*()
    +
    5490  {
    +
    5491  return *this;
    +
    5492  }
    +
    5493 
    +
    5495  iteration_proxy_internal& operator++()
    +
    5496  {
    +
    5497  ++anchor;
    +
    5498  ++array_index;
    +
    5499 
    +
    5500  return *this;
    +
    5501  }
    +
    5502 
    +
    5504  bool operator!= (const iteration_proxy_internal& o) const
    +
    5505  {
    +
    5506  return anchor != o.anchor;
    +
    5507  }
    +
    5508 
    +
    5510  typename basic_json::string_t key() const
    +
    5511  {
    +
    5512  switch (anchor.m_object->type())
    +
    5513  {
    +
    5514  // use integer array index as key
    +
    5515  case value_t::array:
    +
    5516  {
    +
    5517  return std::to_string(array_index);
    +
    5518  }
    +
    5519 
    +
    5520  // use key from the object
    +
    5521  case value_t::object:
    +
    5522  {
    +
    5523  return anchor.key();
    +
    5524  }
    +
    5525 
    +
    5526  // use an empty key for all primitive types
    +
    5527  default:
    +
    5528  {
    +
    5529  return "";
    +
    5530  }
    +
    5531  }
    +
    5532  }
    5533 
    -
    5535  typename IteratorType::reference container;
    -
    5536 
    -
    5537  public:
    -
    5539  iteration_proxy(typename IteratorType::reference cont)
    -
    5540  : container(cont)
    -
    5541  {}
    -
    5542 
    -
    5544  iteration_proxy_internal begin()
    -
    5545  {
    -
    5546  return iteration_proxy_internal(container.begin());
    -
    5547  }
    -
    5548 
    -
    5550  iteration_proxy_internal end()
    -
    5551  {
    -
    5552  return iteration_proxy_internal(container.end());
    -
    5553  }
    -
    5554  };
    +
    5535  typename IteratorType::reference value() const
    +
    5536  {
    +
    5537  return anchor.value();
    +
    5538  }
    +
    5539  };
    +
    5540 
    +
    5542  typename IteratorType::reference container;
    +
    5543 
    +
    5544  public:
    +
    5546  iteration_proxy(typename IteratorType::reference cont)
    +
    5547  : container(cont)
    +
    5548  {}
    +
    5549 
    +
    5551  iteration_proxy_internal begin()
    +
    5552  {
    +
    5553  return iteration_proxy_internal(container.begin());
    +
    5554  }
    5555 
    -
    5556  public:
    -
    5570  class const_iterator : public std::iterator<std::random_access_iterator_tag, const basic_json>
    -
    5571  {
    -
    5573  friend class basic_json;
    -
    5574 
    -
    5575  public:
    -
    5577  using value_type = typename basic_json::value_type;
    -
    5579  using difference_type = typename basic_json::difference_type;
    -
    5581  using pointer = typename basic_json::const_pointer;
    -
    5583  using reference = typename basic_json::const_reference;
    -
    5585  using iterator_category = std::bidirectional_iterator_tag;
    -
    5586 
    -
    5588  const_iterator() = default;
    -
    5589 
    -
    5591  const_iterator(pointer object) : m_object(object)
    -
    5592  {
    -
    5593  switch (m_object->m_type)
    -
    5594  {
    -
    5595  case basic_json::value_t::object:
    -
    5596  {
    -
    5597  m_it.object_iterator = typename object_t::iterator();
    -
    5598  break;
    -
    5599  }
    -
    5600 
    -
    5601  case basic_json::value_t::array:
    -
    5602  {
    -
    5603  m_it.array_iterator = typename array_t::iterator();
    -
    5604  break;
    -
    5605  }
    -
    5606 
    -
    5607  default:
    -
    5608  {
    -
    5609  m_it.primitive_iterator = primitive_iterator_t();
    -
    5610  break;
    -
    5611  }
    -
    5612  }
    -
    5613  }
    -
    5614 
    -
    5616  const_iterator(const iterator& other) : m_object(other.m_object)
    -
    5617  {
    -
    5618  switch (m_object->m_type)
    -
    5619  {
    -
    5620  case basic_json::value_t::object:
    -
    5621  {
    -
    5622  m_it.object_iterator = other.m_it.object_iterator;
    -
    5623  break;
    -
    5624  }
    -
    5625 
    -
    5626  case basic_json::value_t::array:
    -
    5627  {
    -
    5628  m_it.array_iterator = other.m_it.array_iterator;
    -
    5629  break;
    -
    5630  }
    -
    5631 
    -
    5632  default:
    -
    5633  {
    -
    5634  m_it.primitive_iterator = other.m_it.primitive_iterator;
    -
    5635  break;
    -
    5636  }
    -
    5637  }
    -
    5638  }
    -
    5639 
    -
    5641  const_iterator(const const_iterator& other) noexcept
    -
    5642  : m_object(other.m_object), m_it(other.m_it)
    -
    5643  {}
    -
    5644 
    -
    5646  const_iterator& operator=(const_iterator other) noexcept(
    -
    5647  std::is_nothrow_move_constructible<pointer>::value and
    -
    5648  std::is_nothrow_move_assignable<pointer>::value and
    -
    5649  std::is_nothrow_move_constructible<internal_iterator>::value and
    -
    5650  std::is_nothrow_move_assignable<internal_iterator>::value
    -
    5651  )
    -
    5652  {
    -
    5653  std::swap(m_object, other.m_object);
    -
    5654  std::swap(m_it, other.m_it);
    -
    5655  return *this;
    -
    5656  }
    -
    5657 
    -
    5658  private:
    -
    5660  void set_begin()
    -
    5661  {
    -
    5662  switch (m_object->m_type)
    -
    5663  {
    -
    5664  case basic_json::value_t::object:
    -
    5665  {
    -
    5666  m_it.object_iterator = m_object->m_value.object->begin();
    -
    5667  break;
    -
    5668  }
    -
    5669 
    -
    5670  case basic_json::value_t::array:
    -
    5671  {
    -
    5672  m_it.array_iterator = m_object->m_value.array->begin();
    -
    5673  break;
    -
    5674  }
    -
    5675 
    -
    5676  case basic_json::value_t::null:
    -
    5677  {
    -
    5678  // set to end so begin()==end() is true: null is empty
    -
    5679  m_it.primitive_iterator.set_end();
    +
    5557  iteration_proxy_internal end()
    +
    5558  {
    +
    5559  return iteration_proxy_internal(container.end());
    +
    5560  }
    +
    5561  };
    +
    5562 
    +
    5563  public:
    +
    5577  class const_iterator : public std::iterator<std::random_access_iterator_tag, const basic_json>
    +
    5578  {
    +
    5580  friend class basic_json;
    +
    5581 
    +
    5582  public:
    +
    5584  using value_type = typename basic_json::value_type;
    +
    5586  using difference_type = typename basic_json::difference_type;
    +
    5588  using pointer = typename basic_json::const_pointer;
    +
    5590  using reference = typename basic_json::const_reference;
    +
    5592  using iterator_category = std::bidirectional_iterator_tag;
    +
    5593 
    +
    5595  const_iterator() = default;
    +
    5596 
    +
    5598  const_iterator(pointer object) : m_object(object)
    +
    5599  {
    +
    5600  switch (m_object->m_type)
    +
    5601  {
    +
    5602  case basic_json::value_t::object:
    +
    5603  {
    +
    5604  m_it.object_iterator = typename object_t::iterator();
    +
    5605  break;
    +
    5606  }
    +
    5607 
    +
    5608  case basic_json::value_t::array:
    +
    5609  {
    +
    5610  m_it.array_iterator = typename array_t::iterator();
    +
    5611  break;
    +
    5612  }
    +
    5613 
    +
    5614  default:
    +
    5615  {
    +
    5616  m_it.primitive_iterator = primitive_iterator_t();
    +
    5617  break;
    +
    5618  }
    +
    5619  }
    +
    5620  }
    +
    5621 
    +
    5623  const_iterator(const iterator& other) : m_object(other.m_object)
    +
    5624  {
    +
    5625  switch (m_object->m_type)
    +
    5626  {
    +
    5627  case basic_json::value_t::object:
    +
    5628  {
    +
    5629  m_it.object_iterator = other.m_it.object_iterator;
    +
    5630  break;
    +
    5631  }
    +
    5632 
    +
    5633  case basic_json::value_t::array:
    +
    5634  {
    +
    5635  m_it.array_iterator = other.m_it.array_iterator;
    +
    5636  break;
    +
    5637  }
    +
    5638 
    +
    5639  default:
    +
    5640  {
    +
    5641  m_it.primitive_iterator = other.m_it.primitive_iterator;
    +
    5642  break;
    +
    5643  }
    +
    5644  }
    +
    5645  }
    +
    5646 
    +
    5648  const_iterator(const const_iterator& other) noexcept
    +
    5649  : m_object(other.m_object), m_it(other.m_it)
    +
    5650  {}
    +
    5651 
    +
    5653  const_iterator& operator=(const_iterator other) noexcept(
    +
    5654  std::is_nothrow_move_constructible<pointer>::value and
    +
    5655  std::is_nothrow_move_assignable<pointer>::value and
    +
    5656  std::is_nothrow_move_constructible<internal_iterator>::value and
    +
    5657  std::is_nothrow_move_assignable<internal_iterator>::value
    +
    5658  )
    +
    5659  {
    +
    5660  std::swap(m_object, other.m_object);
    +
    5661  std::swap(m_it, other.m_it);
    +
    5662  return *this;
    +
    5663  }
    +
    5664 
    +
    5665  private:
    +
    5667  void set_begin()
    +
    5668  {
    +
    5669  switch (m_object->m_type)
    +
    5670  {
    +
    5671  case basic_json::value_t::object:
    +
    5672  {
    +
    5673  m_it.object_iterator = m_object->m_value.object->begin();
    +
    5674  break;
    +
    5675  }
    +
    5676 
    +
    5677  case basic_json::value_t::array:
    +
    5678  {
    +
    5679  m_it.array_iterator = m_object->m_value.array->begin();
    5680  break;
    5681  }
    5682 
    -
    5683  default:
    +
    5683  case basic_json::value_t::null:
    5684  {
    -
    5685  m_it.primitive_iterator.set_begin();
    -
    5686  break;
    -
    5687  }
    -
    5688  }
    -
    5689  }
    -
    5690 
    -
    5692  void set_end()
    -
    5693  {
    -
    5694  switch (m_object->m_type)
    -
    5695  {
    -
    5696  case basic_json::value_t::object:
    -
    5697  {
    -
    5698  m_it.object_iterator = m_object->m_value.object->end();
    -
    5699  break;
    -
    5700  }
    -
    5701 
    -
    5702  case basic_json::value_t::array:
    -
    5703  {
    -
    5704  m_it.array_iterator = m_object->m_value.array->end();
    -
    5705  break;
    -
    5706  }
    -
    5707 
    -
    5708  default:
    -
    5709  {
    -
    5710  m_it.primitive_iterator.set_end();
    -
    5711  break;
    -
    5712  }
    -
    5713  }
    -
    5714  }
    -
    5715 
    -
    5716  public:
    -
    5718  reference operator*() const
    -
    5719  {
    -
    5720  switch (m_object->m_type)
    -
    5721  {
    -
    5722  case basic_json::value_t::object:
    -
    5723  {
    -
    5724  return m_it.object_iterator->second;
    -
    5725  }
    -
    5726 
    -
    5727  case basic_json::value_t::array:
    -
    5728  {
    -
    5729  return *m_it.array_iterator;
    -
    5730  }
    -
    5731 
    -
    5732  case basic_json::value_t::null:
    -
    5733  {
    -
    5734  throw std::out_of_range("cannot get value");
    -
    5735  }
    -
    5736 
    -
    5737  default:
    -
    5738  {
    -
    5739  if (m_it.primitive_iterator.is_begin())
    -
    5740  {
    -
    5741  return *m_object;
    -
    5742  }
    -
    5743  else
    -
    5744  {
    -
    5745  throw std::out_of_range("cannot get value");
    -
    5746  }
    -
    5747  }
    -
    5748  }
    -
    5749  }
    -
    5750 
    -
    5752  pointer operator->() const
    -
    5753  {
    -
    5754  switch (m_object->m_type)
    -
    5755  {
    -
    5756  case basic_json::value_t::object:
    -
    5757  {
    -
    5758  return &(m_it.object_iterator->second);
    -
    5759  }
    -
    5760 
    -
    5761  case basic_json::value_t::array:
    -
    5762  {
    -
    5763  return &*m_it.array_iterator;
    -
    5764  }
    -
    5765 
    -
    5766  default:
    -
    5767  {
    -
    5768  if (m_it.primitive_iterator.is_begin())
    -
    5769  {
    -
    5770  return m_object;
    -
    5771  }
    -
    5772  else
    -
    5773  {
    -
    5774  throw std::out_of_range("cannot get value");
    -
    5775  }
    -
    5776  }
    -
    5777  }
    -
    5778  }
    -
    5779 
    -
    5781  const_iterator operator++(int)
    -
    5782  {
    -
    5783  auto result = *this;
    -
    5784  ++(*this);
    -
    5785  return result;
    -
    5786  }
    -
    5787 
    -
    5789  const_iterator& operator++()
    -
    5790  {
    -
    5791  switch (m_object->m_type)
    -
    5792  {
    -
    5793  case basic_json::value_t::object:
    -
    5794  {
    -
    5795  ++m_it.object_iterator;
    -
    5796  break;
    -
    5797  }
    -
    5798 
    -
    5799  case basic_json::value_t::array:
    -
    5800  {
    -
    5801  ++m_it.array_iterator;
    -
    5802  break;
    -
    5803  }
    -
    5804 
    -
    5805  default:
    -
    5806  {
    -
    5807  ++m_it.primitive_iterator;
    -
    5808  break;
    -
    5809  }
    -
    5810  }
    +
    5685  // set to end so begin()==end() is true: null is empty
    +
    5686  m_it.primitive_iterator.set_end();
    +
    5687  break;
    +
    5688  }
    +
    5689 
    +
    5690  default:
    +
    5691  {
    +
    5692  m_it.primitive_iterator.set_begin();
    +
    5693  break;
    +
    5694  }
    +
    5695  }
    +
    5696  }
    +
    5697 
    +
    5699  void set_end()
    +
    5700  {
    +
    5701  switch (m_object->m_type)
    +
    5702  {
    +
    5703  case basic_json::value_t::object:
    +
    5704  {
    +
    5705  m_it.object_iterator = m_object->m_value.object->end();
    +
    5706  break;
    +
    5707  }
    +
    5708 
    +
    5709  case basic_json::value_t::array:
    +
    5710  {
    +
    5711  m_it.array_iterator = m_object->m_value.array->end();
    +
    5712  break;
    +
    5713  }
    +
    5714 
    +
    5715  default:
    +
    5716  {
    +
    5717  m_it.primitive_iterator.set_end();
    +
    5718  break;
    +
    5719  }
    +
    5720  }
    +
    5721  }
    +
    5722 
    +
    5723  public:
    +
    5725  reference operator*() const
    +
    5726  {
    +
    5727  switch (m_object->m_type)
    +
    5728  {
    +
    5729  case basic_json::value_t::object:
    +
    5730  {
    +
    5731  return m_it.object_iterator->second;
    +
    5732  }
    +
    5733 
    +
    5734  case basic_json::value_t::array:
    +
    5735  {
    +
    5736  return *m_it.array_iterator;
    +
    5737  }
    +
    5738 
    +
    5739  case basic_json::value_t::null:
    +
    5740  {
    +
    5741  throw std::out_of_range("cannot get value");
    +
    5742  }
    +
    5743 
    +
    5744  default:
    +
    5745  {
    +
    5746  if (m_it.primitive_iterator.is_begin())
    +
    5747  {
    +
    5748  return *m_object;
    +
    5749  }
    +
    5750  else
    +
    5751  {
    +
    5752  throw std::out_of_range("cannot get value");
    +
    5753  }
    +
    5754  }
    +
    5755  }
    +
    5756  }
    +
    5757 
    +
    5759  pointer operator->() const
    +
    5760  {
    +
    5761  switch (m_object->m_type)
    +
    5762  {
    +
    5763  case basic_json::value_t::object:
    +
    5764  {
    +
    5765  return &(m_it.object_iterator->second);
    +
    5766  }
    +
    5767 
    +
    5768  case basic_json::value_t::array:
    +
    5769  {
    +
    5770  return &*m_it.array_iterator;
    +
    5771  }
    +
    5772 
    +
    5773  default:
    +
    5774  {
    +
    5775  if (m_it.primitive_iterator.is_begin())
    +
    5776  {
    +
    5777  return m_object;
    +
    5778  }
    +
    5779  else
    +
    5780  {
    +
    5781  throw std::out_of_range("cannot get value");
    +
    5782  }
    +
    5783  }
    +
    5784  }
    +
    5785  }
    +
    5786 
    +
    5788  const_iterator operator++(int)
    +
    5789  {
    +
    5790  auto result = *this;
    +
    5791  ++(*this);
    +
    5792  return result;
    +
    5793  }
    +
    5794 
    +
    5796  const_iterator& operator++()
    +
    5797  {
    +
    5798  switch (m_object->m_type)
    +
    5799  {
    +
    5800  case basic_json::value_t::object:
    +
    5801  {
    +
    5802  ++m_it.object_iterator;
    +
    5803  break;
    +
    5804  }
    +
    5805 
    +
    5806  case basic_json::value_t::array:
    +
    5807  {
    +
    5808  ++m_it.array_iterator;
    +
    5809  break;
    +
    5810  }
    5811 
    -
    5812  return *this;
    -
    5813  }
    -
    5814 
    -
    5816  const_iterator operator--(int)
    -
    5817  {
    -
    5818  auto result = *this;
    -
    5819  --(*this);
    -
    5820  return result;
    -
    5821  }
    -
    5822 
    -
    5824  const_iterator& operator--()
    -
    5825  {
    -
    5826  switch (m_object->m_type)
    -
    5827  {
    -
    5828  case basic_json::value_t::object:
    -
    5829  {
    -
    5830  --m_it.object_iterator;
    -
    5831  break;
    -
    5832  }
    -
    5833 
    -
    5834  case basic_json::value_t::array:
    -
    5835  {
    -
    5836  --m_it.array_iterator;
    -
    5837  break;
    -
    5838  }
    -
    5839 
    -
    5840  default:
    -
    5841  {
    -
    5842  --m_it.primitive_iterator;
    -
    5843  break;
    -
    5844  }
    -
    5845  }
    +
    5812  default:
    +
    5813  {
    +
    5814  ++m_it.primitive_iterator;
    +
    5815  break;
    +
    5816  }
    +
    5817  }
    +
    5818 
    +
    5819  return *this;
    +
    5820  }
    +
    5821 
    +
    5823  const_iterator operator--(int)
    +
    5824  {
    +
    5825  auto result = *this;
    +
    5826  --(*this);
    +
    5827  return result;
    +
    5828  }
    +
    5829 
    +
    5831  const_iterator& operator--()
    +
    5832  {
    +
    5833  switch (m_object->m_type)
    +
    5834  {
    +
    5835  case basic_json::value_t::object:
    +
    5836  {
    +
    5837  --m_it.object_iterator;
    +
    5838  break;
    +
    5839  }
    +
    5840 
    +
    5841  case basic_json::value_t::array:
    +
    5842  {
    +
    5843  --m_it.array_iterator;
    +
    5844  break;
    +
    5845  }
    5846 
    -
    5847  return *this;
    -
    5848  }
    -
    5849 
    -
    5851  bool operator==(const const_iterator& other) const
    -
    5852  {
    -
    5853  // if objects are not the same, the comparison is undefined
    -
    5854  if (m_object != other.m_object)
    -
    5855  {
    -
    5856  throw std::domain_error("cannot compare iterators of different containers");
    -
    5857  }
    -
    5858 
    -
    5859  switch (m_object->m_type)
    -
    5860  {
    -
    5861  case basic_json::value_t::object:
    -
    5862  {
    -
    5863  return (m_it.object_iterator == other.m_it.object_iterator);
    -
    5864  }
    +
    5847  default:
    +
    5848  {
    +
    5849  --m_it.primitive_iterator;
    +
    5850  break;
    +
    5851  }
    +
    5852  }
    +
    5853 
    +
    5854  return *this;
    +
    5855  }
    +
    5856 
    +
    5858  bool operator==(const const_iterator& other) const
    +
    5859  {
    +
    5860  // if objects are not the same, the comparison is undefined
    +
    5861  if (m_object != other.m_object)
    +
    5862  {
    +
    5863  throw std::domain_error("cannot compare iterators of different containers");
    +
    5864  }
    5865 
    -
    5866  case basic_json::value_t::array:
    -
    5867  {
    -
    5868  return (m_it.array_iterator == other.m_it.array_iterator);
    -
    5869  }
    -
    5870 
    -
    5871  default:
    -
    5872  {
    -
    5873  return (m_it.primitive_iterator == other.m_it.primitive_iterator);
    -
    5874  }
    -
    5875  }
    -
    5876  }
    +
    5866  switch (m_object->m_type)
    +
    5867  {
    +
    5868  case basic_json::value_t::object:
    +
    5869  {
    +
    5870  return (m_it.object_iterator == other.m_it.object_iterator);
    +
    5871  }
    +
    5872 
    +
    5873  case basic_json::value_t::array:
    +
    5874  {
    +
    5875  return (m_it.array_iterator == other.m_it.array_iterator);
    +
    5876  }
    5877 
    -
    5879  bool operator!=(const const_iterator& other) const
    -
    5880  {
    -
    5881  return not operator==(other);
    -
    5882  }
    -
    5883 
    -
    5885  bool operator<(const const_iterator& other) const
    -
    5886  {
    -
    5887  // if objects are not the same, the comparison is undefined
    -
    5888  if (m_object != other.m_object)
    -
    5889  {
    -
    5890  throw std::domain_error("cannot compare iterators of different containers");
    -
    5891  }
    -
    5892 
    -
    5893  switch (m_object->m_type)
    -
    5894  {
    -
    5895  case basic_json::value_t::object:
    -
    5896  {
    -
    5897  throw std::domain_error("cannot compare order of object iterators");
    -
    5898  }
    +
    5878  default:
    +
    5879  {
    +
    5880  return (m_it.primitive_iterator == other.m_it.primitive_iterator);
    +
    5881  }
    +
    5882  }
    +
    5883  }
    +
    5884 
    +
    5886  bool operator!=(const const_iterator& other) const
    +
    5887  {
    +
    5888  return not operator==(other);
    +
    5889  }
    +
    5890 
    +
    5892  bool operator<(const const_iterator& other) const
    +
    5893  {
    +
    5894  // if objects are not the same, the comparison is undefined
    +
    5895  if (m_object != other.m_object)
    +
    5896  {
    +
    5897  throw std::domain_error("cannot compare iterators of different containers");
    +
    5898  }
    5899 
    -
    5900  case basic_json::value_t::array:
    -
    5901  {
    -
    5902  return (m_it.array_iterator < other.m_it.array_iterator);
    -
    5903  }
    -
    5904 
    -
    5905  default:
    -
    5906  {
    -
    5907  return (m_it.primitive_iterator < other.m_it.primitive_iterator);
    -
    5908  }
    -
    5909  }
    -
    5910  }
    +
    5900  switch (m_object->m_type)
    +
    5901  {
    +
    5902  case basic_json::value_t::object:
    +
    5903  {
    +
    5904  throw std::domain_error("cannot compare order of object iterators");
    +
    5905  }
    +
    5906 
    +
    5907  case basic_json::value_t::array:
    +
    5908  {
    +
    5909  return (m_it.array_iterator < other.m_it.array_iterator);
    +
    5910  }
    5911 
    -
    5913  bool operator<=(const const_iterator& other) const
    -
    5914  {
    -
    5915  return not other.operator < (*this);
    -
    5916  }
    -
    5917 
    -
    5919  bool operator>(const const_iterator& other) const
    -
    5920  {
    -
    5921  return not operator<=(other);
    -
    5922  }
    -
    5923 
    -
    5925  bool operator>=(const const_iterator& other) const
    -
    5926  {
    -
    5927  return not operator<(other);
    -
    5928  }
    -
    5929 
    -
    5931  const_iterator& operator+=(difference_type i)
    -
    5932  {
    -
    5933  switch (m_object->m_type)
    -
    5934  {
    -
    5935  case basic_json::value_t::object:
    -
    5936  {
    -
    5937  throw std::domain_error("cannot use offsets with object iterators");
    -
    5938  }
    -
    5939 
    -
    5940  case basic_json::value_t::array:
    -
    5941  {
    -
    5942  m_it.array_iterator += i;
    -
    5943  break;
    -
    5944  }
    -
    5945 
    -
    5946  default:
    -
    5947  {
    -
    5948  m_it.primitive_iterator += i;
    -
    5949  break;
    -
    5950  }
    -
    5951  }
    +
    5912  default:
    +
    5913  {
    +
    5914  return (m_it.primitive_iterator < other.m_it.primitive_iterator);
    +
    5915  }
    +
    5916  }
    +
    5917  }
    +
    5918 
    +
    5920  bool operator<=(const const_iterator& other) const
    +
    5921  {
    +
    5922  return not other.operator < (*this);
    +
    5923  }
    +
    5924 
    +
    5926  bool operator>(const const_iterator& other) const
    +
    5927  {
    +
    5928  return not operator<=(other);
    +
    5929  }
    +
    5930 
    +
    5932  bool operator>=(const const_iterator& other) const
    +
    5933  {
    +
    5934  return not operator<(other);
    +
    5935  }
    +
    5936 
    +
    5938  const_iterator& operator+=(difference_type i)
    +
    5939  {
    +
    5940  switch (m_object->m_type)
    +
    5941  {
    +
    5942  case basic_json::value_t::object:
    +
    5943  {
    +
    5944  throw std::domain_error("cannot use offsets with object iterators");
    +
    5945  }
    +
    5946 
    +
    5947  case basic_json::value_t::array:
    +
    5948  {
    +
    5949  m_it.array_iterator += i;
    +
    5950  break;
    +
    5951  }
    5952 
    -
    5953  return *this;
    -
    5954  }
    -
    5955 
    -
    5957  const_iterator& operator-=(difference_type i)
    -
    5958  {
    -
    5959  return operator+=(-i);
    -
    5960  }
    -
    5961 
    -
    5963  const_iterator operator+(difference_type i)
    -
    5964  {
    -
    5965  auto result = *this;
    -
    5966  result += i;
    -
    5967  return result;
    -
    5968  }
    -
    5969 
    -
    5971  const_iterator operator-(difference_type i)
    -
    5972  {
    -
    5973  auto result = *this;
    -
    5974  result -= i;
    -
    5975  return result;
    -
    5976  }
    -
    5977 
    -
    5979  difference_type operator-(const const_iterator& other) const
    -
    5980  {
    -
    5981  switch (m_object->m_type)
    -
    5982  {
    -
    5983  case basic_json::value_t::object:
    -
    5984  {
    -
    5985  throw std::domain_error("cannot use offsets with object iterators");
    -
    5986  }
    -
    5987 
    -
    5988  case basic_json::value_t::array:
    -
    5989  {
    -
    5990  return m_it.array_iterator - other.m_it.array_iterator;
    -
    5991  }
    -
    5992 
    -
    5993  default:
    -
    5994  {
    -
    5995  return m_it.primitive_iterator - other.m_it.primitive_iterator;
    -
    5996  }
    -
    5997  }
    -
    5998  }
    +
    5953  default:
    +
    5954  {
    +
    5955  m_it.primitive_iterator += i;
    +
    5956  break;
    +
    5957  }
    +
    5958  }
    +
    5959 
    +
    5960  return *this;
    +
    5961  }
    +
    5962 
    +
    5964  const_iterator& operator-=(difference_type i)
    +
    5965  {
    +
    5966  return operator+=(-i);
    +
    5967  }
    +
    5968 
    +
    5970  const_iterator operator+(difference_type i)
    +
    5971  {
    +
    5972  auto result = *this;
    +
    5973  result += i;
    +
    5974  return result;
    +
    5975  }
    +
    5976 
    +
    5978  const_iterator operator-(difference_type i)
    +
    5979  {
    +
    5980  auto result = *this;
    +
    5981  result -= i;
    +
    5982  return result;
    +
    5983  }
    +
    5984 
    +
    5986  difference_type operator-(const const_iterator& other) const
    +
    5987  {
    +
    5988  switch (m_object->m_type)
    +
    5989  {
    +
    5990  case basic_json::value_t::object:
    +
    5991  {
    +
    5992  throw std::domain_error("cannot use offsets with object iterators");
    +
    5993  }
    +
    5994 
    +
    5995  case basic_json::value_t::array:
    +
    5996  {
    +
    5997  return m_it.array_iterator - other.m_it.array_iterator;
    +
    5998  }
    5999 
    -
    6001  reference operator[](difference_type n) const
    -
    6002  {
    -
    6003  switch (m_object->m_type)
    -
    6004  {
    -
    6005  case basic_json::value_t::object:
    -
    6006  {
    -
    6007  throw std::domain_error("cannot use operator[] for object iterators");
    -
    6008  }
    -
    6009 
    -
    6010  case basic_json::value_t::array:
    -
    6011  {
    -
    6012  return *(m_it.array_iterator + n);
    -
    6013  }
    -
    6014 
    -
    6015  case basic_json::value_t::null:
    -
    6016  {
    -
    6017  throw std::out_of_range("cannot get value");
    -
    6018  }
    -
    6019 
    -
    6020  default:
    -
    6021  {
    -
    6022  if (m_it.primitive_iterator == -n)
    -
    6023  {
    -
    6024  return *m_object;
    -
    6025  }
    -
    6026  else
    -
    6027  {
    -
    6028  throw std::out_of_range("cannot get value");
    -
    6029  }
    -
    6030  }
    -
    6031  }
    -
    6032  }
    -
    6033 
    -
    6035  typename object_t::key_type key() const
    -
    6036  {
    -
    6037  if (m_object->is_object())
    -
    6038  {
    -
    6039  return m_it.object_iterator->first;
    -
    6040  }
    -
    6041  else
    -
    6042  {
    -
    6043  throw std::domain_error("cannot use key() for non-object iterators");
    -
    6044  }
    -
    6045  }
    -
    6046 
    -
    6048  reference value() const
    -
    6049  {
    -
    6050  return operator*();
    -
    6051  }
    -
    6052 
    -
    6053  private:
    -
    6055  pointer m_object = nullptr;
    -
    6057  internal_iterator m_it = internal_iterator();
    -
    6058  };
    +
    6000  default:
    +
    6001  {
    +
    6002  return m_it.primitive_iterator - other.m_it.primitive_iterator;
    +
    6003  }
    +
    6004  }
    +
    6005  }
    +
    6006 
    +
    6008  reference operator[](difference_type n) const
    +
    6009  {
    +
    6010  switch (m_object->m_type)
    +
    6011  {
    +
    6012  case basic_json::value_t::object:
    +
    6013  {
    +
    6014  throw std::domain_error("cannot use operator[] for object iterators");
    +
    6015  }
    +
    6016 
    +
    6017  case basic_json::value_t::array:
    +
    6018  {
    +
    6019  return *(m_it.array_iterator + n);
    +
    6020  }
    +
    6021 
    +
    6022  case basic_json::value_t::null:
    +
    6023  {
    +
    6024  throw std::out_of_range("cannot get value");
    +
    6025  }
    +
    6026 
    +
    6027  default:
    +
    6028  {
    +
    6029  if (m_it.primitive_iterator == -n)
    +
    6030  {
    +
    6031  return *m_object;
    +
    6032  }
    +
    6033  else
    +
    6034  {
    +
    6035  throw std::out_of_range("cannot get value");
    +
    6036  }
    +
    6037  }
    +
    6038  }
    +
    6039  }
    +
    6040 
    +
    6042  typename object_t::key_type key() const
    +
    6043  {
    +
    6044  if (m_object->is_object())
    +
    6045  {
    +
    6046  return m_it.object_iterator->first;
    +
    6047  }
    +
    6048  else
    +
    6049  {
    +
    6050  throw std::domain_error("cannot use key() for non-object iterators");
    +
    6051  }
    +
    6052  }
    +
    6053 
    +
    6055  reference value() const
    +
    6056  {
    +
    6057  return operator*();
    +
    6058  }
    6059 
    -
    6072  class iterator : public const_iterator
    -
    6073  {
    -
    6074  public:
    -
    6075  using base_iterator = const_iterator;
    -
    6076  using pointer = typename basic_json::pointer;
    -
    6077  using reference = typename basic_json::reference;
    -
    6078 
    -
    6080  iterator() = default;
    -
    6081 
    -
    6083  iterator(pointer object) noexcept
    -
    6084  : base_iterator(object)
    -
    6085  {}
    -
    6086 
    -
    6088  iterator(const iterator& other) noexcept
    -
    6089  : base_iterator(other)
    -
    6090  {}
    -
    6091 
    -
    6093  iterator& operator=(iterator other) noexcept(
    -
    6094  std::is_nothrow_move_constructible<pointer>::value and
    -
    6095  std::is_nothrow_move_assignable<pointer>::value and
    -
    6096  std::is_nothrow_move_constructible<internal_iterator>::value and
    -
    6097  std::is_nothrow_move_assignable<internal_iterator>::value
    -
    6098  )
    -
    6099  {
    -
    6100  base_iterator::operator=(other);
    -
    6101  return *this;
    -
    6102  }
    -
    6103 
    -
    6105  reference operator*()
    +
    6060  private:
    +
    6062  pointer m_object = nullptr;
    +
    6064  internal_iterator m_it = internal_iterator();
    +
    6065  };
    +
    6066 
    +
    6079  class iterator : public const_iterator
    +
    6080  {
    +
    6081  public:
    +
    6082  using base_iterator = const_iterator;
    +
    6083  using pointer = typename basic_json::pointer;
    +
    6084  using reference = typename basic_json::reference;
    +
    6085 
    +
    6087  iterator() = default;
    +
    6088 
    +
    6090  iterator(pointer object) noexcept
    +
    6091  : base_iterator(object)
    +
    6092  {}
    +
    6093 
    +
    6095  iterator(const iterator& other) noexcept
    +
    6096  : base_iterator(other)
    +
    6097  {}
    +
    6098 
    +
    6100  iterator& operator=(iterator other) noexcept(
    +
    6101  std::is_nothrow_move_constructible<pointer>::value and
    +
    6102  std::is_nothrow_move_assignable<pointer>::value and
    +
    6103  std::is_nothrow_move_constructible<internal_iterator>::value and
    +
    6104  std::is_nothrow_move_assignable<internal_iterator>::value
    +
    6105  )
    6106  {
    -
    6107  return const_cast<reference>(base_iterator::operator*());
    -
    6108  }
    -
    6109 
    -
    6111  pointer operator->()
    -
    6112  {
    -
    6113  return const_cast<pointer>(base_iterator::operator->());
    -
    6114  }
    -
    6115 
    -
    6117  iterator operator++(int)
    -
    6118  {
    -
    6119  iterator result = *this;
    -
    6120  base_iterator::operator++();
    -
    6121  return result;
    -
    6122  }
    -
    6123 
    -
    6125  iterator& operator++()
    -
    6126  {
    +
    6107  base_iterator::operator=(other);
    +
    6108  return *this;
    +
    6109  }
    +
    6110 
    +
    6112  reference operator*()
    +
    6113  {
    +
    6114  return const_cast<reference>(base_iterator::operator*());
    +
    6115  }
    +
    6116 
    +
    6118  pointer operator->()
    +
    6119  {
    +
    6120  return const_cast<pointer>(base_iterator::operator->());
    +
    6121  }
    +
    6122 
    +
    6124  iterator operator++(int)
    +
    6125  {
    +
    6126  iterator result = *this;
    6127  base_iterator::operator++();
    -
    6128  return *this;
    +
    6128  return result;
    6129  }
    6130 
    -
    6132  iterator operator--(int)
    +
    6132  iterator& operator++()
    6133  {
    -
    6134  iterator result = *this;
    -
    6135  base_iterator::operator--();
    -
    6136  return result;
    -
    6137  }
    -
    6138 
    -
    6140  iterator& operator--()
    -
    6141  {
    +
    6134  base_iterator::operator++();
    +
    6135  return *this;
    +
    6136  }
    +
    6137 
    +
    6139  iterator operator--(int)
    +
    6140  {
    +
    6141  iterator result = *this;
    6142  base_iterator::operator--();
    -
    6143  return *this;
    +
    6143  return result;
    6144  }
    6145 
    -
    6147  iterator& operator+=(difference_type i)
    +
    6147  iterator& operator--()
    6148  {
    -
    6149  base_iterator::operator+=(i);
    +
    6149  base_iterator::operator--();
    6150  return *this;
    6151  }
    6152 
    -
    6154  iterator& operator-=(difference_type i)
    +
    6154  iterator& operator+=(difference_type i)
    6155  {
    -
    6156  base_iterator::operator-=(i);
    +
    6156  base_iterator::operator+=(i);
    6157  return *this;
    6158  }
    6159 
    -
    6161  iterator operator+(difference_type i)
    +
    6161  iterator& operator-=(difference_type i)
    6162  {
    -
    6163  auto result = *this;
    -
    6164  result += i;
    -
    6165  return result;
    -
    6166  }
    -
    6167 
    -
    6169  iterator operator-(difference_type i)
    -
    6170  {
    -
    6171  auto result = *this;
    -
    6172  result -= i;
    -
    6173  return result;
    -
    6174  }
    -
    6175 
    -
    6176  difference_type operator-(const iterator& other) const
    -
    6177  {
    -
    6178  return base_iterator::operator-(other);
    -
    6179  }
    -
    6180 
    -
    6182  reference operator[](difference_type n) const
    -
    6183  {
    -
    6184  return const_cast<reference>(base_iterator::operator[](n));
    -
    6185  }
    -
    6186 
    -
    6188  reference value() const
    -
    6189  {
    -
    6190  return const_cast<reference>(base_iterator::value());
    -
    6191  }
    -
    6192  };
    +
    6163  base_iterator::operator-=(i);
    +
    6164  return *this;
    +
    6165  }
    +
    6166 
    +
    6168  iterator operator+(difference_type i)
    +
    6169  {
    +
    6170  auto result = *this;
    +
    6171  result += i;
    +
    6172  return result;
    +
    6173  }
    +
    6174 
    +
    6176  iterator operator-(difference_type i)
    +
    6177  {
    +
    6178  auto result = *this;
    +
    6179  result -= i;
    +
    6180  return result;
    +
    6181  }
    +
    6182 
    +
    6183  difference_type operator-(const iterator& other) const
    +
    6184  {
    +
    6185  return base_iterator::operator-(other);
    +
    6186  }
    +
    6187 
    +
    6189  reference operator[](difference_type n) const
    +
    6190  {
    +
    6191  return const_cast<reference>(base_iterator::operator[](n));
    +
    6192  }
    6193 
    -
    6211  template<typename Base>
    -
    6212  class json_reverse_iterator : public std::reverse_iterator<Base>
    -
    6213  {
    -
    6214  public:
    -
    6216  using base_iterator = std::reverse_iterator<Base>;
    -
    6218  using reference = typename Base::reference;
    -
    6219 
    -
    6221  json_reverse_iterator(const typename base_iterator::iterator_type& it)
    -
    6222  : base_iterator(it)
    -
    6223  {}
    -
    6224 
    -
    6226  json_reverse_iterator(const base_iterator& it)
    -
    6227  : base_iterator(it)
    -
    6228  {}
    -
    6229 
    -
    6231  json_reverse_iterator operator++(int)
    -
    6232  {
    -
    6233  return base_iterator::operator++(1);
    -
    6234  }
    -
    6235 
    -
    6237  json_reverse_iterator& operator++()
    -
    6238  {
    -
    6239  base_iterator::operator++();
    -
    6240  return *this;
    +
    6195  reference value() const
    +
    6196  {
    +
    6197  return const_cast<reference>(base_iterator::value());
    +
    6198  }
    +
    6199  };
    +
    6200 
    +
    6218  template<typename Base>
    +
    6219  class json_reverse_iterator : public std::reverse_iterator<Base>
    +
    6220  {
    +
    6221  public:
    +
    6223  using base_iterator = std::reverse_iterator<Base>;
    +
    6225  using reference = typename Base::reference;
    +
    6226 
    +
    6228  json_reverse_iterator(const typename base_iterator::iterator_type& it)
    +
    6229  : base_iterator(it)
    +
    6230  {}
    +
    6231 
    +
    6233  json_reverse_iterator(const base_iterator& it)
    +
    6234  : base_iterator(it)
    +
    6235  {}
    +
    6236 
    +
    6238  json_reverse_iterator operator++(int)
    +
    6239  {
    +
    6240  return base_iterator::operator++(1);
    6241  }
    6242 
    -
    6244  json_reverse_iterator operator--(int)
    +
    6244  json_reverse_iterator& operator++()
    6245  {
    -
    6246  return base_iterator::operator--(1);
    -
    6247  }
    -
    6248 
    -
    6250  json_reverse_iterator& operator--()
    -
    6251  {
    -
    6252  base_iterator::operator--();
    -
    6253  return *this;
    +
    6246  base_iterator::operator++();
    +
    6247  return *this;
    +
    6248  }
    +
    6249 
    +
    6251  json_reverse_iterator operator--(int)
    +
    6252  {
    +
    6253  return base_iterator::operator--(1);
    6254  }
    6255 
    -
    6257  json_reverse_iterator& operator+=(difference_type i)
    +
    6257  json_reverse_iterator& operator--()
    6258  {
    -
    6259  base_iterator::operator+=(i);
    +
    6259  base_iterator::operator--();
    6260  return *this;
    6261  }
    6262 
    -
    6264  json_reverse_iterator operator+(difference_type i) const
    -
    6265  {
    -
    6266  auto result = *this;
    -
    6267  result += i;
    -
    6268  return result;
    -
    6269  }
    -
    6270 
    -
    6272  json_reverse_iterator operator-(difference_type i) const
    -
    6273  {
    -
    6274  auto result = *this;
    -
    6275  result -= i;
    -
    6276  return result;
    -
    6277  }
    -
    6278 
    -
    6280  difference_type operator-(const json_reverse_iterator& other) const
    -
    6281  {
    -
    6282  return this->base() - other.base();
    -
    6283  }
    -
    6284 
    -
    6286  reference operator[](difference_type n) const
    -
    6287  {
    -
    6288  return *(this->operator+(n));
    -
    6289  }
    -
    6290 
    -
    6292  typename object_t::key_type key() const
    -
    6293  {
    -
    6294  auto it = --this->base();
    -
    6295  return it.key();
    +
    6264  json_reverse_iterator& operator+=(difference_type i)
    +
    6265  {
    +
    6266  base_iterator::operator+=(i);
    +
    6267  return *this;
    +
    6268  }
    +
    6269 
    +
    6271  json_reverse_iterator operator+(difference_type i) const
    +
    6272  {
    +
    6273  auto result = *this;
    +
    6274  result += i;
    +
    6275  return result;
    +
    6276  }
    +
    6277 
    +
    6279  json_reverse_iterator operator-(difference_type i) const
    +
    6280  {
    +
    6281  auto result = *this;
    +
    6282  result -= i;
    +
    6283  return result;
    +
    6284  }
    +
    6285 
    +
    6287  difference_type operator-(const json_reverse_iterator& other) const
    +
    6288  {
    +
    6289  return this->base() - other.base();
    +
    6290  }
    +
    6291 
    +
    6293  reference operator[](difference_type n) const
    +
    6294  {
    +
    6295  return *(this->operator+(n));
    6296  }
    6297 
    -
    6299  reference value() const
    +
    6299  typename object_t::key_type key() const
    6300  {
    6301  auto it = --this->base();
    -
    6302  return it.operator * ();
    +
    6302  return it.key();
    6303  }
    -
    6304  };
    -
    6305 
    -
    6306 
    -
    6307  private:
    -
    6309  // lexer and parser //
    -
    6311 
    -
    6319  class lexer
    -
    6320  {
    -
    6321  public:
    -
    6323  enum class token_type
    -
    6324  {
    -
    6325  uninitialized,
    -
    6326  literal_true,
    -
    6327  literal_false,
    -
    6328  literal_null,
    -
    6329  value_string,
    -
    6330  value_number,
    -
    6331  begin_array,
    -
    6332  begin_object,
    -
    6333  end_array,
    -
    6334  end_object,
    -
    6335  name_separator,
    -
    6336  value_separator,
    -
    6337  parse_error,
    -
    6338  end_of_input
    -
    6339  };
    -
    6340 
    -
    6342  using lexer_char_t = unsigned char;
    -
    6343 
    -
    6345  explicit lexer(const string_t& s) noexcept
    -
    6346  : m_stream(nullptr), m_buffer(s)
    -
    6347  {
    -
    6348  m_content = reinterpret_cast<const lexer_char_t*>(s.c_str());
    -
    6349  m_start = m_cursor = m_content;
    -
    6350  m_limit = m_content + s.size();
    -
    6351  }
    -
    6352  explicit lexer(std::istream* s) noexcept
    -
    6353  : m_stream(s), m_buffer()
    +
    6304 
    +
    6306  reference value() const
    +
    6307  {
    +
    6308  auto it = --this->base();
    +
    6309  return it.operator * ();
    +
    6310  }
    +
    6311  };
    +
    6312 
    +
    6313 
    +
    6314  private:
    +
    6316  // lexer and parser //
    +
    6318 
    +
    6326  class lexer
    +
    6327  {
    +
    6328  public:
    +
    6330  enum class token_type
    +
    6331  {
    +
    6332  uninitialized,
    +
    6333  literal_true,
    +
    6334  literal_false,
    +
    6335  literal_null,
    +
    6336  value_string,
    +
    6337  value_number,
    +
    6338  begin_array,
    +
    6339  begin_object,
    +
    6340  end_array,
    +
    6341  end_object,
    +
    6342  name_separator,
    +
    6343  value_separator,
    +
    6344  parse_error,
    +
    6345  end_of_input
    +
    6346  };
    +
    6347 
    +
    6349  using lexer_char_t = unsigned char;
    +
    6350 
    +
    6352  explicit lexer(const string_t& s) noexcept
    +
    6353  : m_stream(nullptr), m_buffer(s)
    6354  {
    -
    6355  getline(*m_stream, m_buffer);
    -
    6356  m_content = reinterpret_cast<const lexer_char_t*>(m_buffer.c_str());
    -
    6357  m_start = m_cursor = m_content;
    -
    6358  m_limit = m_content + m_buffer.size();
    -
    6359  }
    -
    6360 
    -
    6362  lexer() = default;
    -
    6363 
    -
    6364  // switch of unwanted functions
    -
    6365  lexer(const lexer&) = delete;
    -
    6366  lexer operator=(const lexer&) = delete;
    -
    6367 
    -
    6380  static string_t to_unicode(const std::size_t codepoint1,
    -
    6381  const std::size_t codepoint2 = 0)
    -
    6382  {
    -
    6383  string_t result;
    -
    6384 
    -
    6385  // calculate the codepoint from the given code points
    -
    6386  std::size_t codepoint = codepoint1;
    -
    6387 
    -
    6388  // check if codepoint1 is a high surrogate
    -
    6389  if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF)
    -
    6390  {
    -
    6391  // check if codepoint2 is a low surrogate
    -
    6392  if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF)
    -
    6393  {
    -
    6394  codepoint =
    -
    6395  // high surrogate occupies the most significant 22 bits
    -
    6396  (codepoint1 << 10)
    -
    6397  // low surrogate occupies the least significant 15 bits
    -
    6398  + codepoint2
    -
    6399  // there is still the 0xD800, 0xDC00 and 0x10000 noise
    -
    6400  // in the result so we have to substract with:
    -
    6401  // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00
    -
    6402  - 0x35FDC00;
    -
    6403  }
    -
    6404  else
    +
    6355  m_content = reinterpret_cast<const lexer_char_t*>(s.c_str());
    +
    6356  m_start = m_cursor = m_content;
    +
    6357  m_limit = m_content + s.size();
    +
    6358  }
    +
    6359 
    +
    6361  explicit lexer(std::istream* s) noexcept
    +
    6362  : m_stream(s), m_buffer()
    +
    6363  {
    +
    6364  getline(*m_stream, m_buffer);
    +
    6365  m_content = reinterpret_cast<const lexer_char_t*>(m_buffer.c_str());
    +
    6366  m_start = m_cursor = m_content;
    +
    6367  m_limit = m_content + m_buffer.size();
    +
    6368  }
    +
    6369 
    +
    6371  lexer() = default;
    +
    6372 
    +
    6373  // switch off unwanted functions
    +
    6374  lexer(const lexer&) = delete;
    +
    6375  lexer operator=(const lexer&) = delete;
    +
    6376 
    +
    6392  static string_t to_unicode(const std::size_t codepoint1,
    +
    6393  const std::size_t codepoint2 = 0)
    +
    6394  {
    +
    6395  string_t result;
    +
    6396 
    +
    6397  // calculate the codepoint from the given code points
    +
    6398  std::size_t codepoint = codepoint1;
    +
    6399 
    +
    6400  // check if codepoint1 is a high surrogate
    +
    6401  if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF)
    +
    6402  {
    +
    6403  // check if codepoint2 is a low surrogate
    +
    6404  if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF)
    6405  {
    -
    6406  throw std::invalid_argument("missing or wrong low surrogate");
    -
    6407  }
    -
    6408  }
    -
    6409 
    -
    6410  if (codepoint < 0x80)
    -
    6411  {
    -
    6412  // 1-byte characters: 0xxxxxxx (ASCII)
    -
    6413  result.append(1, static_cast<typename string_t::value_type>(codepoint));
    -
    6414  }
    -
    6415  else if (codepoint <= 0x7ff)
    -
    6416  {
    -
    6417  // 2-byte characters: 110xxxxx 10xxxxxx
    -
    6418  result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F)));
    -
    6419  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
    +
    6406  codepoint =
    +
    6407  // high surrogate occupies the most significant 22 bits
    +
    6408  (codepoint1 << 10)
    +
    6409  // low surrogate occupies the least significant 15 bits
    +
    6410  + codepoint2
    +
    6411  // there is still the 0xD800, 0xDC00 and 0x10000 noise
    +
    6412  // in the result so we have to substract with:
    +
    6413  // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00
    +
    6414  - 0x35FDC00;
    +
    6415  }
    +
    6416  else
    +
    6417  {
    +
    6418  throw std::invalid_argument("missing or wrong low surrogate");
    +
    6419  }
    6420  }
    -
    6421  else if (codepoint <= 0xffff)
    -
    6422  {
    -
    6423  // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx
    -
    6424  result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F)));
    -
    6425  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F)));
    -
    6426  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
    -
    6427  }
    -
    6428  else if (codepoint <= 0x10ffff)
    -
    6429  {
    -
    6430  // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    -
    6431  result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07)));
    -
    6432  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F)));
    -
    6433  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F)));
    -
    6434  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
    -
    6435  }
    -
    6436  else
    -
    6437  {
    -
    6438  throw std::out_of_range("code points above 0x10FFFF are invalid");
    +
    6421 
    +
    6422  if (codepoint < 0x80)
    +
    6423  {
    +
    6424  // 1-byte characters: 0xxxxxxx (ASCII)
    +
    6425  result.append(1, static_cast<typename string_t::value_type>(codepoint));
    +
    6426  }
    +
    6427  else if (codepoint <= 0x7ff)
    +
    6428  {
    +
    6429  // 2-byte characters: 110xxxxx 10xxxxxx
    +
    6430  result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F)));
    +
    6431  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
    +
    6432  }
    +
    6433  else if (codepoint <= 0xffff)
    +
    6434  {
    +
    6435  // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx
    +
    6436  result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F)));
    +
    6437  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F)));
    +
    6438  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
    6439  }
    -
    6440 
    -
    6441  return result;
    -
    6442  }
    -
    6443 
    -
    6445  static std::string token_type_name(token_type t)
    -
    6446  {
    -
    6447  switch (t)
    -
    6448  {
    -
    6449  case token_type::uninitialized:
    -
    6450  return "<uninitialized>";
    -
    6451  case token_type::literal_true:
    -
    6452  return "true literal";
    -
    6453  case token_type::literal_false:
    -
    6454  return "false literal";
    -
    6455  case token_type::literal_null:
    -
    6456  return "null literal";
    -
    6457  case token_type::value_string:
    -
    6458  return "string literal";
    -
    6459  case token_type::value_number:
    -
    6460  return "number literal";
    -
    6461  case token_type::begin_array:
    -
    6462  return "'['";
    -
    6463  case token_type::begin_object:
    -
    6464  return "'{'";
    -
    6465  case token_type::end_array:
    -
    6466  return "']'";
    -
    6467  case token_type::end_object:
    -
    6468  return "'}'";
    -
    6469  case token_type::name_separator:
    -
    6470  return "':'";
    -
    6471  case token_type::value_separator:
    -
    6472  return "','";
    -
    6473  case token_type::parse_error:
    -
    6474  return "<parse error>";
    -
    6475  case token_type::end_of_input:
    -
    6476  return "end of input";
    -
    6477  default:
    -
    6478  {
    -
    6479  // catch non-enum values
    -
    6480  return "unknown token"; // LCOV_EXCL_LINE
    -
    6481  }
    -
    6482  }
    -
    6483  }
    -
    6484 
    -
    6495  token_type scan() noexcept
    -
    6496  {
    -
    6497  // pointer for backtracking information
    -
    6498  m_marker = nullptr;
    -
    6499 
    -
    6500  // remember the begin of the token
    -
    6501  m_start = m_cursor;
    -
    6502 
    -
    6503 
    -
    6504  {
    -
    6505  lexer_char_t yych;
    -
    6506  unsigned int yyaccept = 0;
    -
    6507  static const unsigned char yybm[] =
    -
    6508  {
    -
    6509  0, 0, 0, 0, 0, 0, 0, 0,
    -
    6510  0, 32, 32, 0, 0, 32, 0, 0,
    -
    6511  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6512  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6513  96, 64, 0, 64, 64, 64, 64, 64,
    -
    6514  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6515  192, 192, 192, 192, 192, 192, 192, 192,
    -
    6516  192, 192, 64, 64, 64, 64, 64, 64,
    -
    6517  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6518  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6519  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6520  64, 64, 64, 64, 0, 64, 64, 64,
    -
    6521  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6522  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6440  else if (codepoint <= 0x10ffff)
    +
    6441  {
    +
    6442  // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    +
    6443  result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07)));
    +
    6444  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F)));
    +
    6445  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F)));
    +
    6446  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
    +
    6447  }
    +
    6448  else
    +
    6449  {
    +
    6450  throw std::out_of_range("code points above 0x10FFFF are invalid");
    +
    6451  }
    +
    6452 
    +
    6453  return result;
    +
    6454  }
    +
    6455 
    +
    6457  static std::string token_type_name(token_type t)
    +
    6458  {
    +
    6459  switch (t)
    +
    6460  {
    +
    6461  case token_type::uninitialized:
    +
    6462  return "<uninitialized>";
    +
    6463  case token_type::literal_true:
    +
    6464  return "true literal";
    +
    6465  case token_type::literal_false:
    +
    6466  return "false literal";
    +
    6467  case token_type::literal_null:
    +
    6468  return "null literal";
    +
    6469  case token_type::value_string:
    +
    6470  return "string literal";
    +
    6471  case token_type::value_number:
    +
    6472  return "number literal";
    +
    6473  case token_type::begin_array:
    +
    6474  return "'['";
    +
    6475  case token_type::begin_object:
    +
    6476  return "'{'";
    +
    6477  case token_type::end_array:
    +
    6478  return "']'";
    +
    6479  case token_type::end_object:
    +
    6480  return "'}'";
    +
    6481  case token_type::name_separator:
    +
    6482  return "':'";
    +
    6483  case token_type::value_separator:
    +
    6484  return "','";
    +
    6485  case token_type::parse_error:
    +
    6486  return "<parse error>";
    +
    6487  case token_type::end_of_input:
    +
    6488  return "end of input";
    +
    6489  default:
    +
    6490  {
    +
    6491  // catch non-enum values
    +
    6492  return "unknown token"; // LCOV_EXCL_LINE
    +
    6493  }
    +
    6494  }
    +
    6495  }
    +
    6496 
    +
    6507  token_type scan() noexcept
    +
    6508  {
    +
    6509  // pointer for backtracking information
    +
    6510  m_marker = nullptr;
    +
    6511 
    +
    6512  // remember the begin of the token
    +
    6513  m_start = m_cursor;
    +
    6514 
    +
    6515 
    +
    6516  {
    +
    6517  lexer_char_t yych;
    +
    6518  unsigned int yyaccept = 0;
    +
    6519  static const unsigned char yybm[] =
    +
    6520  {
    +
    6521  0, 0, 0, 0, 0, 0, 0, 0,
    +
    6522  0, 32, 32, 0, 0, 32, 0, 0,
    6523  64, 64, 64, 64, 64, 64, 64, 64,
    6524  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6525  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6525  96, 64, 0, 64, 64, 64, 64, 64,
    6526  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6527  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6528  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6527  192, 192, 192, 192, 192, 192, 192, 192,
    +
    6528  192, 192, 64, 64, 64, 64, 64, 64,
    6529  64, 64, 64, 64, 64, 64, 64, 64,
    6530  64, 64, 64, 64, 64, 64, 64, 64,
    6531  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6532  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6532  64, 64, 64, 64, 0, 64, 64, 64,
    6533  64, 64, 64, 64, 64, 64, 64, 64,
    6534  64, 64, 64, 64, 64, 64, 64, 64,
    6535  64, 64, 64, 64, 64, 64, 64, 64,
    @@ -3469,1369 +3458,1381 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    6538  64, 64, 64, 64, 64, 64, 64, 64,
    6539  64, 64, 64, 64, 64, 64, 64, 64,
    6540  64, 64, 64, 64, 64, 64, 64, 64,
    -
    6541  };
    -
    6542  if ((m_limit - m_cursor) < 5)
    -
    6543  {
    -
    6544  yyfill(); // LCOV_EXCL_LINE;
    -
    6545  }
    -
    6546  yych = *m_cursor;
    -
    6547  if (yych <= ':')
    -
    6548  {
    -
    6549  if (yych <= ' ')
    -
    6550  {
    -
    6551  if (yych <= '\n')
    -
    6552  {
    -
    6553  if (yych <= 0x00)
    -
    6554  {
    -
    6555  goto basic_json_parser_28;
    -
    6556  }
    -
    6557  if (yych <= 0x08)
    -
    6558  {
    -
    6559  goto basic_json_parser_30;
    -
    6560  }
    -
    6561  if (yych >= '\n')
    -
    6562  {
    -
    6563  goto basic_json_parser_4;
    -
    6564  }
    -
    6565  }
    -
    6566  else
    -
    6567  {
    -
    6568  if (yych == '\r')
    -
    6569  {
    -
    6570  goto basic_json_parser_2;
    -
    6571  }
    -
    6572  if (yych <= 0x1F)
    -
    6573  {
    -
    6574  goto basic_json_parser_30;
    -
    6575  }
    -
    6576  }
    -
    6577  }
    -
    6578  else
    -
    6579  {
    -
    6580  if (yych <= ',')
    -
    6581  {
    -
    6582  if (yych == '"')
    -
    6583  {
    -
    6584  goto basic_json_parser_27;
    -
    6585  }
    -
    6586  if (yych <= '+')
    -
    6587  {
    -
    6588  goto basic_json_parser_30;
    -
    6589  }
    -
    6590  goto basic_json_parser_16;
    -
    6591  }
    -
    6592  else
    +
    6541  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6542  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6543  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6544  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6545  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6546  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6547  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6548  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6549  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6550  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6551  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6552  64, 64, 64, 64, 64, 64, 64, 64,
    +
    6553  };
    +
    6554  if ((m_limit - m_cursor) < 5)
    +
    6555  {
    +
    6556  yyfill(); // LCOV_EXCL_LINE;
    +
    6557  }
    +
    6558  yych = *m_cursor;
    +
    6559  if (yych <= ':')
    +
    6560  {
    +
    6561  if (yych <= ' ')
    +
    6562  {
    +
    6563  if (yych <= '\n')
    +
    6564  {
    +
    6565  if (yych <= 0x00)
    +
    6566  {
    +
    6567  goto basic_json_parser_28;
    +
    6568  }
    +
    6569  if (yych <= 0x08)
    +
    6570  {
    +
    6571  goto basic_json_parser_30;
    +
    6572  }
    +
    6573  if (yych >= '\n')
    +
    6574  {
    +
    6575  goto basic_json_parser_4;
    +
    6576  }
    +
    6577  }
    +
    6578  else
    +
    6579  {
    +
    6580  if (yych == '\r')
    +
    6581  {
    +
    6582  goto basic_json_parser_2;
    +
    6583  }
    +
    6584  if (yych <= 0x1F)
    +
    6585  {
    +
    6586  goto basic_json_parser_30;
    +
    6587  }
    +
    6588  }
    +
    6589  }
    +
    6590  else
    +
    6591  {
    +
    6592  if (yych <= ',')
    6593  {
    -
    6594  if (yych <= '/')
    +
    6594  if (yych == '"')
    6595  {
    -
    6596  if (yych <= '-')
    -
    6597  {
    -
    6598  goto basic_json_parser_23;
    -
    6599  }
    +
    6596  goto basic_json_parser_27;
    +
    6597  }
    +
    6598  if (yych <= '+')
    +
    6599  {
    6600  goto basic_json_parser_30;
    6601  }
    -
    6602  else
    -
    6603  {
    -
    6604  if (yych <= '0')
    -
    6605  {
    -
    6606  goto basic_json_parser_24;
    -
    6607  }
    -
    6608  if (yych <= '9')
    +
    6602  goto basic_json_parser_16;
    +
    6603  }
    +
    6604  else
    +
    6605  {
    +
    6606  if (yych <= '/')
    +
    6607  {
    +
    6608  if (yych <= '-')
    6609  {
    -
    6610  goto basic_json_parser_26;
    +
    6610  goto basic_json_parser_23;
    6611  }
    -
    6612  goto basic_json_parser_18;
    +
    6612  goto basic_json_parser_30;
    6613  }
    -
    6614  }
    -
    6615  }
    -
    6616  }
    -
    6617  else
    -
    6618  {
    -
    6619  if (yych <= 'n')
    -
    6620  {
    -
    6621  if (yych <= ']')
    -
    6622  {
    -
    6623  if (yych == '[')
    -
    6624  {
    -
    6625  goto basic_json_parser_8;
    -
    6626  }
    -
    6627  if (yych <= '\\')
    -
    6628  {
    -
    6629  goto basic_json_parser_30;
    -
    6630  }
    -
    6631  goto basic_json_parser_10;
    -
    6632  }
    -
    6633  else
    +
    6614  else
    +
    6615  {
    +
    6616  if (yych <= '0')
    +
    6617  {
    +
    6618  goto basic_json_parser_24;
    +
    6619  }
    +
    6620  if (yych <= '9')
    +
    6621  {
    +
    6622  goto basic_json_parser_26;
    +
    6623  }
    +
    6624  goto basic_json_parser_18;
    +
    6625  }
    +
    6626  }
    +
    6627  }
    +
    6628  }
    +
    6629  else
    +
    6630  {
    +
    6631  if (yych <= 'n')
    +
    6632  {
    +
    6633  if (yych <= ']')
    6634  {
    -
    6635  if (yych == 'f')
    +
    6635  if (yych == '[')
    6636  {
    -
    6637  goto basic_json_parser_22;
    +
    6637  goto basic_json_parser_8;
    6638  }
    -
    6639  if (yych <= 'm')
    +
    6639  if (yych <= '\\')
    6640  {
    6641  goto basic_json_parser_30;
    6642  }
    -
    6643  goto basic_json_parser_20;
    +
    6643  goto basic_json_parser_10;
    6644  }
    -
    6645  }
    -
    6646  else
    -
    6647  {
    -
    6648  if (yych <= '{')
    -
    6649  {
    -
    6650  if (yych == 't')
    -
    6651  {
    -
    6652  goto basic_json_parser_21;
    -
    6653  }
    -
    6654  if (yych <= 'z')
    -
    6655  {
    -
    6656  goto basic_json_parser_30;
    -
    6657  }
    -
    6658  goto basic_json_parser_12;
    -
    6659  }
    -
    6660  else
    +
    6645  else
    +
    6646  {
    +
    6647  if (yych == 'f')
    +
    6648  {
    +
    6649  goto basic_json_parser_22;
    +
    6650  }
    +
    6651  if (yych <= 'm')
    +
    6652  {
    +
    6653  goto basic_json_parser_30;
    +
    6654  }
    +
    6655  goto basic_json_parser_20;
    +
    6656  }
    +
    6657  }
    +
    6658  else
    +
    6659  {
    +
    6660  if (yych <= '{')
    6661  {
    -
    6662  if (yych <= '}')
    +
    6662  if (yych == 't')
    6663  {
    -
    6664  if (yych <= '|')
    -
    6665  {
    -
    6666  goto basic_json_parser_30;
    -
    6667  }
    -
    6668  goto basic_json_parser_14;
    +
    6664  goto basic_json_parser_21;
    +
    6665  }
    +
    6666  if (yych <= 'z')
    +
    6667  {
    +
    6668  goto basic_json_parser_30;
    6669  }
    -
    6670  else
    -
    6671  {
    -
    6672  if (yych == 0xEF)
    -
    6673  {
    -
    6674  goto basic_json_parser_6;
    -
    6675  }
    -
    6676  goto basic_json_parser_30;
    -
    6677  }
    -
    6678  }
    -
    6679  }
    -
    6680  }
    -
    6681 basic_json_parser_2:
    -
    6682  ++m_cursor;
    -
    6683  yych = *m_cursor;
    -
    6684  goto basic_json_parser_5;
    -
    6685 basic_json_parser_3:
    -
    6686  {
    -
    6687  return scan();
    -
    6688  }
    -
    6689 basic_json_parser_4:
    -
    6690  ++m_cursor;
    -
    6691  if (m_limit <= m_cursor)
    -
    6692  {
    -
    6693  yyfill(); // LCOV_EXCL_LINE;
    -
    6694  }
    +
    6670  goto basic_json_parser_12;
    +
    6671  }
    +
    6672  else
    +
    6673  {
    +
    6674  if (yych <= '}')
    +
    6675  {
    +
    6676  if (yych <= '|')
    +
    6677  {
    +
    6678  goto basic_json_parser_30;
    +
    6679  }
    +
    6680  goto basic_json_parser_14;
    +
    6681  }
    +
    6682  else
    +
    6683  {
    +
    6684  if (yych == 0xEF)
    +
    6685  {
    +
    6686  goto basic_json_parser_6;
    +
    6687  }
    +
    6688  goto basic_json_parser_30;
    +
    6689  }
    +
    6690  }
    +
    6691  }
    +
    6692  }
    +
    6693 basic_json_parser_2:
    +
    6694  ++m_cursor;
    6695  yych = *m_cursor;
    -
    6696 basic_json_parser_5:
    -
    6697  if (yybm[0 + yych] & 32)
    +
    6696  goto basic_json_parser_5;
    +
    6697 basic_json_parser_3:
    6698  {
    -
    6699  goto basic_json_parser_4;
    +
    6699  return scan();
    6700  }
    -
    6701  goto basic_json_parser_3;
    -
    6702 basic_json_parser_6:
    -
    6703  yyaccept = 0;
    -
    6704  yych = *(m_marker = ++m_cursor);
    -
    6705  if (yych == 0xBB)
    -
    6706  {
    -
    6707  goto basic_json_parser_64;
    -
    6708  }
    -
    6709 basic_json_parser_7:
    +
    6701 basic_json_parser_4:
    +
    6702  ++m_cursor;
    +
    6703  if (m_limit <= m_cursor)
    +
    6704  {
    +
    6705  yyfill(); // LCOV_EXCL_LINE;
    +
    6706  }
    +
    6707  yych = *m_cursor;
    +
    6708 basic_json_parser_5:
    +
    6709  if (yybm[0 + yych] & 32)
    6710  {
    -
    6711  return token_type::parse_error;
    +
    6711  goto basic_json_parser_4;
    6712  }
    -
    6713 basic_json_parser_8:
    -
    6714  ++m_cursor;
    -
    6715  {
    -
    6716  return token_type::begin_array;
    -
    6717  }
    -
    6718 basic_json_parser_10:
    -
    6719  ++m_cursor;
    -
    6720  {
    -
    6721  return token_type::end_array;
    -
    6722  }
    -
    6723 basic_json_parser_12:
    -
    6724  ++m_cursor;
    -
    6725  {
    -
    6726  return token_type::begin_object;
    -
    6727  }
    -
    6728 basic_json_parser_14:
    -
    6729  ++m_cursor;
    -
    6730  {
    -
    6731  return token_type::end_object;
    -
    6732  }
    -
    6733 basic_json_parser_16:
    -
    6734  ++m_cursor;
    -
    6735  {
    -
    6736  return token_type::value_separator;
    -
    6737  }
    -
    6738 basic_json_parser_18:
    -
    6739  ++m_cursor;
    -
    6740  {
    -
    6741  return token_type::name_separator;
    -
    6742  }
    -
    6743 basic_json_parser_20:
    -
    6744  yyaccept = 0;
    -
    6745  yych = *(m_marker = ++m_cursor);
    -
    6746  if (yych == 'u')
    +
    6713  goto basic_json_parser_3;
    +
    6714 basic_json_parser_6:
    +
    6715  yyaccept = 0;
    +
    6716  yych = *(m_marker = ++m_cursor);
    +
    6717  if (yych == 0xBB)
    +
    6718  {
    +
    6719  goto basic_json_parser_64;
    +
    6720  }
    +
    6721 basic_json_parser_7:
    +
    6722  {
    +
    6723  return token_type::parse_error;
    +
    6724  }
    +
    6725 basic_json_parser_8:
    +
    6726  ++m_cursor;
    +
    6727  {
    +
    6728  return token_type::begin_array;
    +
    6729  }
    +
    6730 basic_json_parser_10:
    +
    6731  ++m_cursor;
    +
    6732  {
    +
    6733  return token_type::end_array;
    +
    6734  }
    +
    6735 basic_json_parser_12:
    +
    6736  ++m_cursor;
    +
    6737  {
    +
    6738  return token_type::begin_object;
    +
    6739  }
    +
    6740 basic_json_parser_14:
    +
    6741  ++m_cursor;
    +
    6742  {
    +
    6743  return token_type::end_object;
    +
    6744  }
    +
    6745 basic_json_parser_16:
    +
    6746  ++m_cursor;
    6747  {
    -
    6748  goto basic_json_parser_60;
    +
    6748  return token_type::value_separator;
    6749  }
    -
    6750  goto basic_json_parser_7;
    -
    6751 basic_json_parser_21:
    -
    6752  yyaccept = 0;
    -
    6753  yych = *(m_marker = ++m_cursor);
    -
    6754  if (yych == 'r')
    -
    6755  {
    -
    6756  goto basic_json_parser_56;
    -
    6757  }
    -
    6758  goto basic_json_parser_7;
    -
    6759 basic_json_parser_22:
    -
    6760  yyaccept = 0;
    -
    6761  yych = *(m_marker = ++m_cursor);
    -
    6762  if (yych == 'a')
    -
    6763  {
    -
    6764  goto basic_json_parser_51;
    -
    6765  }
    -
    6766  goto basic_json_parser_7;
    -
    6767 basic_json_parser_23:
    -
    6768  yych = *++m_cursor;
    -
    6769  if (yych <= '/')
    -
    6770  {
    -
    6771  goto basic_json_parser_7;
    -
    6772  }
    -
    6773  if (yych <= '0')
    -
    6774  {
    -
    6775  goto basic_json_parser_50;
    -
    6776  }
    -
    6777  if (yych <= '9')
    -
    6778  {
    -
    6779  goto basic_json_parser_41;
    -
    6780  }
    -
    6781  goto basic_json_parser_7;
    -
    6782 basic_json_parser_24:
    -
    6783  yyaccept = 1;
    -
    6784  yych = *(m_marker = ++m_cursor);
    -
    6785  if (yych <= 'D')
    +
    6750 basic_json_parser_18:
    +
    6751  ++m_cursor;
    +
    6752  {
    +
    6753  return token_type::name_separator;
    +
    6754  }
    +
    6755 basic_json_parser_20:
    +
    6756  yyaccept = 0;
    +
    6757  yych = *(m_marker = ++m_cursor);
    +
    6758  if (yych == 'u')
    +
    6759  {
    +
    6760  goto basic_json_parser_60;
    +
    6761  }
    +
    6762  goto basic_json_parser_7;
    +
    6763 basic_json_parser_21:
    +
    6764  yyaccept = 0;
    +
    6765  yych = *(m_marker = ++m_cursor);
    +
    6766  if (yych == 'r')
    +
    6767  {
    +
    6768  goto basic_json_parser_56;
    +
    6769  }
    +
    6770  goto basic_json_parser_7;
    +
    6771 basic_json_parser_22:
    +
    6772  yyaccept = 0;
    +
    6773  yych = *(m_marker = ++m_cursor);
    +
    6774  if (yych == 'a')
    +
    6775  {
    +
    6776  goto basic_json_parser_51;
    +
    6777  }
    +
    6778  goto basic_json_parser_7;
    +
    6779 basic_json_parser_23:
    +
    6780  yych = *++m_cursor;
    +
    6781  if (yych <= '/')
    +
    6782  {
    +
    6783  goto basic_json_parser_7;
    +
    6784  }
    +
    6785  if (yych <= '0')
    6786  {
    -
    6787  if (yych == '.')
    -
    6788  {
    -
    6789  goto basic_json_parser_43;
    -
    6790  }
    -
    6791  }
    -
    6792  else
    -
    6793  {
    -
    6794  if (yych <= 'E')
    -
    6795  {
    -
    6796  goto basic_json_parser_44;
    -
    6797  }
    -
    6798  if (yych == 'e')
    -
    6799  {
    -
    6800  goto basic_json_parser_44;
    -
    6801  }
    -
    6802  }
    -
    6803 basic_json_parser_25:
    -
    6804  {
    -
    6805  return token_type::value_number;
    -
    6806  }
    -
    6807 basic_json_parser_26:
    -
    6808  yyaccept = 1;
    -
    6809  yych = *(m_marker = ++m_cursor);
    -
    6810  goto basic_json_parser_42;
    -
    6811 basic_json_parser_27:
    -
    6812  yyaccept = 0;
    -
    6813  yych = *(m_marker = ++m_cursor);
    -
    6814  if (yych <= 0x0F)
    -
    6815  {
    -
    6816  goto basic_json_parser_7;
    -
    6817  }
    -
    6818  goto basic_json_parser_32;
    -
    6819 basic_json_parser_28:
    -
    6820  ++m_cursor;
    -
    6821  {
    -
    6822  return token_type::end_of_input;
    -
    6823  }
    -
    6824 basic_json_parser_30:
    -
    6825  yych = *++m_cursor;
    -
    6826  goto basic_json_parser_7;
    -
    6827 basic_json_parser_31:
    -
    6828  ++m_cursor;
    -
    6829  if (m_limit <= m_cursor)
    -
    6830  {
    -
    6831  yyfill(); // LCOV_EXCL_LINE;
    -
    6832  }
    -
    6833  yych = *m_cursor;
    -
    6834 basic_json_parser_32:
    -
    6835  if (yybm[0 + yych] & 64)
    -
    6836  {
    -
    6837  goto basic_json_parser_31;
    -
    6838  }
    -
    6839  if (yych <= 0x0F)
    -
    6840  {
    -
    6841  goto basic_json_parser_33;
    -
    6842  }
    -
    6843  if (yych <= '"')
    -
    6844  {
    -
    6845  goto basic_json_parser_35;
    -
    6846  }
    -
    6847  goto basic_json_parser_34;
    -
    6848 basic_json_parser_33:
    -
    6849  m_cursor = m_marker;
    -
    6850  if (yyaccept == 0)
    -
    6851  {
    -
    6852  goto basic_json_parser_7;
    -
    6853  }
    -
    6854  else
    -
    6855  {
    -
    6856  goto basic_json_parser_25;
    -
    6857  }
    -
    6858 basic_json_parser_34:
    -
    6859  ++m_cursor;
    -
    6860  if (m_limit <= m_cursor)
    -
    6861  {
    -
    6862  yyfill(); // LCOV_EXCL_LINE;
    -
    6863  }
    -
    6864  yych = *m_cursor;
    -
    6865  if (yych <= 'e')
    -
    6866  {
    -
    6867  if (yych <= '/')
    -
    6868  {
    -
    6869  if (yych == '"')
    -
    6870  {
    -
    6871  goto basic_json_parser_31;
    -
    6872  }
    -
    6873  if (yych <= '.')
    -
    6874  {
    -
    6875  goto basic_json_parser_33;
    -
    6876  }
    -
    6877  goto basic_json_parser_31;
    -
    6878  }
    -
    6879  else
    +
    6787  goto basic_json_parser_50;
    +
    6788  }
    +
    6789  if (yych <= '9')
    +
    6790  {
    +
    6791  goto basic_json_parser_41;
    +
    6792  }
    +
    6793  goto basic_json_parser_7;
    +
    6794 basic_json_parser_24:
    +
    6795  yyaccept = 1;
    +
    6796  yych = *(m_marker = ++m_cursor);
    +
    6797  if (yych <= 'D')
    +
    6798  {
    +
    6799  if (yych == '.')
    +
    6800  {
    +
    6801  goto basic_json_parser_43;
    +
    6802  }
    +
    6803  }
    +
    6804  else
    +
    6805  {
    +
    6806  if (yych <= 'E')
    +
    6807  {
    +
    6808  goto basic_json_parser_44;
    +
    6809  }
    +
    6810  if (yych == 'e')
    +
    6811  {
    +
    6812  goto basic_json_parser_44;
    +
    6813  }
    +
    6814  }
    +
    6815 basic_json_parser_25:
    +
    6816  {
    +
    6817  return token_type::value_number;
    +
    6818  }
    +
    6819 basic_json_parser_26:
    +
    6820  yyaccept = 1;
    +
    6821  yych = *(m_marker = ++m_cursor);
    +
    6822  goto basic_json_parser_42;
    +
    6823 basic_json_parser_27:
    +
    6824  yyaccept = 0;
    +
    6825  yych = *(m_marker = ++m_cursor);
    +
    6826  if (yych <= 0x0F)
    +
    6827  {
    +
    6828  goto basic_json_parser_7;
    +
    6829  }
    +
    6830  goto basic_json_parser_32;
    +
    6831 basic_json_parser_28:
    +
    6832  ++m_cursor;
    +
    6833  {
    +
    6834  return token_type::end_of_input;
    +
    6835  }
    +
    6836 basic_json_parser_30:
    +
    6837  yych = *++m_cursor;
    +
    6838  goto basic_json_parser_7;
    +
    6839 basic_json_parser_31:
    +
    6840  ++m_cursor;
    +
    6841  if (m_limit <= m_cursor)
    +
    6842  {
    +
    6843  yyfill(); // LCOV_EXCL_LINE;
    +
    6844  }
    +
    6845  yych = *m_cursor;
    +
    6846 basic_json_parser_32:
    +
    6847  if (yybm[0 + yych] & 64)
    +
    6848  {
    +
    6849  goto basic_json_parser_31;
    +
    6850  }
    +
    6851  if (yych <= 0x0F)
    +
    6852  {
    +
    6853  goto basic_json_parser_33;
    +
    6854  }
    +
    6855  if (yych <= '"')
    +
    6856  {
    +
    6857  goto basic_json_parser_35;
    +
    6858  }
    +
    6859  goto basic_json_parser_34;
    +
    6860 basic_json_parser_33:
    +
    6861  m_cursor = m_marker;
    +
    6862  if (yyaccept == 0)
    +
    6863  {
    +
    6864  goto basic_json_parser_7;
    +
    6865  }
    +
    6866  else
    +
    6867  {
    +
    6868  goto basic_json_parser_25;
    +
    6869  }
    +
    6870 basic_json_parser_34:
    +
    6871  ++m_cursor;
    +
    6872  if (m_limit <= m_cursor)
    +
    6873  {
    +
    6874  yyfill(); // LCOV_EXCL_LINE;
    +
    6875  }
    +
    6876  yych = *m_cursor;
    +
    6877  if (yych <= 'e')
    +
    6878  {
    +
    6879  if (yych <= '/')
    6880  {
    -
    6881  if (yych <= '\\')
    +
    6881  if (yych == '"')
    6882  {
    -
    6883  if (yych <= '[')
    -
    6884  {
    -
    6885  goto basic_json_parser_33;
    -
    6886  }
    -
    6887  goto basic_json_parser_31;
    +
    6883  goto basic_json_parser_31;
    +
    6884  }
    +
    6885  if (yych <= '.')
    +
    6886  {
    +
    6887  goto basic_json_parser_33;
    6888  }
    -
    6889  else
    -
    6890  {
    -
    6891  if (yych == 'b')
    -
    6892  {
    -
    6893  goto basic_json_parser_31;
    -
    6894  }
    -
    6895  goto basic_json_parser_33;
    -
    6896  }
    -
    6897  }
    -
    6898  }
    -
    6899  else
    -
    6900  {
    -
    6901  if (yych <= 'q')
    -
    6902  {
    -
    6903  if (yych <= 'f')
    -
    6904  {
    -
    6905  goto basic_json_parser_31;
    -
    6906  }
    -
    6907  if (yych == 'n')
    -
    6908  {
    -
    6909  goto basic_json_parser_31;
    -
    6910  }
    -
    6911  goto basic_json_parser_33;
    -
    6912  }
    -
    6913  else
    +
    6889  goto basic_json_parser_31;
    +
    6890  }
    +
    6891  else
    +
    6892  {
    +
    6893  if (yych <= '\\')
    +
    6894  {
    +
    6895  if (yych <= '[')
    +
    6896  {
    +
    6897  goto basic_json_parser_33;
    +
    6898  }
    +
    6899  goto basic_json_parser_31;
    +
    6900  }
    +
    6901  else
    +
    6902  {
    +
    6903  if (yych == 'b')
    +
    6904  {
    +
    6905  goto basic_json_parser_31;
    +
    6906  }
    +
    6907  goto basic_json_parser_33;
    +
    6908  }
    +
    6909  }
    +
    6910  }
    +
    6911  else
    +
    6912  {
    +
    6913  if (yych <= 'q')
    6914  {
    -
    6915  if (yych <= 's')
    +
    6915  if (yych <= 'f')
    6916  {
    -
    6917  if (yych <= 'r')
    -
    6918  {
    -
    6919  goto basic_json_parser_31;
    -
    6920  }
    -
    6921  goto basic_json_parser_33;
    +
    6917  goto basic_json_parser_31;
    +
    6918  }
    +
    6919  if (yych == 'n')
    +
    6920  {
    +
    6921  goto basic_json_parser_31;
    6922  }
    -
    6923  else
    -
    6924  {
    -
    6925  if (yych <= 't')
    -
    6926  {
    -
    6927  goto basic_json_parser_31;
    -
    6928  }
    -
    6929  if (yych <= 'u')
    +
    6923  goto basic_json_parser_33;
    +
    6924  }
    +
    6925  else
    +
    6926  {
    +
    6927  if (yych <= 's')
    +
    6928  {
    +
    6929  if (yych <= 'r')
    6930  {
    -
    6931  goto basic_json_parser_37;
    +
    6931  goto basic_json_parser_31;
    6932  }
    6933  goto basic_json_parser_33;
    6934  }
    -
    6935  }
    -
    6936  }
    -
    6937 basic_json_parser_35:
    -
    6938  ++m_cursor;
    -
    6939  {
    -
    6940  return token_type::value_string;
    -
    6941  }
    -
    6942 basic_json_parser_37:
    -
    6943  ++m_cursor;
    -
    6944  if (m_limit <= m_cursor)
    -
    6945  {
    -
    6946  yyfill(); // LCOV_EXCL_LINE;
    -
    6947  }
    -
    6948  yych = *m_cursor;
    -
    6949  if (yych <= '@')
    -
    6950  {
    -
    6951  if (yych <= '/')
    -
    6952  {
    -
    6953  goto basic_json_parser_33;
    -
    6954  }
    -
    6955  if (yych >= ':')
    -
    6956  {
    -
    6957  goto basic_json_parser_33;
    -
    6958  }
    +
    6935  else
    +
    6936  {
    +
    6937  if (yych <= 't')
    +
    6938  {
    +
    6939  goto basic_json_parser_31;
    +
    6940  }
    +
    6941  if (yych <= 'u')
    +
    6942  {
    +
    6943  goto basic_json_parser_37;
    +
    6944  }
    +
    6945  goto basic_json_parser_33;
    +
    6946  }
    +
    6947  }
    +
    6948  }
    +
    6949 basic_json_parser_35:
    +
    6950  ++m_cursor;
    +
    6951  {
    +
    6952  return token_type::value_string;
    +
    6953  }
    +
    6954 basic_json_parser_37:
    +
    6955  ++m_cursor;
    +
    6956  if (m_limit <= m_cursor)
    +
    6957  {
    +
    6958  yyfill(); // LCOV_EXCL_LINE;
    6959  }
    -
    6960  else
    -
    6961  {
    -
    6962  if (yych <= 'F')
    -
    6963  {
    -
    6964  goto basic_json_parser_38;
    -
    6965  }
    -
    6966  if (yych <= '`')
    -
    6967  {
    -
    6968  goto basic_json_parser_33;
    -
    6969  }
    -
    6970  if (yych >= 'g')
    -
    6971  {
    -
    6972  goto basic_json_parser_33;
    -
    6973  }
    -
    6974  }
    -
    6975 basic_json_parser_38:
    -
    6976  ++m_cursor;
    -
    6977  if (m_limit <= m_cursor)
    -
    6978  {
    -
    6979  yyfill(); // LCOV_EXCL_LINE;
    -
    6980  }
    -
    6981  yych = *m_cursor;
    -
    6982  if (yych <= '@')
    -
    6983  {
    -
    6984  if (yych <= '/')
    -
    6985  {
    -
    6986  goto basic_json_parser_33;
    -
    6987  }
    -
    6988  if (yych >= ':')
    -
    6989  {
    -
    6990  goto basic_json_parser_33;
    -
    6991  }
    +
    6960  yych = *m_cursor;
    +
    6961  if (yych <= '@')
    +
    6962  {
    +
    6963  if (yych <= '/')
    +
    6964  {
    +
    6965  goto basic_json_parser_33;
    +
    6966  }
    +
    6967  if (yych >= ':')
    +
    6968  {
    +
    6969  goto basic_json_parser_33;
    +
    6970  }
    +
    6971  }
    +
    6972  else
    +
    6973  {
    +
    6974  if (yych <= 'F')
    +
    6975  {
    +
    6976  goto basic_json_parser_38;
    +
    6977  }
    +
    6978  if (yych <= '`')
    +
    6979  {
    +
    6980  goto basic_json_parser_33;
    +
    6981  }
    +
    6982  if (yych >= 'g')
    +
    6983  {
    +
    6984  goto basic_json_parser_33;
    +
    6985  }
    +
    6986  }
    +
    6987 basic_json_parser_38:
    +
    6988  ++m_cursor;
    +
    6989  if (m_limit <= m_cursor)
    +
    6990  {
    +
    6991  yyfill(); // LCOV_EXCL_LINE;
    6992  }
    -
    6993  else
    -
    6994  {
    -
    6995  if (yych <= 'F')
    -
    6996  {
    -
    6997  goto basic_json_parser_39;
    -
    6998  }
    -
    6999  if (yych <= '`')
    -
    7000  {
    -
    7001  goto basic_json_parser_33;
    -
    7002  }
    -
    7003  if (yych >= 'g')
    -
    7004  {
    -
    7005  goto basic_json_parser_33;
    -
    7006  }
    -
    7007  }
    -
    7008 basic_json_parser_39:
    -
    7009  ++m_cursor;
    -
    7010  if (m_limit <= m_cursor)
    -
    7011  {
    -
    7012  yyfill(); // LCOV_EXCL_LINE;
    -
    7013  }
    -
    7014  yych = *m_cursor;
    -
    7015  if (yych <= '@')
    -
    7016  {
    -
    7017  if (yych <= '/')
    -
    7018  {
    -
    7019  goto basic_json_parser_33;
    -
    7020  }
    -
    7021  if (yych >= ':')
    -
    7022  {
    -
    7023  goto basic_json_parser_33;
    -
    7024  }
    +
    6993  yych = *m_cursor;
    +
    6994  if (yych <= '@')
    +
    6995  {
    +
    6996  if (yych <= '/')
    +
    6997  {
    +
    6998  goto basic_json_parser_33;
    +
    6999  }
    +
    7000  if (yych >= ':')
    +
    7001  {
    +
    7002  goto basic_json_parser_33;
    +
    7003  }
    +
    7004  }
    +
    7005  else
    +
    7006  {
    +
    7007  if (yych <= 'F')
    +
    7008  {
    +
    7009  goto basic_json_parser_39;
    +
    7010  }
    +
    7011  if (yych <= '`')
    +
    7012  {
    +
    7013  goto basic_json_parser_33;
    +
    7014  }
    +
    7015  if (yych >= 'g')
    +
    7016  {
    +
    7017  goto basic_json_parser_33;
    +
    7018  }
    +
    7019  }
    +
    7020 basic_json_parser_39:
    +
    7021  ++m_cursor;
    +
    7022  if (m_limit <= m_cursor)
    +
    7023  {
    +
    7024  yyfill(); // LCOV_EXCL_LINE;
    7025  }
    -
    7026  else
    -
    7027  {
    -
    7028  if (yych <= 'F')
    -
    7029  {
    -
    7030  goto basic_json_parser_40;
    -
    7031  }
    -
    7032  if (yych <= '`')
    -
    7033  {
    -
    7034  goto basic_json_parser_33;
    -
    7035  }
    -
    7036  if (yych >= 'g')
    -
    7037  {
    -
    7038  goto basic_json_parser_33;
    -
    7039  }
    -
    7040  }
    -
    7041 basic_json_parser_40:
    -
    7042  ++m_cursor;
    -
    7043  if (m_limit <= m_cursor)
    -
    7044  {
    -
    7045  yyfill(); // LCOV_EXCL_LINE;
    -
    7046  }
    -
    7047  yych = *m_cursor;
    -
    7048  if (yych <= '@')
    -
    7049  {
    -
    7050  if (yych <= '/')
    -
    7051  {
    -
    7052  goto basic_json_parser_33;
    -
    7053  }
    -
    7054  if (yych <= '9')
    -
    7055  {
    -
    7056  goto basic_json_parser_31;
    -
    7057  }
    -
    7058  goto basic_json_parser_33;
    -
    7059  }
    -
    7060  else
    +
    7026  yych = *m_cursor;
    +
    7027  if (yych <= '@')
    +
    7028  {
    +
    7029  if (yych <= '/')
    +
    7030  {
    +
    7031  goto basic_json_parser_33;
    +
    7032  }
    +
    7033  if (yych >= ':')
    +
    7034  {
    +
    7035  goto basic_json_parser_33;
    +
    7036  }
    +
    7037  }
    +
    7038  else
    +
    7039  {
    +
    7040  if (yych <= 'F')
    +
    7041  {
    +
    7042  goto basic_json_parser_40;
    +
    7043  }
    +
    7044  if (yych <= '`')
    +
    7045  {
    +
    7046  goto basic_json_parser_33;
    +
    7047  }
    +
    7048  if (yych >= 'g')
    +
    7049  {
    +
    7050  goto basic_json_parser_33;
    +
    7051  }
    +
    7052  }
    +
    7053 basic_json_parser_40:
    +
    7054  ++m_cursor;
    +
    7055  if (m_limit <= m_cursor)
    +
    7056  {
    +
    7057  yyfill(); // LCOV_EXCL_LINE;
    +
    7058  }
    +
    7059  yych = *m_cursor;
    +
    7060  if (yych <= '@')
    7061  {
    -
    7062  if (yych <= 'F')
    +
    7062  if (yych <= '/')
    7063  {
    -
    7064  goto basic_json_parser_31;
    +
    7064  goto basic_json_parser_33;
    7065  }
    -
    7066  if (yych <= '`')
    +
    7066  if (yych <= '9')
    7067  {
    -
    7068  goto basic_json_parser_33;
    +
    7068  goto basic_json_parser_31;
    7069  }
    -
    7070  if (yych <= 'f')
    -
    7071  {
    -
    7072  goto basic_json_parser_31;
    -
    7073  }
    -
    7074  goto basic_json_parser_33;
    -
    7075  }
    -
    7076 basic_json_parser_41:
    -
    7077  yyaccept = 1;
    -
    7078  m_marker = ++m_cursor;
    -
    7079  if ((m_limit - m_cursor) < 3)
    -
    7080  {
    -
    7081  yyfill(); // LCOV_EXCL_LINE;
    -
    7082  }
    -
    7083  yych = *m_cursor;
    -
    7084 basic_json_parser_42:
    -
    7085  if (yybm[0 + yych] & 128)
    -
    7086  {
    -
    7087  goto basic_json_parser_41;
    -
    7088  }
    -
    7089  if (yych <= 'D')
    -
    7090  {
    -
    7091  if (yych != '.')
    -
    7092  {
    -
    7093  goto basic_json_parser_25;
    -
    7094  }
    -
    7095  }
    -
    7096  else
    -
    7097  {
    -
    7098  if (yych <= 'E')
    -
    7099  {
    -
    7100  goto basic_json_parser_44;
    -
    7101  }
    -
    7102  if (yych == 'e')
    -
    7103  {
    -
    7104  goto basic_json_parser_44;
    -
    7105  }
    -
    7106  goto basic_json_parser_25;
    +
    7070  goto basic_json_parser_33;
    +
    7071  }
    +
    7072  else
    +
    7073  {
    +
    7074  if (yych <= 'F')
    +
    7075  {
    +
    7076  goto basic_json_parser_31;
    +
    7077  }
    +
    7078  if (yych <= '`')
    +
    7079  {
    +
    7080  goto basic_json_parser_33;
    +
    7081  }
    +
    7082  if (yych <= 'f')
    +
    7083  {
    +
    7084  goto basic_json_parser_31;
    +
    7085  }
    +
    7086  goto basic_json_parser_33;
    +
    7087  }
    +
    7088 basic_json_parser_41:
    +
    7089  yyaccept = 1;
    +
    7090  m_marker = ++m_cursor;
    +
    7091  if ((m_limit - m_cursor) < 3)
    +
    7092  {
    +
    7093  yyfill(); // LCOV_EXCL_LINE;
    +
    7094  }
    +
    7095  yych = *m_cursor;
    +
    7096 basic_json_parser_42:
    +
    7097  if (yybm[0 + yych] & 128)
    +
    7098  {
    +
    7099  goto basic_json_parser_41;
    +
    7100  }
    +
    7101  if (yych <= 'D')
    +
    7102  {
    +
    7103  if (yych != '.')
    +
    7104  {
    +
    7105  goto basic_json_parser_25;
    +
    7106  }
    7107  }
    -
    7108 basic_json_parser_43:
    -
    7109  yych = *++m_cursor;
    -
    7110  if (yych <= '/')
    -
    7111  {
    -
    7112  goto basic_json_parser_33;
    -
    7113  }
    -
    7114  if (yych <= '9')
    -
    7115  {
    -
    7116  goto basic_json_parser_48;
    -
    7117  }
    -
    7118  goto basic_json_parser_33;
    -
    7119 basic_json_parser_44:
    -
    7120  yych = *++m_cursor;
    -
    7121  if (yych <= ',')
    -
    7122  {
    -
    7123  if (yych != '+')
    -
    7124  {
    -
    7125  goto basic_json_parser_33;
    -
    7126  }
    -
    7127  }
    -
    7128  else
    -
    7129  {
    -
    7130  if (yych <= '-')
    -
    7131  {
    -
    7132  goto basic_json_parser_45;
    -
    7133  }
    -
    7134  if (yych <= '/')
    -
    7135  {
    -
    7136  goto basic_json_parser_33;
    -
    7137  }
    -
    7138  if (yych <= '9')
    -
    7139  {
    -
    7140  goto basic_json_parser_46;
    -
    7141  }
    -
    7142  goto basic_json_parser_33;
    -
    7143  }
    -
    7144 basic_json_parser_45:
    -
    7145  yych = *++m_cursor;
    -
    7146  if (yych <= '/')
    -
    7147  {
    -
    7148  goto basic_json_parser_33;
    -
    7149  }
    -
    7150  if (yych >= ':')
    -
    7151  {
    -
    7152  goto basic_json_parser_33;
    -
    7153  }
    -
    7154 basic_json_parser_46:
    -
    7155  ++m_cursor;
    -
    7156  if (m_limit <= m_cursor)
    -
    7157  {
    -
    7158  yyfill(); // LCOV_EXCL_LINE;
    -
    7159  }
    -
    7160  yych = *m_cursor;
    -
    7161  if (yych <= '/')
    -
    7162  {
    -
    7163  goto basic_json_parser_25;
    -
    7164  }
    -
    7165  if (yych <= '9')
    -
    7166  {
    -
    7167  goto basic_json_parser_46;
    -
    7168  }
    -
    7169  goto basic_json_parser_25;
    -
    7170 basic_json_parser_48:
    -
    7171  yyaccept = 1;
    -
    7172  m_marker = ++m_cursor;
    -
    7173  if ((m_limit - m_cursor) < 3)
    +
    7108  else
    +
    7109  {
    +
    7110  if (yych <= 'E')
    +
    7111  {
    +
    7112  goto basic_json_parser_44;
    +
    7113  }
    +
    7114  if (yych == 'e')
    +
    7115  {
    +
    7116  goto basic_json_parser_44;
    +
    7117  }
    +
    7118  goto basic_json_parser_25;
    +
    7119  }
    +
    7120 basic_json_parser_43:
    +
    7121  yych = *++m_cursor;
    +
    7122  if (yych <= '/')
    +
    7123  {
    +
    7124  goto basic_json_parser_33;
    +
    7125  }
    +
    7126  if (yych <= '9')
    +
    7127  {
    +
    7128  goto basic_json_parser_48;
    +
    7129  }
    +
    7130  goto basic_json_parser_33;
    +
    7131 basic_json_parser_44:
    +
    7132  yych = *++m_cursor;
    +
    7133  if (yych <= ',')
    +
    7134  {
    +
    7135  if (yych != '+')
    +
    7136  {
    +
    7137  goto basic_json_parser_33;
    +
    7138  }
    +
    7139  }
    +
    7140  else
    +
    7141  {
    +
    7142  if (yych <= '-')
    +
    7143  {
    +
    7144  goto basic_json_parser_45;
    +
    7145  }
    +
    7146  if (yych <= '/')
    +
    7147  {
    +
    7148  goto basic_json_parser_33;
    +
    7149  }
    +
    7150  if (yych <= '9')
    +
    7151  {
    +
    7152  goto basic_json_parser_46;
    +
    7153  }
    +
    7154  goto basic_json_parser_33;
    +
    7155  }
    +
    7156 basic_json_parser_45:
    +
    7157  yych = *++m_cursor;
    +
    7158  if (yych <= '/')
    +
    7159  {
    +
    7160  goto basic_json_parser_33;
    +
    7161  }
    +
    7162  if (yych >= ':')
    +
    7163  {
    +
    7164  goto basic_json_parser_33;
    +
    7165  }
    +
    7166 basic_json_parser_46:
    +
    7167  ++m_cursor;
    +
    7168  if (m_limit <= m_cursor)
    +
    7169  {
    +
    7170  yyfill(); // LCOV_EXCL_LINE;
    +
    7171  }
    +
    7172  yych = *m_cursor;
    +
    7173  if (yych <= '/')
    7174  {
    -
    7175  yyfill(); // LCOV_EXCL_LINE;
    +
    7175  goto basic_json_parser_25;
    7176  }
    -
    7177  yych = *m_cursor;
    -
    7178  if (yych <= 'D')
    -
    7179  {
    -
    7180  if (yych <= '/')
    -
    7181  {
    -
    7182  goto basic_json_parser_25;
    -
    7183  }
    -
    7184  if (yych <= '9')
    -
    7185  {
    -
    7186  goto basic_json_parser_48;
    -
    7187  }
    -
    7188  goto basic_json_parser_25;
    -
    7189  }
    -
    7190  else
    +
    7177  if (yych <= '9')
    +
    7178  {
    +
    7179  goto basic_json_parser_46;
    +
    7180  }
    +
    7181  goto basic_json_parser_25;
    +
    7182 basic_json_parser_48:
    +
    7183  yyaccept = 1;
    +
    7184  m_marker = ++m_cursor;
    +
    7185  if ((m_limit - m_cursor) < 3)
    +
    7186  {
    +
    7187  yyfill(); // LCOV_EXCL_LINE;
    +
    7188  }
    +
    7189  yych = *m_cursor;
    +
    7190  if (yych <= 'D')
    7191  {
    -
    7192  if (yych <= 'E')
    +
    7192  if (yych <= '/')
    7193  {
    -
    7194  goto basic_json_parser_44;
    +
    7194  goto basic_json_parser_25;
    7195  }
    -
    7196  if (yych == 'e')
    +
    7196  if (yych <= '9')
    7197  {
    -
    7198  goto basic_json_parser_44;
    +
    7198  goto basic_json_parser_48;
    7199  }
    7200  goto basic_json_parser_25;
    7201  }
    -
    7202 basic_json_parser_50:
    -
    7203  yyaccept = 1;
    -
    7204  yych = *(m_marker = ++m_cursor);
    -
    7205  if (yych <= 'D')
    -
    7206  {
    -
    7207  if (yych == '.')
    -
    7208  {
    -
    7209  goto basic_json_parser_43;
    -
    7210  }
    -
    7211  goto basic_json_parser_25;
    -
    7212  }
    -
    7213  else
    -
    7214  {
    -
    7215  if (yych <= 'E')
    -
    7216  {
    -
    7217  goto basic_json_parser_44;
    -
    7218  }
    -
    7219  if (yych == 'e')
    +
    7202  else
    +
    7203  {
    +
    7204  if (yych <= 'E')
    +
    7205  {
    +
    7206  goto basic_json_parser_44;
    +
    7207  }
    +
    7208  if (yych == 'e')
    +
    7209  {
    +
    7210  goto basic_json_parser_44;
    +
    7211  }
    +
    7212  goto basic_json_parser_25;
    +
    7213  }
    +
    7214 basic_json_parser_50:
    +
    7215  yyaccept = 1;
    +
    7216  yych = *(m_marker = ++m_cursor);
    +
    7217  if (yych <= 'D')
    +
    7218  {
    +
    7219  if (yych == '.')
    7220  {
    -
    7221  goto basic_json_parser_44;
    +
    7221  goto basic_json_parser_43;
    7222  }
    7223  goto basic_json_parser_25;
    7224  }
    -
    7225 basic_json_parser_51:
    -
    7226  yych = *++m_cursor;
    -
    7227  if (yych != 'l')
    -
    7228  {
    -
    7229  goto basic_json_parser_33;
    -
    7230  }
    -
    7231  yych = *++m_cursor;
    -
    7232  if (yych != 's')
    -
    7233  {
    -
    7234  goto basic_json_parser_33;
    -
    7235  }
    -
    7236  yych = *++m_cursor;
    -
    7237  if (yych != 'e')
    -
    7238  {
    -
    7239  goto basic_json_parser_33;
    -
    7240  }
    -
    7241  ++m_cursor;
    -
    7242  {
    -
    7243  return token_type::literal_false;
    -
    7244  }
    -
    7245 basic_json_parser_56:
    -
    7246  yych = *++m_cursor;
    -
    7247  if (yych != 'u')
    -
    7248  {
    -
    7249  goto basic_json_parser_33;
    -
    7250  }
    -
    7251  yych = *++m_cursor;
    -
    7252  if (yych != 'e')
    -
    7253  {
    -
    7254  goto basic_json_parser_33;
    -
    7255  }
    -
    7256  ++m_cursor;
    -
    7257  {
    -
    7258  return token_type::literal_true;
    -
    7259  }
    -
    7260 basic_json_parser_60:
    -
    7261  yych = *++m_cursor;
    -
    7262  if (yych != 'l')
    -
    7263  {
    -
    7264  goto basic_json_parser_33;
    -
    7265  }
    -
    7266  yych = *++m_cursor;
    -
    7267  if (yych != 'l')
    -
    7268  {
    -
    7269  goto basic_json_parser_33;
    -
    7270  }
    -
    7271  ++m_cursor;
    -
    7272  {
    -
    7273  return token_type::literal_null;
    -
    7274  }
    -
    7275 basic_json_parser_64:
    -
    7276  yych = *++m_cursor;
    -
    7277  if (yych != 0xBF)
    -
    7278  {
    -
    7279  goto basic_json_parser_33;
    -
    7280  }
    -
    7281  ++m_cursor;
    -
    7282  {
    -
    7283  return scan();
    -
    7284  }
    -
    7285  }
    -
    7286 
    -
    7287 
    -
    7288  }
    -
    7289 
    -
    7291  void yyfill() noexcept
    -
    7292  {
    -
    7293  if (not m_stream or not * m_stream)
    -
    7294  {
    -
    7295  return;
    -
    7296  }
    -
    7297 
    -
    7298  const ssize_t offset_start = m_start - m_content;
    -
    7299  const ssize_t offset_marker = m_marker - m_start;
    -
    7300  const ssize_t offset_cursor = m_cursor - m_start;
    +
    7225  else
    +
    7226  {
    +
    7227  if (yych <= 'E')
    +
    7228  {
    +
    7229  goto basic_json_parser_44;
    +
    7230  }
    +
    7231  if (yych == 'e')
    +
    7232  {
    +
    7233  goto basic_json_parser_44;
    +
    7234  }
    +
    7235  goto basic_json_parser_25;
    +
    7236  }
    +
    7237 basic_json_parser_51:
    +
    7238  yych = *++m_cursor;
    +
    7239  if (yych != 'l')
    +
    7240  {
    +
    7241  goto basic_json_parser_33;
    +
    7242  }
    +
    7243  yych = *++m_cursor;
    +
    7244  if (yych != 's')
    +
    7245  {
    +
    7246  goto basic_json_parser_33;
    +
    7247  }
    +
    7248  yych = *++m_cursor;
    +
    7249  if (yych != 'e')
    +
    7250  {
    +
    7251  goto basic_json_parser_33;
    +
    7252  }
    +
    7253  ++m_cursor;
    +
    7254  {
    +
    7255  return token_type::literal_false;
    +
    7256  }
    +
    7257 basic_json_parser_56:
    +
    7258  yych = *++m_cursor;
    +
    7259  if (yych != 'u')
    +
    7260  {
    +
    7261  goto basic_json_parser_33;
    +
    7262  }
    +
    7263  yych = *++m_cursor;
    +
    7264  if (yych != 'e')
    +
    7265  {
    +
    7266  goto basic_json_parser_33;
    +
    7267  }
    +
    7268  ++m_cursor;
    +
    7269  {
    +
    7270  return token_type::literal_true;
    +
    7271  }
    +
    7272 basic_json_parser_60:
    +
    7273  yych = *++m_cursor;
    +
    7274  if (yych != 'l')
    +
    7275  {
    +
    7276  goto basic_json_parser_33;
    +
    7277  }
    +
    7278  yych = *++m_cursor;
    +
    7279  if (yych != 'l')
    +
    7280  {
    +
    7281  goto basic_json_parser_33;
    +
    7282  }
    +
    7283  ++m_cursor;
    +
    7284  {
    +
    7285  return token_type::literal_null;
    +
    7286  }
    +
    7287 basic_json_parser_64:
    +
    7288  yych = *++m_cursor;
    +
    7289  if (yych != 0xBF)
    +
    7290  {
    +
    7291  goto basic_json_parser_33;
    +
    7292  }
    +
    7293  ++m_cursor;
    +
    7294  {
    +
    7295  return scan();
    +
    7296  }
    +
    7297  }
    +
    7298 
    +
    7299 
    +
    7300  }
    7301 
    -
    7302  m_buffer.erase(0, static_cast<size_t>(offset_start));
    -
    7303  std::string line;
    -
    7304  std::getline(*m_stream, line);
    -
    7305  m_buffer += "\n" + line; // add line with newline symbol
    -
    7306 
    -
    7307  m_content = reinterpret_cast<const lexer_char_t*>(m_buffer.c_str());
    -
    7308  m_start = m_content;
    -
    7309  m_marker = m_start + offset_marker;
    -
    7310  m_cursor = m_start + offset_cursor;
    -
    7311  m_limit = m_start + m_buffer.size() - 1;
    -
    7312  }
    +
    7303  void yyfill() noexcept
    +
    7304  {
    +
    7305  if (not m_stream or not * m_stream)
    +
    7306  {
    +
    7307  return;
    +
    7308  }
    +
    7309 
    +
    7310  const ssize_t offset_start = m_start - m_content;
    +
    7311  const ssize_t offset_marker = m_marker - m_start;
    +
    7312  const ssize_t offset_cursor = m_cursor - m_start;
    7313 
    -
    7315  string_t get_token() const noexcept
    -
    7316  {
    -
    7317  return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start),
    -
    7318  static_cast<size_t>(m_cursor - m_start));
    -
    7319  }
    -
    7320 
    -
    7342  string_t get_string() const
    -
    7343  {
    -
    7344  string_t result;
    -
    7345  result.reserve(static_cast<size_t>(m_cursor - m_start - 2));
    -
    7346 
    -
    7347  // iterate the result between the quotes
    -
    7348  for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i)
    -
    7349  {
    -
    7350  // process escaped characters
    -
    7351  if (*i == '\\')
    -
    7352  {
    -
    7353  // read next character
    -
    7354  ++i;
    -
    7355 
    -
    7356  switch (*i)
    -
    7357  {
    -
    7358  // the default escapes
    -
    7359  case 't':
    -
    7360  {
    -
    7361  result += "\t";
    -
    7362  break;
    -
    7363  }
    -
    7364  case 'b':
    -
    7365  {
    -
    7366  result += "\b";
    -
    7367  break;
    -
    7368  }
    -
    7369  case 'f':
    -
    7370  {
    -
    7371  result += "\f";
    -
    7372  break;
    -
    7373  }
    -
    7374  case 'n':
    -
    7375  {
    -
    7376  result += "\n";
    -
    7377  break;
    -
    7378  }
    -
    7379  case 'r':
    -
    7380  {
    -
    7381  result += "\r";
    -
    7382  break;
    -
    7383  }
    -
    7384  case '\\':
    -
    7385  {
    -
    7386  result += "\\";
    -
    7387  break;
    -
    7388  }
    -
    7389  case '/':
    -
    7390  {
    -
    7391  result += "/";
    -
    7392  break;
    -
    7393  }
    -
    7394  case '"':
    -
    7395  {
    -
    7396  result += "\"";
    -
    7397  break;
    -
    7398  }
    -
    7399 
    -
    7400  // unicode
    -
    7401  case 'u':
    +
    7314  m_buffer.erase(0, static_cast<size_t>(offset_start));
    +
    7315  std::string line;
    +
    7316  std::getline(*m_stream, line);
    +
    7317  m_buffer += "\n" + line; // add line with newline symbol
    +
    7318 
    +
    7319  m_content = reinterpret_cast<const lexer_char_t*>(m_buffer.c_str());
    +
    7320  m_start = m_content;
    +
    7321  m_marker = m_start + offset_marker;
    +
    7322  m_cursor = m_start + offset_cursor;
    +
    7323  m_limit = m_start + m_buffer.size() - 1;
    +
    7324  }
    +
    7325 
    +
    7327  string_t get_token() const noexcept
    +
    7328  {
    +
    7329  return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start),
    +
    7330  static_cast<size_t>(m_cursor - m_start));
    +
    7331  }
    +
    7332 
    +
    7354  string_t get_string() const
    +
    7355  {
    +
    7356  string_t result;
    +
    7357  result.reserve(static_cast<size_t>(m_cursor - m_start - 2));
    +
    7358 
    +
    7359  // iterate the result between the quotes
    +
    7360  for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i)
    +
    7361  {
    +
    7362  // process escaped characters
    +
    7363  if (*i == '\\')
    +
    7364  {
    +
    7365  // read next character
    +
    7366  ++i;
    +
    7367 
    +
    7368  switch (*i)
    +
    7369  {
    +
    7370  // the default escapes
    +
    7371  case 't':
    +
    7372  {
    +
    7373  result += "\t";
    +
    7374  break;
    +
    7375  }
    +
    7376  case 'b':
    +
    7377  {
    +
    7378  result += "\b";
    +
    7379  break;
    +
    7380  }
    +
    7381  case 'f':
    +
    7382  {
    +
    7383  result += "\f";
    +
    7384  break;
    +
    7385  }
    +
    7386  case 'n':
    +
    7387  {
    +
    7388  result += "\n";
    +
    7389  break;
    +
    7390  }
    +
    7391  case 'r':
    +
    7392  {
    +
    7393  result += "\r";
    +
    7394  break;
    +
    7395  }
    +
    7396  case '\\':
    +
    7397  {
    +
    7398  result += "\\";
    +
    7399  break;
    +
    7400  }
    +
    7401  case '/':
    7402  {
    -
    7403  // get code xxxx from uxxxx
    -
    7404  auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1),
    -
    7405  4).c_str(), nullptr, 16);
    -
    7406 
    -
    7407  // check if codepoint is a high surrogate
    -
    7408  if (codepoint >= 0xD800 and codepoint <= 0xDBFF)
    -
    7409  {
    -
    7410  // make sure there is a subsequent unicode
    -
    7411  if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u')
    -
    7412  {
    -
    7413  throw std::invalid_argument("missing low surrogate");
    -
    7414  }
    -
    7415 
    -
    7416  // get code yyyy from uxxxx\uyyyy
    -
    7417  auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>
    -
    7418  (i + 7), 4).c_str(), nullptr, 16);
    -
    7419  result += to_unicode(codepoint, codepoint2);
    -
    7420  // skip the next 10 characters (xxxx\uyyyy)
    -
    7421  i += 10;
    -
    7422  }
    -
    7423  else
    -
    7424  {
    -
    7425  // add unicode character(s)
    -
    7426  result += to_unicode(codepoint);
    -
    7427  // skip the next four characters (xxxx)
    -
    7428  i += 4;
    -
    7429  }
    -
    7430  break;
    -
    7431  }
    -
    7432  }
    -
    7433  }
    -
    7434  else
    -
    7435  {
    -
    7436  // all other characters are just copied to the end of the
    -
    7437  // string
    -
    7438  result.append(1, static_cast<typename string_t::value_type>(*i));
    -
    7439  }
    -
    7440  }
    -
    7441 
    -
    7442  return result;
    -
    7443  }
    -
    7444 
    -
    7462  long double get_number() const
    -
    7463  {
    -
    7464  // conversion
    -
    7465  typename string_t::value_type* endptr;
    -
    7466  const auto float_val = std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start),
    -
    7467  &endptr);
    -
    7468 
    -
    7469  // return float_val if the whole number was translated and NAN
    -
    7470  // otherwise
    -
    7471  return (reinterpret_cast<lexer_char_t*>(endptr) == m_cursor) ? float_val : NAN;
    -
    7472  }
    -
    7473 
    -
    7474  private:
    -
    7476  std::istream* m_stream;
    -
    7478  string_t m_buffer;
    -
    7480  const lexer_char_t* m_content = nullptr;
    -
    7482  const lexer_char_t* m_start = nullptr;
    -
    7484  const lexer_char_t* m_marker = nullptr;
    -
    7486  const lexer_char_t* m_cursor = nullptr;
    -
    7488  const lexer_char_t* m_limit = nullptr;
    -
    7489  };
    -
    7490 
    -
    7496  class parser
    -
    7497  {
    -
    7498  public:
    -
    7500  parser(const string_t& s, parser_callback_t cb = nullptr)
    -
    7501  : callback(cb), m_lexer(s)
    -
    7502  {
    -
    7503  // read first token
    -
    7504  get_token();
    -
    7505  }
    -
    7506 
    -
    7508  parser(std::istream& _is, parser_callback_t cb = nullptr)
    -
    7509  : callback(cb), m_lexer(&_is)
    -
    7510  {
    -
    7511  // read first token
    -
    7512  get_token();
    -
    7513  }
    -
    7514 
    -
    7516  basic_json parse()
    -
    7517  {
    -
    7518  basic_json result = parse_internal(true);
    -
    7519 
    -
    7520  expect(lexer::token_type::end_of_input);
    -
    7521 
    -
    7522  // return parser result and replace it with null in case the
    -
    7523  // top-level value was discarded by the callback function
    -
    7524  return result.is_discarded() ? basic_json() : result;
    +
    7403  result += "/";
    +
    7404  break;
    +
    7405  }
    +
    7406  case '"':
    +
    7407  {
    +
    7408  result += "\"";
    +
    7409  break;
    +
    7410  }
    +
    7411 
    +
    7412  // unicode
    +
    7413  case 'u':
    +
    7414  {
    +
    7415  // get code xxxx from uxxxx
    +
    7416  auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1),
    +
    7417  4).c_str(), nullptr, 16);
    +
    7418 
    +
    7419  // check if codepoint is a high surrogate
    +
    7420  if (codepoint >= 0xD800 and codepoint <= 0xDBFF)
    +
    7421  {
    +
    7422  // make sure there is a subsequent unicode
    +
    7423  if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u')
    +
    7424  {
    +
    7425  throw std::invalid_argument("missing low surrogate");
    +
    7426  }
    +
    7427 
    +
    7428  // get code yyyy from uxxxx\uyyyy
    +
    7429  auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>
    +
    7430  (i + 7), 4).c_str(), nullptr, 16);
    +
    7431  result += to_unicode(codepoint, codepoint2);
    +
    7432  // skip the next 10 characters (xxxx\uyyyy)
    +
    7433  i += 10;
    +
    7434  }
    +
    7435  else
    +
    7436  {
    +
    7437  // add unicode character(s)
    +
    7438  result += to_unicode(codepoint);
    +
    7439  // skip the next four characters (xxxx)
    +
    7440  i += 4;
    +
    7441  }
    +
    7442  break;
    +
    7443  }
    +
    7444  }
    +
    7445  }
    +
    7446  else
    +
    7447  {
    +
    7448  // all other characters are just copied to the end of the
    +
    7449  // string
    +
    7450  result.append(1, static_cast<typename string_t::value_type>(*i));
    +
    7451  }
    +
    7452  }
    +
    7453 
    +
    7454  return result;
    +
    7455  }
    +
    7456 
    +
    7474  long double get_number() const
    +
    7475  {
    +
    7476  // conversion
    +
    7477  typename string_t::value_type* endptr;
    +
    7478  const auto float_val = std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start),
    +
    7479  &endptr);
    +
    7480 
    +
    7481  // return float_val if the whole number was translated and NAN
    +
    7482  // otherwise
    +
    7483  return (reinterpret_cast<lexer_char_t*>(endptr) == m_cursor) ? float_val : NAN;
    +
    7484  }
    +
    7485 
    +
    7486  private:
    +
    7488  std::istream* m_stream;
    +
    7490  string_t m_buffer;
    +
    7492  const lexer_char_t* m_content = nullptr;
    +
    7494  const lexer_char_t* m_start = nullptr;
    +
    7496  const lexer_char_t* m_marker = nullptr;
    +
    7498  const lexer_char_t* m_cursor = nullptr;
    +
    7500  const lexer_char_t* m_limit = nullptr;
    +
    7501  };
    +
    7502 
    +
    7508  class parser
    +
    7509  {
    +
    7510  public:
    +
    7512  parser(const string_t& s, parser_callback_t cb = nullptr)
    +
    7513  : callback(cb), m_lexer(s)
    +
    7514  {
    +
    7515  // read first token
    +
    7516  get_token();
    +
    7517  }
    +
    7518 
    +
    7520  parser(std::istream& _is, parser_callback_t cb = nullptr)
    +
    7521  : callback(cb), m_lexer(&_is)
    +
    7522  {
    +
    7523  // read first token
    +
    7524  get_token();
    7525  }
    7526 
    -
    7527  private:
    -
    7529  basic_json parse_internal(bool keep)
    -
    7530  {
    -
    7531  auto result = basic_json(value_t::discarded);
    -
    7532 
    -
    7533  switch (last_token)
    -
    7534  {
    -
    7535  case lexer::token_type::begin_object:
    -
    7536  {
    -
    7537  if (keep and (not callback or (keep = callback(depth++, parse_event_t::object_start, result))))
    -
    7538  {
    -
    7539  // explicitly set result to object to cope with {}
    -
    7540  result.m_type = value_t::object;
    -
    7541  result.m_value = json_value(value_t::object);
    -
    7542  }
    -
    7543 
    -
    7544  // read next token
    -
    7545  get_token();
    -
    7546 
    -
    7547  // closing } -> we are done
    -
    7548  if (last_token == lexer::token_type::end_object)
    -
    7549  {
    -
    7550  get_token();
    -
    7551  if (keep and callback and not callback(--depth, parse_event_t::object_end, result))
    -
    7552  {
    -
    7553  result = basic_json(value_t::discarded);
    -
    7554  }
    -
    7555  return result;
    -
    7556  }
    -
    7557 
    -
    7558  // no comma is expected here
    -
    7559  unexpect(lexer::token_type::value_separator);
    -
    7560 
    -
    7561  // otherwise: parse key-value pairs
    -
    7562  do
    -
    7563  {
    -
    7564  // ugly, but could be fixed with loop reorganization
    -
    7565  if (last_token == lexer::token_type::value_separator)
    -
    7566  {
    -
    7567  get_token();
    -
    7568  }
    +
    7528  basic_json parse()
    +
    7529  {
    +
    7530  basic_json result = parse_internal(true);
    +
    7531 
    +
    7532  expect(lexer::token_type::end_of_input);
    +
    7533 
    +
    7534  // return parser result and replace it with null in case the
    +
    7535  // top-level value was discarded by the callback function
    +
    7536  return result.is_discarded() ? basic_json() : result;
    +
    7537  }
    +
    7538 
    +
    7539  private:
    +
    7541  basic_json parse_internal(bool keep)
    +
    7542  {
    +
    7543  auto result = basic_json(value_t::discarded);
    +
    7544 
    +
    7545  switch (last_token)
    +
    7546  {
    +
    7547  case lexer::token_type::begin_object:
    +
    7548  {
    +
    7549  if (keep and (not callback or (keep = callback(depth++, parse_event_t::object_start, result))))
    +
    7550  {
    +
    7551  // explicitly set result to object to cope with {}
    +
    7552  result.m_type = value_t::object;
    +
    7553  result.m_value = json_value(value_t::object);
    +
    7554  }
    +
    7555 
    +
    7556  // read next token
    +
    7557  get_token();
    +
    7558 
    +
    7559  // closing } -> we are done
    +
    7560  if (last_token == lexer::token_type::end_object)
    +
    7561  {
    +
    7562  get_token();
    +
    7563  if (keep and callback and not callback(--depth, parse_event_t::object_end, result))
    +
    7564  {
    +
    7565  result = basic_json(value_t::discarded);
    +
    7566  }
    +
    7567  return result;
    +
    7568  }
    7569 
    -
    7570  // store key
    -
    7571  expect(lexer::token_type::value_string);
    -
    7572  const auto key = m_lexer.get_string();
    -
    7573 
    -
    7574  bool keep_tag = false;
    -
    7575  if (keep)
    -
    7576  {
    -
    7577  if (callback)
    -
    7578  {
    -
    7579  basic_json k(key);
    -
    7580  keep_tag = callback(depth, parse_event_t::key, k);
    -
    7581  }
    -
    7582  else
    -
    7583  {
    -
    7584  keep_tag = true;
    -
    7585  }
    -
    7586  }
    -
    7587 
    -
    7588  // parse separator (:)
    -
    7589  get_token();
    -
    7590  expect(lexer::token_type::name_separator);
    -
    7591 
    -
    7592  // parse and add value
    -
    7593  get_token();
    -
    7594  auto value = parse_internal(keep);
    -
    7595  if (keep and keep_tag and not value.is_discarded())
    -
    7596  {
    -
    7597  result[key] = std::move(value);
    +
    7570  // no comma is expected here
    +
    7571  unexpect(lexer::token_type::value_separator);
    +
    7572 
    +
    7573  // otherwise: parse key-value pairs
    +
    7574  do
    +
    7575  {
    +
    7576  // ugly, but could be fixed with loop reorganization
    +
    7577  if (last_token == lexer::token_type::value_separator)
    +
    7578  {
    +
    7579  get_token();
    +
    7580  }
    +
    7581 
    +
    7582  // store key
    +
    7583  expect(lexer::token_type::value_string);
    +
    7584  const auto key = m_lexer.get_string();
    +
    7585 
    +
    7586  bool keep_tag = false;
    +
    7587  if (keep)
    +
    7588  {
    +
    7589  if (callback)
    +
    7590  {
    +
    7591  basic_json k(key);
    +
    7592  keep_tag = callback(depth, parse_event_t::key, k);
    +
    7593  }
    +
    7594  else
    +
    7595  {
    +
    7596  keep_tag = true;
    +
    7597  }
    7598  }
    -
    7599  }
    -
    7600  while (last_token == lexer::token_type::value_separator);
    -
    7601 
    -
    7602  // closing }
    -
    7603  expect(lexer::token_type::end_object);
    -
    7604  get_token();
    -
    7605  if (keep and callback and not callback(--depth, parse_event_t::object_end, result))
    -
    7606  {
    -
    7607  result = basic_json(value_t::discarded);
    -
    7608  }
    -
    7609 
    -
    7610  return result;
    -
    7611  }
    -
    7612 
    -
    7613  case lexer::token_type::begin_array:
    -
    7614  {
    -
    7615  if (keep and (not callback or (keep = callback(depth++, parse_event_t::array_start, result))))
    -
    7616  {
    -
    7617  // explicitly set result to object to cope with []
    -
    7618  result.m_type = value_t::array;
    -
    7619  result.m_value = json_value(value_t::array);
    +
    7599 
    +
    7600  // parse separator (:)
    +
    7601  get_token();
    +
    7602  expect(lexer::token_type::name_separator);
    +
    7603 
    +
    7604  // parse and add value
    +
    7605  get_token();
    +
    7606  auto value = parse_internal(keep);
    +
    7607  if (keep and keep_tag and not value.is_discarded())
    +
    7608  {
    +
    7609  result[key] = std::move(value);
    +
    7610  }
    +
    7611  }
    +
    7612  while (last_token == lexer::token_type::value_separator);
    +
    7613 
    +
    7614  // closing }
    +
    7615  expect(lexer::token_type::end_object);
    +
    7616  get_token();
    +
    7617  if (keep and callback and not callback(--depth, parse_event_t::object_end, result))
    +
    7618  {
    +
    7619  result = basic_json(value_t::discarded);
    7620  }
    7621 
    -
    7622  // read next token
    -
    7623  get_token();
    +
    7622  return result;
    +
    7623  }
    7624 
    -
    7625  // closing ] -> we are done
    -
    7626  if (last_token == lexer::token_type::end_array)
    -
    7627  {
    -
    7628  get_token();
    -
    7629  if (callback and not callback(--depth, parse_event_t::array_end, result))
    -
    7630  {
    -
    7631  result = basic_json(value_t::discarded);
    -
    7632  }
    -
    7633  return result;
    -
    7634  }
    -
    7635 
    -
    7636  // no comma is expected here
    -
    7637  unexpect(lexer::token_type::value_separator);
    -
    7638 
    -
    7639  // otherwise: parse values
    -
    7640  do
    -
    7641  {
    -
    7642  // ugly, but could be fixed with loop reorganization
    -
    7643  if (last_token == lexer::token_type::value_separator)
    -
    7644  {
    -
    7645  get_token();
    -
    7646  }
    +
    7625  case lexer::token_type::begin_array:
    +
    7626  {
    +
    7627  if (keep and (not callback or (keep = callback(depth++, parse_event_t::array_start, result))))
    +
    7628  {
    +
    7629  // explicitly set result to object to cope with []
    +
    7630  result.m_type = value_t::array;
    +
    7631  result.m_value = json_value(value_t::array);
    +
    7632  }
    +
    7633 
    +
    7634  // read next token
    +
    7635  get_token();
    +
    7636 
    +
    7637  // closing ] -> we are done
    +
    7638  if (last_token == lexer::token_type::end_array)
    +
    7639  {
    +
    7640  get_token();
    +
    7641  if (callback and not callback(--depth, parse_event_t::array_end, result))
    +
    7642  {
    +
    7643  result = basic_json(value_t::discarded);
    +
    7644  }
    +
    7645  return result;
    +
    7646  }
    7647 
    -
    7648  // parse value
    -
    7649  auto value = parse_internal(keep);
    -
    7650  if (keep and not value.is_discarded())
    -
    7651  {
    -
    7652  result.push_back(std::move(value));
    -
    7653  }
    -
    7654  }
    -
    7655  while (last_token == lexer::token_type::value_separator);
    -
    7656 
    -
    7657  // closing ]
    -
    7658  expect(lexer::token_type::end_array);
    -
    7659  get_token();
    -
    7660  if (keep and callback and not callback(--depth, parse_event_t::array_end, result))
    -
    7661  {
    -
    7662  result = basic_json(value_t::discarded);
    -
    7663  }
    -
    7664 
    -
    7665  return result;
    -
    7666  }
    -
    7667 
    -
    7668  case lexer::token_type::literal_null:
    -
    7669  {
    -
    7670  get_token();
    -
    7671  result.m_type = value_t::null;
    -
    7672  break;
    -
    7673  }
    -
    7674 
    -
    7675  case lexer::token_type::value_string:
    -
    7676  {
    -
    7677  const auto s = m_lexer.get_string();
    -
    7678  get_token();
    -
    7679  result = basic_json(s);
    -
    7680  break;
    -
    7681  }
    -
    7682 
    -
    7683  case lexer::token_type::literal_true:
    -
    7684  {
    -
    7685  get_token();
    -
    7686  result.m_type = value_t::boolean;
    -
    7687  result.m_value = true;
    -
    7688  break;
    -
    7689  }
    -
    7690 
    -
    7691  case lexer::token_type::literal_false:
    -
    7692  {
    -
    7693  get_token();
    -
    7694  result.m_type = value_t::boolean;
    -
    7695  result.m_value = false;
    -
    7696  break;
    -
    7697  }
    -
    7698 
    -
    7699  case lexer::token_type::value_number:
    -
    7700  {
    -
    7701  auto float_val = m_lexer.get_number();
    +
    7648  // no comma is expected here
    +
    7649  unexpect(lexer::token_type::value_separator);
    +
    7650 
    +
    7651  // otherwise: parse values
    +
    7652  do
    +
    7653  {
    +
    7654  // ugly, but could be fixed with loop reorganization
    +
    7655  if (last_token == lexer::token_type::value_separator)
    +
    7656  {
    +
    7657  get_token();
    +
    7658  }
    +
    7659 
    +
    7660  // parse value
    +
    7661  auto value = parse_internal(keep);
    +
    7662  if (keep and not value.is_discarded())
    +
    7663  {
    +
    7664  result.push_back(std::move(value));
    +
    7665  }
    +
    7666  }
    +
    7667  while (last_token == lexer::token_type::value_separator);
    +
    7668 
    +
    7669  // closing ]
    +
    7670  expect(lexer::token_type::end_array);
    +
    7671  get_token();
    +
    7672  if (keep and callback and not callback(--depth, parse_event_t::array_end, result))
    +
    7673  {
    +
    7674  result = basic_json(value_t::discarded);
    +
    7675  }
    +
    7676 
    +
    7677  return result;
    +
    7678  }
    +
    7679 
    +
    7680  case lexer::token_type::literal_null:
    +
    7681  {
    +
    7682  get_token();
    +
    7683  result.m_type = value_t::null;
    +
    7684  break;
    +
    7685  }
    +
    7686 
    +
    7687  case lexer::token_type::value_string:
    +
    7688  {
    +
    7689  const auto s = m_lexer.get_string();
    +
    7690  get_token();
    +
    7691  result = basic_json(s);
    +
    7692  break;
    +
    7693  }
    +
    7694 
    +
    7695  case lexer::token_type::literal_true:
    +
    7696  {
    +
    7697  get_token();
    +
    7698  result.m_type = value_t::boolean;
    +
    7699  result.m_value = true;
    +
    7700  break;
    +
    7701  }
    7702 
    -
    7703  // NAN is returned if token could not be translated
    -
    7704  // completely
    -
    7705  if (std::isnan(float_val))
    -
    7706  {
    -
    7707  throw std::invalid_argument(std::string("parse error - ") +
    -
    7708  m_lexer.get_token() + " is not a number");
    -
    7709  }
    +
    7703  case lexer::token_type::literal_false:
    +
    7704  {
    +
    7705  get_token();
    +
    7706  result.m_type = value_t::boolean;
    +
    7707  result.m_value = false;
    +
    7708  break;
    +
    7709  }
    7710 
    -
    7711  get_token();
    -
    7712 
    -
    7713  // check if conversion loses precision
    -
    7714  const auto int_val = static_cast<number_integer_t>(float_val);
    -
    7715  if (approx(float_val, static_cast<long double>(int_val)))
    -
    7716  {
    -
    7717  // we would not lose precision -> return int
    -
    7718  result.m_type = value_t::number_integer;
    -
    7719  result.m_value = int_val;
    -
    7720  }
    -
    7721  else
    -
    7722  {
    -
    7723  // we would lose precision -> return float
    -
    7724  result.m_type = value_t::number_float;
    -
    7725  result.m_value = static_cast<number_float_t>(float_val);
    -
    7726  }
    -
    7727  break;
    -
    7728  }
    -
    7729 
    -
    7730  default:
    -
    7731  {
    -
    7732  // the last token was unexpected
    -
    7733  unexpect(last_token);
    -
    7734  }
    -
    7735  }
    -
    7736 
    -
    7737  if (keep and callback and not callback(depth, parse_event_t::value, result))
    -
    7738  {
    -
    7739  result = basic_json(value_t::discarded);
    -
    7740  }
    -
    7741  return result;
    -
    7742  }
    -
    7743 
    -
    7745  typename lexer::token_type get_token()
    -
    7746  {
    -
    7747  last_token = m_lexer.scan();
    -
    7748  return last_token;
    -
    7749  }
    -
    7750 
    -
    7751  void expect(typename lexer::token_type t) const
    -
    7752  {
    -
    7753  if (t != last_token)
    -
    7754  {
    -
    7755  std::string error_msg = "parse error - unexpected ";
    -
    7756  error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token() + "'") :
    -
    7757  lexer::token_type_name(last_token));
    -
    7758  error_msg += "; expected " + lexer::token_type_name(t);
    -
    7759  throw std::invalid_argument(error_msg);
    -
    7760  }
    +
    7711  case lexer::token_type::value_number:
    +
    7712  {
    +
    7713  auto float_val = m_lexer.get_number();
    +
    7714 
    +
    7715  // NAN is returned if token could not be translated
    +
    7716  // completely
    +
    7717  if (std::isnan(float_val))
    +
    7718  {
    +
    7719  throw std::invalid_argument(std::string("parse error - ") +
    +
    7720  m_lexer.get_token() + " is not a number");
    +
    7721  }
    +
    7722 
    +
    7723  get_token();
    +
    7724 
    +
    7725  // check if conversion loses precision
    +
    7726  const auto int_val = static_cast<number_integer_t>(float_val);
    +
    7727  if (approx(float_val, static_cast<long double>(int_val)))
    +
    7728  {
    +
    7729  // we would not lose precision -> return int
    +
    7730  result.m_type = value_t::number_integer;
    +
    7731  result.m_value = int_val;
    +
    7732  }
    +
    7733  else
    +
    7734  {
    +
    7735  // we would lose precision -> return float
    +
    7736  result.m_type = value_t::number_float;
    +
    7737  result.m_value = static_cast<number_float_t>(float_val);
    +
    7738  }
    +
    7739  break;
    +
    7740  }
    +
    7741 
    +
    7742  default:
    +
    7743  {
    +
    7744  // the last token was unexpected
    +
    7745  unexpect(last_token);
    +
    7746  }
    +
    7747  }
    +
    7748 
    +
    7749  if (keep and callback and not callback(depth, parse_event_t::value, result))
    +
    7750  {
    +
    7751  result = basic_json(value_t::discarded);
    +
    7752  }
    +
    7753  return result;
    +
    7754  }
    +
    7755 
    +
    7757  typename lexer::token_type get_token()
    +
    7758  {
    +
    7759  last_token = m_lexer.scan();
    +
    7760  return last_token;
    7761  }
    7762 
    -
    7763  void unexpect(typename lexer::token_type t) const
    +
    7763  void expect(typename lexer::token_type t) const
    7764  {
    -
    7765  if (t == last_token)
    +
    7765  if (t != last_token)
    7766  {
    7767  std::string error_msg = "parse error - unexpected ";
    7768  error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token() + "'") :
    7769  lexer::token_type_name(last_token));
    -
    7770  throw std::invalid_argument(error_msg);
    -
    7771  }
    -
    7772  }
    -
    7773 
    -
    7774  private:
    -
    7776  int depth = 0;
    -
    7778  parser_callback_t callback;
    -
    7780  typename lexer::token_type last_token = lexer::token_type::uninitialized;
    -
    7782  lexer m_lexer;
    -
    7783  };
    -
    7784 };
    +
    7770  error_msg += "; expected " + lexer::token_type_name(t);
    +
    7771  throw std::invalid_argument(error_msg);
    +
    7772  }
    +
    7773  }
    +
    7774 
    +
    7775  void unexpect(typename lexer::token_type t) const
    +
    7776  {
    +
    7777  if (t == last_token)
    +
    7778  {
    +
    7779  std::string error_msg = "parse error - unexpected ";
    +
    7780  error_msg += (last_token == lexer::token_type::parse_error ? ("'" + m_lexer.get_token() + "'") :
    +
    7781  lexer::token_type_name(last_token));
    +
    7782  throw std::invalid_argument(error_msg);
    +
    7783  }
    +
    7784  }
    7785 
    -
    7786 
    -
    7788 // presets //
    -
    7790 
    -
    7799 using json = basic_json<>;
    -
    7800 }
    -
    7801 
    -
    7802 
    -
    7804 // nonmember functions //
    -
    7806 
    -
    7807 // specialization of std::swap, and std::hash
    -
    7808 namespace std
    -
    7809 {
    -
    7815 template <>
    -
    7816 inline void swap(nlohmann::json& j1,
    -
    7817  nlohmann::json& j2) noexcept(
    -
    7818  is_nothrow_move_constructible<nlohmann::json>::value and
    -
    7819  is_nothrow_move_assignable<nlohmann::json>::value
    -
    7820  )
    +
    7786  private:
    +
    7788  int depth = 0;
    +
    7790  parser_callback_t callback;
    +
    7792  typename lexer::token_type last_token = lexer::token_type::uninitialized;
    +
    7794  lexer m_lexer;
    +
    7795  };
    +
    7796 };
    +
    7797 
    +
    7798 
    +
    7800 // presets //
    +
    7802 
    +
    7811 using json = basic_json<>;
    +
    7812 }
    +
    7813 
    +
    7814 
    +
    7816 // nonmember functions //
    +
    7818 
    +
    7819 // specialization of std::swap, and std::hash
    +
    7820 namespace std
    7821 {
    -
    7822  j1.swap(j2);
    -
    7823 }
    -
    7824 
    -
    7826 template <>
    -
    7827 struct hash<nlohmann::json>
    -
    7828 {
    -
    7834  std::size_t operator()(const nlohmann::json& j) const
    -
    7835  {
    -
    7836  // a naive hashing via the string representation
    -
    7837  const auto& h = hash<nlohmann::json::string_t>();
    -
    7838  return h(j.dump());
    -
    7839  }
    -
    7840 };
    -
    7841 }
    -
    7842 
    -
    7855 inline nlohmann::json operator "" _json(const char* s, std::size_t)
    -
    7856 {
    -
    7857  return nlohmann::json::parse(reinterpret_cast<nlohmann::json::string_t::value_type*>
    -
    7858  (const_cast<char*>(s)));
    -
    7859 }
    -
    7860 
    -
    7861 #endif
    +
    7827 template <>
    +
    7828 inline void swap(nlohmann::json& j1,
    +
    7829  nlohmann::json& j2) noexcept(
    +
    7830  is_nothrow_move_constructible<nlohmann::json>::value and
    +
    7831  is_nothrow_move_assignable<nlohmann::json>::value
    +
    7832  )
    +
    7833 {
    +
    7834  j1.swap(j2);
    +
    7835 }
    +
    7836 
    +
    7838 template <>
    +
    7839 struct hash<nlohmann::json>
    +
    7840 {
    +
    7846  std::size_t operator()(const nlohmann::json& j) const
    +
    7847  {
    +
    7848  // a naive hashing via the string representation
    +
    7849  const auto& h = hash<nlohmann::json::string_t>();
    +
    7850  return h(j.dump());
    +
    7851  }
    +
    7852 };
    +
    7853 }
    +
    7854 
    +
    7867 inline nlohmann::json operator "" _json(const char* s, std::size_t)
    +
    7868 {
    +
    7869  return nlohmann::json::parse(reinterpret_cast<nlohmann::json::string_t::value_type*>
    +
    7870  (const_cast<char*>(s)));
    +
    7871 }
    +
    7872 
    +
    7873 #endif
    json_reverse_iterator< typename basic_json::iterator > reverse_iterator
    a reverse iterator for a basic_json container
    Definition: json.hpp:239
    -
    bool operator!=(const const_iterator &other) const
    comparison: not equal
    Definition: json.hpp:5879
    +
    bool operator!=(const const_iterator &other) const
    comparison: not equal
    Definition: json.hpp:5886
    iterator insert(const_iterator pos, basic_json &&val)
    inserts element
    Definition: json.hpp:4256
    -
    iterator operator++(int)
    post-increment (it++)
    Definition: json.hpp:6117
    -
    friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
    comparison: less than or equal
    Definition: json.hpp:4810
    +
    iterator operator++(int)
    post-increment (it++)
    Definition: json.hpp:6124
    +
    friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
    comparison: less than or equal
    Definition: json.hpp:4817
    typename std::allocator_traits< allocator_type >::pointer pointer
    the type of an element pointer
    Definition: json.hpp:227
    -
    json_reverse_iterator operator-(difference_type i) const
    subtract from iterator
    Definition: json.hpp:6272
    +
    json_reverse_iterator operator-(difference_type i) const
    subtract from iterator
    Definition: json.hpp:6279
    static basic_json object(std::initializer_list< basic_json > init=std::initializer_list< basic_json >())
    explicitly create an object from an initializer list
    Definition: json.hpp:1507
    const_reference operator[](size_type idx) const
    access specified array element
    Definition: json.hpp:2847
    reference operator[](const T(&key)[n])
    access specified object element
    Definition: json.hpp:2977
    -
    typename basic_json::const_pointer pointer
    defines a pointer to the type iterated over (value_type)
    Definition: json.hpp:5581
    +
    typename basic_json::const_pointer pointer
    defines a pointer to the type iterated over (value_type)
    Definition: json.hpp:5588
    static iteration_proxy< iterator > iterator_wrapper(reference cont)
    wrapper to access iterator member functions in range-based for
    Definition: json.hpp:3803
    -
    const_iterator & operator--()
    pre-decrement (–it)
    Definition: json.hpp:5824
    -
    friend std::istream & operator>>(std::istream &i, basic_json &j)
    deserialize from stream
    Definition: json.hpp:5023
    -
    const_iterator & operator=(const_iterator other) noexcept( std::is_nothrow_move_constructible< pointer >::value and std::is_nothrow_move_assignable< pointer >::value and std::is_nothrow_move_constructible< internal_iterator >::value and std::is_nothrow_move_assignable< internal_iterator >::value )
    copy assignment
    Definition: json.hpp:5646
    -
    typename basic_json::value_type value_type
    the type of the values when the iterator is dereferenced
    Definition: json.hpp:5577
    +
    const_iterator & operator--()
    pre-decrement (–it)
    Definition: json.hpp:5831
    +
    friend std::istream & operator>>(std::istream &i, basic_json &j)
    deserialize from stream
    Definition: json.hpp:5030
    +
    const_iterator & operator=(const_iterator other) noexcept( std::is_nothrow_move_constructible< pointer >::value and std::is_nothrow_move_assignable< pointer >::value and std::is_nothrow_move_constructible< internal_iterator >::value and std::is_nothrow_move_assignable< internal_iterator >::value )
    copy assignment
    Definition: json.hpp:5653
    +
    typename basic_json::value_type value_type
    the type of the values when the iterator is dereferenced
    Definition: json.hpp:5584
    reference & operator=(basic_json other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    copy assignment
    Definition: json.hpp:1771
    -
    iterator insert(const_iterator pos, const_iterator first, const_iterator last)
    inserts elements
    Definition: json.hpp:4335
    -
    iterator insert(const_iterator pos, size_type cnt, const basic_json &val)
    inserts elements
    Definition: json.hpp:4284
    -
    json_reverse_iterator operator--(int)
    post-decrement (it–)
    Definition: json.hpp:6244
    +
    iterator insert(const_iterator pos, const_iterator first, const_iterator last)
    inserts elements
    Definition: json.hpp:4337
    +
    iterator insert(const_iterator pos, size_type cnt, const basic_json &val)
    inserts elements
    Definition: json.hpp:4285
    +
    json_reverse_iterator operator--(int)
    post-decrement (it–)
    Definition: json.hpp:6251
    StringType string_t
    a type for a string
    Definition: json.hpp:433
    -
    void push_back(const typename object_t::value_type &val)
    add an object to an object
    Definition: json.hpp:4180
    +
    void push_back(const typename object_t::value_type &val)
    add an object to an object
    Definition: json.hpp:4179
    basic_json(boolean_t val)
    create a boolean (explicit)
    Definition: json.hpp:1131
    static basic_json array(std::initializer_list< basic_json > init=std::initializer_list< basic_json >())
    explicitly create an array from an initializer list
    Definition: json.hpp:1467
    -
    iterator & operator++()
    pre-increment (++it)
    Definition: json.hpp:6125
    -
    friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
    comparison: not equal
    Definition: json.hpp:4688
    +
    iterator & operator++()
    pre-increment (++it)
    Definition: json.hpp:6132
    +
    friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
    comparison: not equal
    Definition: json.hpp:4695
    ArrayType< basic_json, AllocatorType< basic_json >> array_t
    a type for an array
    Definition: json.hpp:386
    -
    const_iterator & operator++()
    pre-increment (++it)
    Definition: json.hpp:5789
    -
    difference_type operator-(const json_reverse_iterator &other) const
    return difference
    Definition: json.hpp:6280
    -
    basic_json<> json
    default JSON class
    Definition: json.hpp:7799
    +
    const_iterator & operator++()
    pre-increment (++it)
    Definition: json.hpp:5796
    +
    difference_type operator-(const json_reverse_iterator &other) const
    return difference
    Definition: json.hpp:6287
    +
    basic_json<> json
    default JSON class
    Definition: json.hpp:7811
    reference front()
    access the first element
    Definition: json.hpp:3143
    bool is_array() const noexcept
    return whether value is an array
    Definition: json.hpp:2084
    const_iterator find(typename object_t::key_type key) const
    find an element in a JSON object
    Definition: json.hpp:3516
    -
    std::reverse_iterator< Base > base_iterator
    shortcut to the reverse iterator adaptor
    Definition: json.hpp:6216
    -
    json_reverse_iterator(const typename base_iterator::iterator_type &it)
    create reverse iterator from iterator
    Definition: json.hpp:6221
    +
    std::reverse_iterator< Base > base_iterator
    shortcut to the reverse iterator adaptor
    Definition: json.hpp:6223
    +
    json_reverse_iterator(const typename base_iterator::iterator_type &it)
    create reverse iterator from iterator
    Definition: json.hpp:6228
    a class to store JSON values
    Definition: json.hpp:187
    -
    json_reverse_iterator & operator--()
    pre-decrement (–it)
    Definition: json.hpp:6250
    +
    json_reverse_iterator & operator--()
    pre-decrement (–it)
    Definition: json.hpp:6257
    basic_json(const object_t &val)
    create an object (explicit)
    Definition: json.hpp:933
    -
    friend bool operator==(std::nullptr_t, const_reference v) noexcept
    comparison: equal
    Definition: json.hpp:4667
    -
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4096
    +
    friend bool operator==(std::nullptr_t, const_reference v) noexcept
    comparison: equal
    Definition: json.hpp:4674
    +
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4095
    const_iterator cbegin() const
    returns a const iterator to the first element
    Definition: json.hpp:3614
    bool is_string() const noexcept
    return whether value is a string
    Definition: json.hpp:2103
    -
    iterator & operator+=(difference_type i)
    add to iterator
    Definition: json.hpp:6147
    +
    iterator & operator+=(difference_type i)
    add to iterator
    Definition: json.hpp:6154
    const PointerType get_ptr() const noexcept
    get a pointer value (implicit)
    Definition: json.hpp:2542
    basic_json(const CompatibleStringType &val)
    create a string (implicit)
    Definition: json.hpp:1113
    the parser read ] and finished processing a JSON array
    -
    const_iterator base_iterator
    Definition: json.hpp:6075
    -
    reference operator+=(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4121
    +
    const_iterator base_iterator
    Definition: json.hpp:6082
    +
    reference operator+=(basic_json &&val)
    add an object to an array
    Definition: json.hpp:4120
    basic_json(size_type cnt, const basic_json &val)
    construct an array with count copies of given value
    Definition: json.hpp:1531
    -
    a mutable random access iterator for the basic_json class
    Definition: json.hpp:6072
    -
    iterator & operator-=(difference_type i)
    subtract from iterator
    Definition: json.hpp:6154
    -
    static basic_json parse(std::istream &&i, parser_callback_t cb=nullptr)
    deserialize from stream
    Definition: json.hpp:4985
    +
    a mutable random access iterator for the basic_json class
    Definition: json.hpp:6079
    +
    iterator & operator-=(difference_type i)
    subtract from iterator
    Definition: json.hpp:6161
    +
    static basic_json parse(std::istream &&i, parser_callback_t cb=nullptr)
    deserialize from stream
    Definition: json.hpp:4992
    reference operator[](const typename object_t::key_type &key)
    access specified object element
    Definition: json.hpp:2887
    STL namespace.
    -
    difference_type operator-(const iterator &other) const
    Definition: json.hpp:6176
    -
    reference value() const
    return the value of an iterator
    Definition: json.hpp:6048
    +
    difference_type operator-(const iterator &other) const
    Definition: json.hpp:6183
    +
    reference value() const
    return the value of an iterator
    Definition: json.hpp:6055
    static iteration_proxy< const_iterator > iterator_wrapper(const_reference cont)
    wrapper to access iterator member functions in range-based for
    Definition: json.hpp:3811
    const_iterator end() const
    returns a const iterator to one past the last element
    Definition: json.hpp:3649
    -
    const_iterator(const const_iterator &other) noexcept
    copy constructor
    Definition: json.hpp:5641
    +
    const_iterator(const const_iterator &other) noexcept
    copy constructor
    Definition: json.hpp:5648
    reference at(const typename object_t::key_type &key)
    access specified object element with bounds checking
    Definition: json.hpp:2710
    -
    object_t::key_type key() const
    return the key of an object iterator
    Definition: json.hpp:6035
    +
    object_t::key_type key() const
    return the key of an object iterator
    Definition: json.hpp:6042
    iterator end()
    returns an iterator to one past the last element
    Definition: json.hpp:3639
    ObjectType< StringType, basic_json, std::less< StringType >, AllocatorType< std::pair< const StringType, basic_json >>> object_t
    a type for an object
    Definition: json.hpp:340
    -
    reference operator*()
    return a reference to the value pointed to by the iterator
    Definition: json.hpp:6105
    +
    reference operator*()
    return a reference to the value pointed to by the iterator
    Definition: json.hpp:6112
    reverse_iterator rend()
    returns an iterator to the reverse-end
    Definition: json.hpp:3728
    bool is_object() const noexcept
    return whether value is an object
    Definition: json.hpp:2065
    -
    const_iterator operator-(difference_type i)
    subtract from iterator
    Definition: json.hpp:5971
    +
    const_iterator operator-(difference_type i)
    subtract from iterator
    Definition: json.hpp:5978
    bool is_discarded() const noexcept
    return whether value is discarded
    Definition: json.hpp:2127
    basic_json(const CompatibleArrayType &val)
    create an array (implicit)
    Definition: json.hpp:1029
    -
    typename basic_json::const_reference reference
    defines a reference to the type iterated over (value_type)
    Definition: json.hpp:5583
    +
    typename basic_json::const_reference reference
    defines a reference to the type iterated over (value_type)
    Definition: json.hpp:5590
    const_reverse_iterator rend() const
    returns a const reverse iterator to one before the first
    Definition: json.hpp:3736
    size_type erase(const typename object_t::key_type &key)
    remove element from a JSON object given a key
    Definition: json.hpp:3428
    bool is_boolean() const noexcept
    return whether value is a boolean
    Definition: json.hpp:1976
    iterator begin()
    returns an iterator to the first element
    Definition: json.hpp:3580
    const_reference at(const typename object_t::key_type &key) const
    access specified object element with bounds checking
    Definition: json.hpp:2757
    -
    reference operator+=(const basic_json &val)
    add an object to an array
    Definition: json.hpp:4154
    +
    reference operator+=(const basic_json &val)
    add an object to an array
    Definition: json.hpp:4153
    AllocatorType< basic_json > allocator_type
    the allocator type
    Definition: json.hpp:224
    basic_json(const number_float_t val)
    create a floating-point number (explicit)
    Definition: json.hpp:1258
    bool is_number_integer() const noexcept
    return whether value is an integer number
    Definition: json.hpp:2023
    -
    iterator operator+(difference_type i)
    add to iterator
    Definition: json.hpp:6161
    +
    iterator operator+(difference_type i)
    add to iterator
    Definition: json.hpp:6168
    std::function< bool(int depth, parse_event_t event, basic_json &parsed)> parser_callback_t
    per-element parser callback type
    Definition: json.hpp:819
    basic_json(const typename string_t::value_type *val)
    create a string (explicit)
    Definition: json.hpp:1082
    const_iterator()=default
    default constructor
    the parser read [ and started to process a JSON array
    iterator find(typename object_t::key_type key)
    find an element in a JSON object
    Definition: json.hpp:3500
    basic_json(const value_t value_type)
    create an empty value with a given type
    Definition: json.hpp:866
    -
    friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
    comparison: greater than or equal
    Definition: json.hpp:4854
    -
    iterator & operator--()
    pre-decrement (–it)
    Definition: json.hpp:6140
    -
    friend bool operator<(const_reference lhs, const_reference rhs) noexcept
    comparison: less than
    Definition: json.hpp:4749
    -
    pointer operator->() const
    dereference the iterator
    Definition: json.hpp:5752
    +
    friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
    comparison: greater than or equal
    Definition: json.hpp:4861
    +
    iterator & operator--()
    pre-decrement (–it)
    Definition: json.hpp:6147
    +
    friend bool operator<(const_reference lhs, const_reference rhs) noexcept
    comparison: less than
    Definition: json.hpp:4756
    +
    pointer operator->() const
    dereference the iterator
    Definition: json.hpp:5759
    discarded by the the parser callback function
    const_reference operator[](const typename object_t::key_type &key) const
    read-only access specified object element
    Definition: json.hpp:2934
    const_iterator cend() const
    returns a const iterator to one past the last element
    Definition: json.hpp:3673
    -
    typename Base::reference reference
    the reference type for the pointed-to element
    Definition: json.hpp:6218
    -
    size_type size() const noexcept
    returns the number of elements
    Definition: json.hpp:3912
    +
    typename Base::reference reference
    the reference type for the pointed-to element
    Definition: json.hpp:6225
    +
    size_type size() const noexcept
    returns the number of elements
    Definition: json.hpp:3911
    static allocator_type get_allocator()
    returns the allocator associated with the container
    Definition: json.hpp:249
    object (unordered set of name/value pairs)
    reference at(size_type idx)
    access specified array element with bounds checking
    Definition: json.hpp:2620
    the parser read } and finished processing a JSON object
    iterator()=default
    default constructor
    -
    json_reverse_iterator(const base_iterator &it)
    create reverse iterator from base class
    Definition: json.hpp:6226
    +
    json_reverse_iterator(const base_iterator &it)
    create reverse iterator from base class
    Definition: json.hpp:6233
    value_t type() const noexcept
    return the type of the JSON value (explicit)
    Definition: json.hpp:1897
    -
    friend std::ostream & operator>>(const basic_json &j, std::ostream &o)
    serialize to stream
    Definition: json.hpp:4909
    +
    friend std::ostream & operator>>(const basic_json &j, std::ostream &o)
    serialize to stream
    Definition: json.hpp:4916
    ValueType value(const typename object_t::key_type &key, ValueType default_value) const
    access specified object element with default value
    Definition: json.hpp:3092
    -
    object_t::key_type key() const
    return the key of an object iterator
    Definition: json.hpp:6292
    +
    object_t::key_type key() const
    return the key of an object iterator
    Definition: json.hpp:6299
    bool is_structured() const noexcept
    return whether type is structured
    Definition: json.hpp:1938
    namespace for Niels Lohmann
    Definition: json.hpp:78
    -
    typename basic_json::difference_type difference_type
    a type to represent differences between iterators
    Definition: json.hpp:5579
    -
    void swap(array_t &other)
    exchanges the values
    Definition: json.hpp:4457
    +
    typename basic_json::difference_type difference_type
    a type to represent differences between iterators
    Definition: json.hpp:5586
    +
    void swap(array_t &other)
    exchanges the values
    Definition: json.hpp:4462
    reverse_iterator rbegin()
    returns an iterator to the reverse-beginning
    Definition: json.hpp:3697
    -
    reference operator+=(const typename object_t::value_type &val)
    add an object to an object
    Definition: json.hpp:4203
    +
    reference operator+=(const typename object_t::value_type &val)
    add an object to an object
    Definition: json.hpp:4202
    string value
    -
    reference operator[](difference_type n) const
    access to successor
    Definition: json.hpp:6182
    +
    reference operator[](difference_type n) const
    access to successor
    Definition: json.hpp:6189
    std::size_t size_type
    a type to represent container sizes
    Definition: json.hpp:221
    const_reverse_iterator rbegin() const
    returns a const reverse iterator to the last element
    Definition: json.hpp:3705
    ~basic_json()
    destructor
    Definition: json.hpp:1797
    basic_json(const basic_json &other)
    copy constructor
    Definition: json.hpp:1675
    -
    const_iterator operator+(difference_type i)
    add to iterator
    Definition: json.hpp:5963
    +
    const_iterator operator+(difference_type i)
    add to iterator
    Definition: json.hpp:5970
    value_t
    the JSON type enumeration
    Definition: json.hpp:611
    const value_type & const_reference
    the type of an element const reference
    Definition: json.hpp:215
    basic_json(const CompatibleNumberIntegerType val) noexcept
    create an integer number (implicit)
    Definition: json.hpp:1229
    bool is_null() const noexcept
    return whether value is null
    Definition: json.hpp:1957
    -
    void swap(string_t &other)
    exchanges the values
    Definition: json.hpp:4521
    -
    reference value() const
    return the value of an iterator
    Definition: json.hpp:6188
    -
    const_iterator operator--(int)
    post-decrement (it–)
    Definition: json.hpp:5816
    +
    void swap(string_t &other)
    exchanges the values
    Definition: json.hpp:4528
    +
    reference value() const
    return the value of an iterator
    Definition: json.hpp:6195
    +
    const_iterator operator--(int)
    post-decrement (it–)
    Definition: json.hpp:5823
    void erase(const size_type idx)
    remove element from a JSON array given an index
    Definition: json.hpp:3465
    -
    void clear() noexcept
    clears the contents
    Definition: json.hpp:4029
    -
    pointer operator->()
    dereference the iterator
    Definition: json.hpp:6111
    +
    void clear() noexcept
    clears the contents
    Definition: json.hpp:4028
    +
    pointer operator->()
    dereference the iterator
    Definition: json.hpp:6118
    basic_json value_type
    the type of elements in a basic_json container
    Definition: json.hpp:209
    array (ordered collection of values)
    const_reference front() const
    access the first element
    Definition: json.hpp:3151
    -
    bool operator>=(const const_iterator &other) const
    comparison: greater than or equal
    Definition: json.hpp:5925
    -
    iterator insert(const_iterator pos, std::initializer_list< basic_json > ilist)
    inserts elements
    Definition: json.hpp:4390
    +
    bool operator>=(const const_iterator &other) const
    comparison: greater than or equal
    Definition: json.hpp:5932
    +
    iterator insert(const_iterator pos, std::initializer_list< basic_json > ilist)
    inserts elements
    Definition: json.hpp:4394
    std::ptrdiff_t difference_type
    a type to represent differences between iterators
    Definition: json.hpp:218
    -
    const_iterator & operator+=(difference_type i)
    add to iterator
    Definition: json.hpp:5931
    +
    const_iterator & operator+=(difference_type i)
    add to iterator
    Definition: json.hpp:5938
    basic_json(std::initializer_list< basic_json > init, bool type_deduction=true, value_t manual_type=value_t::array)
    create a container (array or object) from an initializer list
    Definition: json.hpp:1377
    -
    difference_type operator-(const const_iterator &other) const
    return difference
    Definition: json.hpp:5979
    -
    friend bool operator==(const_reference lhs, const_reference rhs) noexcept
    comparison: equal
    Definition: json.hpp:4600
    +
    difference_type operator-(const const_iterator &other) const
    return difference
    Definition: json.hpp:5986
    +
    friend bool operator==(const_reference lhs, const_reference rhs) noexcept
    comparison: equal
    Definition: json.hpp:4607
    bool is_number() const noexcept
    return whether value is a number
    Definition: json.hpp:2000
    BooleanType boolean_t
    a type for a boolean
    Definition: json.hpp:459
    const_reverse_iterator crend() const
    returns a const reverse iterator to one before the first
    Definition: json.hpp:3782
    @@ -4839,82 +4840,82 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    the parser read a key of a value in an object
    bool empty() const noexcept
    checks whether the container is empty
    Definition: json.hpp:3855
    string_t value(const typename object_t::key_type &key, const char *default_value) const
    overload for a default value of type const char*
    Definition: json.hpp:3118
    -
    void swap(reference other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    exchanges the values
    Definition: json.hpp:4427
    +
    void swap(reference other) noexcept( std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value )
    exchanges the values
    Definition: json.hpp:4431
    json_reverse_iterator< typename basic_json::const_iterator > const_reverse_iterator
    a const reverse iterator for a basic_json container
    Definition: json.hpp:241
    const_reverse_iterator crbegin() const
    returns a const reverse iterator to the last element
    Definition: json.hpp:3759
    -
    reference value() const
    return the value of an iterator
    Definition: json.hpp:6299
    +
    reference value() const
    return the value of an iterator
    Definition: json.hpp:6306
    null value
    -
    const_iterator(pointer object)
    constructor for a given JSON instance
    Definition: json.hpp:5591
    -
    friend bool operator<(const value_t lhs, const value_t rhs)
    comparison operator for JSON types
    Definition: json.hpp:4554
    -
    iterator(pointer object) noexcept
    constructor for a given JSON instance
    Definition: json.hpp:6083
    -
    bool operator<(const const_iterator &other) const
    comparison: smaller
    Definition: json.hpp:5885
    +
    const_iterator(pointer object)
    constructor for a given JSON instance
    Definition: json.hpp:5598
    +
    friend bool operator<(const value_t lhs, const value_t rhs)
    comparison operator for JSON types
    Definition: json.hpp:4561
    +
    iterator(pointer object) noexcept
    constructor for a given JSON instance
    Definition: json.hpp:6090
    +
    bool operator<(const const_iterator &other) const
    comparison: smaller
    Definition: json.hpp:5892
    string_t dump(const int indent=-1) const
    serialization
    Definition: json.hpp:1866
    -
    friend bool operator!=(const_reference v, std::nullptr_t) noexcept
    comparison: not equal
    Definition: json.hpp:4711
    -
    const_iterator & operator-=(difference_type i)
    subtract from iterator
    Definition: json.hpp:5957
    +
    friend bool operator!=(const_reference v, std::nullptr_t) noexcept
    comparison: not equal
    Definition: json.hpp:4718
    +
    const_iterator & operator-=(difference_type i)
    subtract from iterator
    Definition: json.hpp:5964
    basic_json(const int val)
    create an integer number from an enum type (explicit)
    Definition: json.hpp:1194
    basic_json(const array_t &val)
    create an array (explicit)
    Definition: json.hpp:992
    number value (floating-point)
    -
    static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
    deserialize from string
    Definition: json.hpp:4948
    +
    static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
    deserialize from string
    Definition: json.hpp:4955
    InteratorType erase(InteratorType first, InteratorType last)
    remove elements given an iterator range
    Definition: json.hpp:3347
    -
    json_reverse_iterator operator++(int)
    post-increment (it++)
    Definition: json.hpp:6231
    +
    json_reverse_iterator operator++(int)
    post-increment (it++)
    Definition: json.hpp:6238
    PointerType get_ptr() noexcept
    get a pointer value (implicit)
    Definition: json.hpp:2527
    boolean value
    -
    const_iterator(const iterator &other)
    copy constructor given a nonconst iterator
    Definition: json.hpp:5616
    -
    friend bool operator!=(std::nullptr_t, const_reference v) noexcept
    comparison: not equal
    Definition: json.hpp:4720
    +
    const_iterator(const iterator &other)
    copy constructor given a nonconst iterator
    Definition: json.hpp:5623
    +
    friend bool operator!=(std::nullptr_t, const_reference v) noexcept
    comparison: not equal
    Definition: json.hpp:4727
    InteratorType erase(InteratorType pos)
    remove element given an iterator
    Definition: json.hpp:3244
    -
    bool operator<=(const const_iterator &other) const
    comparison: less than or equal
    Definition: json.hpp:5913
    +
    bool operator<=(const const_iterator &other) const
    comparison: less than or equal
    Definition: json.hpp:5920
    basic_json(const CompatibleNumberFloatType val) noexcept
    create an floating-point number (implicit)
    Definition: json.hpp:1304
    reference back()
    access the last element
    Definition: json.hpp:3177
    bool is_number_float() const noexcept
    return whether value is a floating-point number
    Definition: json.hpp:2046
    the parser read { and started to process a JSON object
    -
    const_iterator operator++(int)
    post-increment (it++)
    Definition: json.hpp:5781
    +
    const_iterator operator++(int)
    post-increment (it++)
    Definition: json.hpp:5788
    typename std::allocator_traits< allocator_type >::const_pointer const_pointer
    the type of an element const pointer
    Definition: json.hpp:229
    basic_json(const string_t &val)
    create a string (explicit)
    Definition: json.hpp:1058
    -
    iterator(const iterator &other) noexcept
    copy constructor
    Definition: json.hpp:6088
    +
    iterator(const iterator &other) noexcept
    copy constructor
    Definition: json.hpp:6095
    const_reference back() const
    access the last element
    Definition: json.hpp:3187
    basic_json(InputIT first, InputIT last)
    construct a JSON container given an iterator range
    Definition: json.hpp:1577
    -
    static basic_json parse(std::istream &i, parser_callback_t cb=nullptr)
    deserialize from stream
    Definition: json.hpp:4977
    +
    static basic_json parse(std::istream &i, parser_callback_t cb=nullptr)
    deserialize from stream
    Definition: json.hpp:4984
    size_type count(typename object_t::key_type key) const
    returns the number of occurrences of a key in a JSON object
    Definition: json.hpp:3546
    -
    size_type max_size() const noexcept
    returns the maximum possible number of elements
    Definition: json.hpp:3972
    -
    void push_back(const basic_json &val)
    add an object to an array
    Definition: json.hpp:4131
    -
    bool operator==(const const_iterator &other) const
    comparison: equal
    Definition: json.hpp:5851
    -
    json_reverse_iterator & operator++()
    pre-increment (++it)
    Definition: json.hpp:6237
    -
    bool operator>(const const_iterator &other) const
    comparison: greater than
    Definition: json.hpp:5919
    -
    friend bool operator>(const_reference lhs, const_reference rhs) noexcept
    comparison: greater than
    Definition: json.hpp:4832
    +
    size_type max_size() const noexcept
    returns the maximum possible number of elements
    Definition: json.hpp:3971
    +
    void push_back(const basic_json &val)
    add an object to an array
    Definition: json.hpp:4130
    +
    bool operator==(const const_iterator &other) const
    comparison: equal
    Definition: json.hpp:5858
    +
    json_reverse_iterator & operator++()
    pre-increment (++it)
    Definition: json.hpp:6244
    +
    bool operator>(const const_iterator &other) const
    comparison: greater than
    Definition: json.hpp:5926
    +
    friend bool operator>(const_reference lhs, const_reference rhs) noexcept
    comparison: greater than
    Definition: json.hpp:4839
    basic_json(basic_json &&other) noexcept
    move constructor
    Definition: json.hpp:1741
    const_reference operator[](const T(&key)[n]) const
    read-only access specified object element
    Definition: json.hpp:3027
    const_iterator begin() const
    returns a const iterator to the first element
    Definition: json.hpp:3590
    const_reference at(size_type idx) const
    access specified array element with bounds checking
    Definition: json.hpp:2663
    -
    json_reverse_iterator & operator+=(difference_type i)
    add to iterator
    Definition: json.hpp:6257
    -
    a const random access iterator for the basic_json class
    Definition: json.hpp:5570
    +
    json_reverse_iterator & operator+=(difference_type i)
    add to iterator
    Definition: json.hpp:6264
    +
    a const random access iterator for the basic_json class
    Definition: json.hpp:5577
    a template for a reverse iterator class
    Definition: json.hpp:232
    -
    void swap(object_t &other)
    exchanges the values
    Definition: json.hpp:4489
    -
    std::bidirectional_iterator_tag iterator_category
    the category of the iterator
    Definition: json.hpp:5585
    +
    void swap(object_t &other)
    exchanges the values
    Definition: json.hpp:4495
    +
    std::bidirectional_iterator_tag iterator_category
    the category of the iterator
    Definition: json.hpp:5592
    bool is_primitive() const noexcept
    return whether type is primitive
    Definition: json.hpp:1918
    iterator insert(const_iterator pos, const basic_json &val)
    inserts element
    Definition: json.hpp:4230
    -
    friend bool operator==(const_reference v, std::nullptr_t) noexcept
    comparison: equal
    Definition: json.hpp:4658
    +
    friend bool operator==(const_reference v, std::nullptr_t) noexcept
    comparison: equal
    Definition: json.hpp:4665
    number value (integer)
    -
    reference operator[](difference_type n) const
    access to successor
    Definition: json.hpp:6286
    +
    reference operator[](difference_type n) const
    access to successor
    Definition: json.hpp:6293
    NumberIntegerType number_integer_t
    a type for a number (integer)
    Definition: json.hpp:527
    -
    reference operator[](difference_type n) const
    access to successor
    Definition: json.hpp:6001
    -
    reference operator*() const
    return a reference to the value pointed to by the iterator
    Definition: json.hpp:5718
    +
    reference operator[](difference_type n) const
    access to successor
    Definition: json.hpp:6008
    +
    reference operator*() const
    return a reference to the value pointed to by the iterator
    Definition: json.hpp:5725
    value_type & reference
    the type of an element reference
    Definition: json.hpp:212
    -
    friend std::istream & operator<<(basic_json &j, std::istream &i)
    deserialize from stream
    Definition: json.hpp:5013
    +
    friend std::istream & operator<<(basic_json &j, std::istream &i)
    deserialize from stream
    Definition: json.hpp:5020
    the parser finished reading a JSON value
    NumberFloatType number_float_t
    a type for a number (floating-point)
    Definition: json.hpp:592
    -
    std::size_t operator()(const nlohmann::json &j) const
    return a hash value for a JSON object
    Definition: json.hpp:7834
    -
    friend std::ostream & operator<<(std::ostream &o, const basic_json &j)
    serialize to stream
    Definition: json.hpp:4891
    -
    iterator & operator=(iterator other) noexcept( std::is_nothrow_move_constructible< pointer >::value and std::is_nothrow_move_assignable< pointer >::value and std::is_nothrow_move_constructible< internal_iterator >::value and std::is_nothrow_move_assignable< internal_iterator >::value )
    copy assignment
    Definition: json.hpp:6093
    +
    std::size_t operator()(const nlohmann::json &j) const
    return a hash value for a JSON object
    Definition: json.hpp:7846
    +
    friend std::ostream & operator<<(std::ostream &o, const basic_json &j)
    serialize to stream
    Definition: json.hpp:4898
    +
    iterator & operator=(iterator other) noexcept( std::is_nothrow_move_constructible< pointer >::value and std::is_nothrow_move_assignable< pointer >::value and std::is_nothrow_move_constructible< internal_iterator >::value and std::is_nothrow_move_assignable< internal_iterator >::value )
    copy assignment
    Definition: json.hpp:6100
    basic_json(const CompatibleObjectType &val)
    create an object (implicit)
    Definition: json.hpp:965
    reference operator[](size_type idx)
    access specified array element
    Definition: json.hpp:2803
    -
    iterator operator--(int)
    post-decrement (it–)
    Definition: json.hpp:6132
    -
    json_reverse_iterator operator+(difference_type i) const
    add to iterator
    Definition: json.hpp:6264
    +
    iterator operator--(int)
    post-decrement (it–)
    Definition: json.hpp:6139
    +
    json_reverse_iterator operator+(difference_type i) const
    add to iterator
    Definition: json.hpp:6271
    parse_event_t
    JSON callback events.
    Definition: json.hpp:754
    -
    iterator operator-(difference_type i)
    subtract from iterator
    Definition: json.hpp:6169
    +
    iterator operator-(difference_type i)
    subtract from iterator
    Definition: json.hpp:6176
    diff --git a/namespacemembers.html b/namespacemembers.html index 2e1db8a75..d6eaf9b52 100644 --- a/namespacemembers.html +++ b/namespacemembers.html @@ -94,7 +94,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/namespacemembers_type.html b/namespacemembers_type.html index d8f772f33..b62f84012 100644 --- a/namespacemembers_type.html +++ b/namespacemembers_type.html @@ -94,7 +94,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/namespacenlohmann.html b/namespacenlohmann.html index 8faa12473..7faff91fd 100644 --- a/namespacenlohmann.html +++ b/namespacenlohmann.html @@ -112,11 +112,11 @@ Typedefs

    Detailed Description

    See also
    https://github.com/nlohmann
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    diff --git a/namespacenlohmann_1_1anonymous__namespace_02json_8hpp_03.html b/namespacenlohmann_1_1anonymous__namespace_02json_8hpp_03.html index 075ef9423..c18fa31f3 100644 --- a/namespacenlohmann_1_1anonymous__namespace_02json_8hpp_03.html +++ b/namespacenlohmann_1_1anonymous__namespace_02json_8hpp_03.html @@ -101,11 +101,11 @@ Classes  

    Detailed Description

    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    diff --git a/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html b/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html index 14ad6706a..9428b54a3 100644 --- a/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html +++ b/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html @@ -99,9 +99,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    This type is the default specialization of the basic_json class which uses the standard template types.

    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 7799 of file json.hpp.

    +

    Definition at line 7811 of file json.hpp.

    @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/structstd_1_1hash_3_01nlohmann_1_1json_01_4-members.html b/structstd_1_1hash_3_01nlohmann_1_1json_01_4-members.html index 757720803..405919378 100644 --- a/structstd_1_1hash_3_01nlohmann_1_1json_01_4-members.html +++ b/structstd_1_1hash_3_01nlohmann_1_1json_01_4-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/structstd_1_1hash_3_01nlohmann_1_1json_01_4.html b/structstd_1_1hash_3_01nlohmann_1_1json_01_4.html index 9466beb7e..a41dbb013 100644 --- a/structstd_1_1hash_3_01nlohmann_1_1json_01_4.html +++ b/structstd_1_1hash_3_01nlohmann_1_1json_01_4.html @@ -111,11 +111,11 @@ Public Member Functions struct std::hash< nlohmann::json > -

    Definition at line 7827 of file json.hpp.

    +

    Definition at line 7839 of file json.hpp.

    diff --git a/structstd_1_1hash_3_01nlohmann_1_1json_01_4_afd03f6ad53db22868ca4163a8200b2f9.html b/structstd_1_1hash_3_01nlohmann_1_1json_01_4_afd03f6ad53db22868ca4163a8200b2f9.html index 62c0d5dd7..7b73f178a 100644 --- a/structstd_1_1hash_3_01nlohmann_1_1json_01_4_afd03f6ad53db22868ca4163a8200b2f9.html +++ b/structstd_1_1hash_3_01nlohmann_1_1json_01_4_afd03f6ad53db22868ca4163a8200b2f9.html @@ -110,9 +110,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    -
    Since
    version 1.0
    +
    Since
    version 1.0.0
    -

    Definition at line 7834 of file json.hpp.

    +

    Definition at line 7846 of file json.hpp.

    @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');