From 149fbba5aa3a2a9a0abaea12a978cd61ecc814ef Mon Sep 17 00:00:00 2001 From: Niels Date: Sun, 20 Dec 2015 15:50:04 +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 | 4 +- ...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 | 4 +- ...ic__json_1_1iterator__wrapper-members.html | 2 +- ...n_1_1basic__json_1_1iterator__wrapper.html | 4 +- ...per_a784f17dec56c1ec90b0b73eb8307ea7d.html | 4 +- ...per_a80305d6ac43b6fb53c62256e450485ac.html | 4 +- ...per_ab5951e20b05998e768943acd0b418c81.html | 4 +- ...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 | 2 +- ...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 | 6 +- ...son_a0703ae5cbd2daac5e6c0ae01d3a1b114.html | 6 +- ...son_a07c9c38a1f01675759e05d5d34627343.html | 8 +- ...son_a088460b5d95f384a4f2ec9e52f4f66ba.html | 2 +- ...son_a0afa4512f03406db0d0432657e9c7361.html | 2 +- ...son_a114095c452ca2f4ba976548df3da68be.html | 2 +- ...son_a11c3dd843c21c58daa651e84046a82af.html | 2 +- ...son_a122640e7e2db1814fc7bbb3c122ec76e.html | 4 +- ...son_a13e5642dbfa1602c937d295a085413cc.html | 2 +- ...son_a1683189bd539313b5559f07961166c8b.html | 2 +- ...son_a16a275d0201e9aedc87c933c764b8869.html | 6 +- ...son_a1dc0c521042807e216d11110d2f002ff.html | 2 +- ...son_a231b02148577b69a154b2ce2c87a5522.html | 2 +- ...son_a234f03dce002783748ca401a42bc6472.html | 4 +- ...son_a266c4dd24d11a86e4831523af5d9df4d.html | 4 +- ...son_a26b7e4876af25eae5800ce43f93aaef2.html | 6 +- ...son_a2adfc8d24bea3908398cbf325b5dc1d7.html | 6 +- ...son_a2f07bcf7e75c34396476dd1790f26ce8.html | 6 +- ...son_a3173944e7b1809a333def4078a0b92a3.html | 6 +- ...son_a3287df6546c905fb0a5786deb4b1cf32.html | 6 +- ...son_a33f1632cfdbf460b4913f4e8a43dd9e4.html | 2 +- ...son_a34d6a60dd99e9f33b8273a1c8db5669b.html | 4 +- ...son_a3d4e4bab95b24ccab42ed37e0ede2d98.html | 2 +- ...son_a42f9133f978dde4cce5851b2c2434a0c.html | 2 +- ...son_a4361aa791f3980abb239e4155a3450cb.html | 8 +- ...son_a457fec897d7b6283c60ca236ebb1f5e8.html | 2 +- ...son_a48c8d153bc2fd1af655063a4b984feac.html | 2 +- ...son_a4943b7f16ddc4e0df33c0cae7ef14471.html | 6 +- ...son_a4ad3f27ecece8f644e8dca69a97eb67f.html | 6 +- ...son_a4bf695ddf4a00ea8feea2c725ec847f1.html | 6 +- ...son_a4d688b5ff534d3ab4e284b3191061529.html | 6 +- ...son_a5114ed5eb394a2805da0bd1acba95ae2.html | 6 +- ...son_a53a2abfdd4f72c7df5aba1155bf03e48.html | 2 +- ...son_a57703688bee6b9736ab3a430d8d246f2.html | 4 +- ...son_a57a96ab3ff1ce7b48a754129fb12c982.html | 6 +- ...son_a5a2d4dbcdbc8ea065b87daf52cd786b9.html | 2 +- ...son_a5c8bb5200f5eac10d31e26be46e5b1ac.html | 4 +- ...son_a5d428360d75a52f6af74751d1cc912c6.html | 2 +- ...son_a5e34c5435e557d0bf666bd7311211405.html | 4 +- ...son_a5f0aad50ed7e8aec3128fe018c18b3fe.html | 2 +- ...son_a5fd8b54389698edf0c08e2dd001f610b.html | 2 +- ...son_a60ca396028b8d9714c6e10efbf475af6.html | 4 +- ...son_a63691315292df8e1522b00d37ebb1ffc.html | 2 +- ...son_a652414dd930cb3af3b6f454cc535a23e.html | 6 +- ...son_a656939a3dc9a6047e4afacd9e11b83a6.html | 4 +- ...son_a66f936cfbd252f85bd3dc2598e37a64b.html | 6 +- ...son_a6944904b3b59769b1cf62ac2532cbe33.html | 2 +- ...son_a696ced74d8edc0b63a000a72907ab109.html | 2 +- ...son_a6a7f45095675ac6fd1d018a0e41874be.html | 8 +- ...son_a6b7428e8c1169497f47b81667001cbfb.html | 8 +- ...son_a6bbd3e72a870f1ba81ff6886b063b0fe.html | 2 +- ...son_a6dff6a02a2be250b8f8dc2f47be65544.html | 6 +- ...son_a6e2e21da48f5d9471716cd868a068327.html | 4 +- ...son_a71eba33d906745e66f340952b79fbce3.html | 2 +- ...son_a72442ccbb378b4464a24a2da1e784041.html | 6 +- ...son_a72ba20783ecb3eec98bd6a3b870d565c.html | 8 +- ...son_a74472977b798c7b7989e6e7cb960ecff.html | 2 +- ...son_a74a943800c7f103d0990d7eef82c6453.html | 4 +- ...son_a74ccfa471a0c061876b247f820f3c741.html | 10 +- ...son_a75a1754e0d39f33095d3102a8bdb9881.html | 10 +- ...son_a76cfc5062bf6223396ab82c753cd4634.html | 4 +- ...son_a7c08f966200af98db0313a3b517ce0a9.html | 6 +- ...son_a7c19a5c3be6cc755377ee41eade78baf.html | 8 +- ...son_a7d0db3b728d820d4984df78d97d2b104.html | 2 +- ...son_a7d1b990f2c12fecb57db1504fdadd0bb.html | 6 +- ...son_a7dab69b10b98e7bc694339720e37fb2b.html | 8 +- ...son_a7f97a91ad8f1d5cf0b9213bd24f247c4.html | 4 +- ...son_a80ceaa3bdd346292273b309e08525c1c.html | 2 +- ...son_a83cbbfbf5d3ecbad6de8ece0be6b36c4.html | 6 +- ...son_a87db51b6b936fb2ea293cdbc8702dcb8.html | 4 +- ...son_a8b526709d395142b68d21abfbfff17c3.html | 6 +- ...son_a8c40cd9ead4de7c82f28268bdf0ec98a.html | 6 +- ...son_a8fa74698f4061e18ec664009f3af1ddf.html | 10 +- ...son_a930e14150ffa067bcf56d35cb00271e1.html | 2 +- ...son_a960962c683909619d1d2fbbe856c022e.html | 6 +- ...son_a9730b9f7bc2150e641fe20198d4477c7.html | 4 +- ...son_a98e05a2c9b8f74bd60442772cddeee52.html | 4 +- ...son_a9993148cb0473365e52998c7315f9ada.html | 2 +- ...son_a9a73d1b71c9e913aa2888d8b40c72ee9.html | 4 +- ...son_a9c26c5d0f4a519c7236149b9aeb3ef9e.html | 2 +- ...son_a9f17a0690155e3a5603246ccec81499e.html | 2 +- ...son_aa0422e861b4cbd7cdcaad7a11a1304a9.html | 10 +- ...son_aa1f3b3f1dca79392d6727b81f9668c6c.html | 6 +- ...son_aa5413178b8041f7ac685dec4b040dd2c.html | 8 +- ...son_aa6a24b176f9599a21d662cc5f8e1ca76.html | 2 +- ...son_aa6c32f669a2e523666072003d0ea46f4.html | 2 +- ...son_aa71e977d31f470689883ac60d16ea4ac.html | 8 +- ...son_aabe4661644ea549089f0886c2551d2ac.html | 2 +- ...son_aac185a137428a7337aa620de07bfbbd7.html | 4 +- ...son_aacd442b66140c764c594ac8ad7dfd5b3.html | 4 +- ...son_aacf6c869f6a9c66ac1bc99e93f310044.html | 2 +- ...son_aaf363408931d76472ded14017e59c9e8.html | 4 +- ...son_aafa839f2a74dc1b5060314b3423143b8.html | 2 +- ...son_ab14e3503305622fb5ab01a7f490916e8.html | 8 +- ...son_ab2162bc76e10d8736cab9b2039956054.html | 8 +- ...son_ab74b2398f29acc6ffbf48f1b8974a848.html | 2 +- ...son_ab7d60fb6cb8e8f5740e588f9dc953819.html | 2 +- ...son_ab9a20bd1d391e9cb968db50c246f728d.html | 6 +- ...son_ab9da2afc6f77295f25252725fde142a6.html | 6 +- ...son_abe8f3224ca4041908ddb466cb9caecf1.html | 6 +- ...son_ac160789f17d206a5404981ca0957e303.html | 2 +- ...son_ac4011bd0781e51afe4994d2b09fd27e9.html | 2 +- ...son_ac8163abe518595f19dbee68db1caaaf7.html | 2 +- ...son_ac82abedf356d252e0589850c3d8b35ba.html | 2 +- ...son_ac943391891fcde0a71a15ce990e0f7f4.html | 2 +- ...son_acd08f9179c8c1e9f2cd7575a724ce27e.html | 2 +- ...son_acdf4445333649ec94198f09a62144884.html | 8 +- ...son_ace8338e57fdb11e1955c2a0c2d782069.html | 2 +- ...son_ad1f617d29e8923dd40c89153f792b1bc.html | 2 +- ...son_ad2c4513cef5d8db760c4b2d871eea42c.html | 2 +- ...son_ad497cbc4f80c8d79662ee6e19bf145dd.html | 12 +- ...son_ad6734c2b91b1b77aa2b43b65c3619c05.html | 2 +- ...son_ad8e0c5d04f016d1b3ac7369e5c73bedf.html | 8 +- ...son_ada8e01109a60088e4db2a670d4903b54.html | 6 +- ...son_adbd4c16c9ac641b2a4736bc2c6787d83.html | 2 +- ...son_ade7bd6e0fe221fec9d3fa9b430f5ce76.html | 2 +- ...son_adeaef2ab021997a11a826c378c2365e1.html | 2 +- ...son_adf5dea6fa9d7075ff89ca0796ab47a7e.html | 2 +- ...son_ae347859ec88176ef76a0cbe5b4514fcf.html | 4 +- ...son_ae50f22a1c646b8627e88f1313cceffd4.html | 4 +- ...son_ae874cfc1746b560c53a03bcf5b7bbeed.html | 2 +- ...son_ae928414b2805cf6ef56b4e4f8d235416.html | 2 +- ...son_ae960d2d6bc7b94fe39cc5e9f106edfa9.html | 6 +- ...son_aea1c863b719b4ca5b77188c171bbfafe.html | 2 +- ...son_af073eec08d2e68924098aef09e9a10ba.html | 6 +- ...son_af0ebd1757acb971a6504b4acabf88584.html | 6 +- ...son_af127fb69c580c17821da5f5be57e3585.html | 2 +- ...son_af1e3f9e079136abca2530c8191c56292.html | 4 +- ...son_af2730bc8ffa6b28916875c13ee7b83f5.html | 8 +- ...son_af661bc209bf22097e2f76607a11b56bf.html | 2 +- ...son_af6b6050ccd906dddf7c9f47fe3ad62a5.html | 6 +- ...son_af709c079de0ac3507143ea2c60699bd0.html | 8 +- ...son_af74581d177dafc38df5a126ccd358999.html | 4 +- ...son_af7d0adc984d04fc70c3d29fcd63e096a.html | 8 +- ...son_afc4223b5ad03b1b76e925374a8fff98e.html | 2 +- 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 | 2 +- json_8hpp_source.html | 7155 +++++++++-------- namespacemembers.html | 2 +- namespacemembers_type.html | 2 +- namespacenlohmann.html | 2 +- ..._1anonymous__namespace_02json_8hpp_03.html | 2 +- ...ann_a2bfd99e845a2e5cd90aeaf1b1431f474.html | 4 +- ...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 | 4 +- 252 files changed, 4065 insertions(+), 4058 deletions(-) diff --git a/annotated.html b/annotated.html index 2eb352deb..e2605ea28 100644 --- a/annotated.html +++ b/annotated.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classes.html b/classes.html index 69adc8aab..632a74a49 100644 --- a/classes.html +++ b/classes.html @@ -106,7 +106,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 7d816348f..d83907f71 100644 --- a/classnlohmann_1_1basic__json-members.html +++ b/classnlohmann_1_1basic__json-members.html @@ -232,7 +232,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classnlohmann_1_1basic__json.html b/classnlohmann_1_1basic__json.html index 5b75c5f9e..f8fe93216 100644 --- a/classnlohmann_1_1basic__json.html +++ b/classnlohmann_1_1basic__json.html @@ -361,7 +361,7 @@ value access const PointerType get_ptr () const noexcept  get a pointer value (implicit) More...
  -template<typename ValueType , typename std::enable_if< not std::is_pointer< ValueType >::value , int >::type = 0> +template<typename ValueType , typename std::enable_if< not std::is_pointer< ValueType >::value and not std::is_same< ValueType, typename string_t::value_type >::value and not std::is_same< ValueType, std::initializer_list< typename string_t::value_type >>::value , int >::type = 0>  operator ValueType () const  get a value (implicit) More...
  @@ -652,7 +652,7 @@ class nlohmann::basic_json diff --git a/classnlohmann_1_1basic__json_1_1const__iterator-members.html b/classnlohmann_1_1basic__json_1_1const__iterator-members.html index db200a022..14e920195 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 f8a7a658b..a34c48d7b 100644 --- a/classnlohmann_1_1basic__json_1_1const__iterator.html +++ b/classnlohmann_1_1basic__json_1_1const__iterator.html @@ -215,11 +215,11 @@ class nlohmann::basic_json::const_iterator
Since
version 1.0
-

Definition at line 5302 of file json.hpp.

+

Definition at line 5306 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 72b149a87..b61093caf 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 5548 of file json.hpp.

+

Definition at line 5552 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 29caa7821..0d028ba61 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 5651 of file json.hpp.

+

Definition at line 5655 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 be9f3f0b2..a2ac19dae 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 5733 of file json.hpp.

+

Definition at line 5737 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 86722c071..e8d693a7b 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 5378 of file json.hpp.

+

Definition at line 5382 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 d74c7edf5..d47e0ae15 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 5484 of file json.hpp.

+

Definition at line 5488 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 1ef06c2b2..fd928c19f 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 5583 of file json.hpp.

+

Definition at line 5587 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 c2ab8b030..ff1146eb5 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 5450 of file json.hpp.

+

Definition at line 5454 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 c38659bf2..fb523484e 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 5313 of file json.hpp.

+

Definition at line 5317 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 d7eb0366b..3426e96c6 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 5348 of file json.hpp.

+

Definition at line 5352 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 a42ecc119..69b9878d8 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 5703 of file json.hpp.

+

Definition at line 5707 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 36ce54a6f..f8d828053 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 5309 of file json.hpp.

+

Definition at line 5313 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 57ca83f58..3f369ebe3 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 5657 of file json.hpp.

+

Definition at line 5661 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 b3c751021..76c055eab 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 5323 of file json.hpp.

+

Definition at line 5327 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 f658070b1..72d1bddf3 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 e644891ca..6fb88ac60 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 5767 of file json.hpp.

+

Definition at line 5771 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 2754e7b9f..5946175f3 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 5663 of file json.hpp.

+

Definition at line 5667 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 6d2ac7285..1b441df0a 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 5780 of file json.hpp.

+

Definition at line 5784 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 59b920578..35e8004c8 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 5611 of file json.hpp.

+

Definition at line 5615 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 31baa3bd2..2990bde96 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 5556 of file json.hpp.

+

Definition at line 5560 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 ba1efcc1b..4ac1dc292 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 5521 of file json.hpp.

+

Definition at line 5525 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 c22151ab3..31613087a 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 5311 of file json.hpp.

+

Definition at line 5315 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 d14b2d20a..3cce3d7cb 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 5695 of file json.hpp.

+

Definition at line 5699 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 8a637cef8..c5687fd96 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 5617 of file json.hpp.

+

Definition at line 5621 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 7483f2d3c..56b2a6544 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 5305 of file json.hpp.

+

Definition at line 5309 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 e222c3c96..6a85e7b61 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 5315 of file json.hpp.

+

Definition at line 5319 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 5f79d08f0..b6a132144 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 5711 of file json.hpp.

+

Definition at line 5715 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 177da7de1..2d8cd25f7 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 5513 of file json.hpp.

+

Definition at line 5517 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 c629699e8..03d5ddd0f 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 5317 of file json.hpp.

+

Definition at line 5321 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 bd7f56996..94b371e53 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 5645 of file json.hpp.

+

Definition at line 5649 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 0fd4f18f3..2e616cf7e 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 5689 of file json.hpp.

+

Definition at line 5693 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 653410235..d0fd61056 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 5373 of file json.hpp.

+

Definition at line 5377 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 1688fb2c1..0286f8745 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 723b2e7df..2083bd823 100644 --- a/classnlohmann_1_1basic__json_1_1iterator.html +++ b/classnlohmann_1_1basic__json_1_1iterator.html @@ -266,11 +266,11 @@ class nlohmann::basic_json::iterator
Since
version 1.0
-

Definition at line 5804 of file json.hpp.

+

Definition at line 5808 of file json.hpp.

diff --git a/classnlohmann_1_1basic__json_1_1iterator__wrapper-members.html b/classnlohmann_1_1basic__json_1_1iterator__wrapper-members.html index ef6f4abe0..d8a0c6098 100644 --- a/classnlohmann_1_1basic__json_1_1iterator__wrapper-members.html +++ b/classnlohmann_1_1basic__json_1_1iterator__wrapper-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classnlohmann_1_1basic__json_1_1iterator__wrapper.html b/classnlohmann_1_1basic__json_1_1iterator__wrapper.html index 893a8aa7d..b9acf48f0 100644 --- a/classnlohmann_1_1basic__json_1_1iterator__wrapper.html +++ b/classnlohmann_1_1basic__json_1_1iterator__wrapper.html @@ -119,11 +119,11 @@ class nlohmann::basic_json::iterator_wrapper

This class allows to access iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

-

Definition at line 6041 of file json.hpp.

+

Definition at line 6045 of file json.hpp.

diff --git a/classnlohmann_1_1basic__json_1_1iterator__wrapper_a784f17dec56c1ec90b0b73eb8307ea7d.html b/classnlohmann_1_1basic__json_1_1iterator__wrapper_a784f17dec56c1ec90b0b73eb8307ea7d.html index 07cfdc87c..f96b46d76 100644 --- a/classnlohmann_1_1basic__json_1_1iterator__wrapper_a784f17dec56c1ec90b0b73eb8307ea7d.html +++ b/classnlohmann_1_1basic__json_1_1iterator__wrapper_a784f17dec56c1ec90b0b73eb8307ea7d.html @@ -115,7 +115,7 @@ template<template< typename U, typename V, typename...Args > class Obje
-

Definition at line 6118 of file json.hpp.

+

Definition at line 6122 of file json.hpp.

@@ -125,7 +125,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator__wrapper_a80305d6ac43b6fb53c62256e450485ac.html b/classnlohmann_1_1basic__json_1_1iterator__wrapper_a80305d6ac43b6fb53c62256e450485ac.html index 9f5e32b92..9f7e9b4da 100644 --- a/classnlohmann_1_1basic__json_1_1iterator__wrapper_a80305d6ac43b6fb53c62256e450485ac.html +++ b/classnlohmann_1_1basic__json_1_1iterator__wrapper_a80305d6ac43b6fb53c62256e450485ac.html @@ -114,7 +114,7 @@ template<template< typename U, typename V, typename...Args > class Obje
-

Definition at line 6123 of file json.hpp.

+

Definition at line 6127 of file json.hpp.

@@ -124,7 +124,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator__wrapper_ab5951e20b05998e768943acd0b418c81.html b/classnlohmann_1_1basic__json_1_1iterator__wrapper_ab5951e20b05998e768943acd0b418c81.html index 9fd39b27d..a908d5b8f 100644 --- a/classnlohmann_1_1basic__json_1_1iterator__wrapper_ab5951e20b05998e768943acd0b418c81.html +++ b/classnlohmann_1_1basic__json_1_1iterator__wrapper_ab5951e20b05998e768943acd0b418c81.html @@ -114,7 +114,7 @@ template<template< typename U, typename V, typename...Args > class Obje
-

Definition at line 6129 of file json.hpp.

+

Definition at line 6133 of file json.hpp.

@@ -124,7 +124,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_1_1iterator_a037e5f3de196ff4cea8a95a8a4e35882.html b/classnlohmann_1_1basic__json_1_1iterator_a037e5f3de196ff4cea8a95a8a4e35882.html index 5fa480fcb..ee2398a5b 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 5856 of file json.hpp.

+

Definition at line 5860 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 10eae60e1..88bca0242 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 5885 of file json.hpp.

+

Definition at line 5889 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 726c3cbd0..37e83d18e 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 5900 of file json.hpp.

+

Definition at line 5904 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 0b10c21ba..8149cf21c 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 5913 of file json.hpp.

+

Definition at line 5917 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 86200162a..d94acb76d 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 5842 of file json.hpp.

+

Definition at line 5846 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 6f7b00c9d..d13259cd6 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 5871 of file json.hpp.

+

Definition at line 5875 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 f3d6171ab..0d7720059 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 5907 of file json.hpp.

+

Definition at line 5911 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 ae21cc868..db2510fa9 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 5836 of file json.hpp.

+

Definition at line 5840 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 c33e14fbe..7ad757854 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 5863 of file json.hpp.

+

Definition at line 5867 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 120b75374..e93b03af0 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 9500300fd..07d581922 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 5824 of file json.hpp.

+

Definition at line 5828 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 a3756de1c..44cb15bd7 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 5878 of file json.hpp.

+

Definition at line 5882 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 ecf0e4a13..e8205976c 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 5819 of file json.hpp.

+

Definition at line 5823 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 25fcc7c85..d93885b83 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 5848 of file json.hpp.

+

Definition at line 5852 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 2aaaf65b9..2ba1c1a6e 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 5809 of file json.hpp.

+

Definition at line 5813 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 d039d84e6..6f0009f1d 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 5815 of file json.hpp.

+

Definition at line 5819 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 ed90415b0..c6f1e8257 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 5892 of file json.hpp.

+

Definition at line 5896 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 5a748fc76..8f46489ed 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 5807 of file json.hpp.

+

Definition at line 5811 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 e5ed879c8..1187b1904 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 5919 of file json.hpp.

+

Definition at line 5923 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 3b9ab0684..f421e5ff1 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 5808 of file json.hpp.

+

Definition at line 5812 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 e3d675170..9f2214aea 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 df4debcd8..157f08ce3 100644 --- a/classnlohmann_1_1basic__json_1_1json__reverse__iterator.html +++ b/classnlohmann_1_1basic__json_1_1json__reverse__iterator.html @@ -174,7 +174,7 @@ class nlohmann::basic_json::json_reverse_iterator< Base > 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 aeff8c6ee..5d24fb566 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 6000 of file json.hpp.

+

Definition at line 6004 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 7798da852..79b549b12 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 5952 of file json.hpp.

+

Definition at line 5956 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 a88d238ab..e4c95e488 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 5965 of file json.hpp.

+

Definition at line 5969 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 d6813b3d3..b99843ff9 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 5992 of file json.hpp.

+

Definition at line 5996 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 0cad78810..b28292c85 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 5985 of file json.hpp.

+

Definition at line 5989 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 074f39cd3..1238fdfe2 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 5949 of file json.hpp.

+

Definition at line 5953 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 834cfdcdb..44e548cbd 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 6027 of file json.hpp.

+

Definition at line 6031 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 8a189170b..95c2de30b 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 5972 of file json.hpp.

+

Definition at line 5976 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 10088127a..2e8cf43bb 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 5956 of file json.hpp.

+

Definition at line 5960 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 400a91e3c..68ad88fee 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 5959 of file json.hpp.

+

Definition at line 5963 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 4a60fcb9d..cf04bef2d 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 5947 of file json.hpp.

+

Definition at line 5951 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 010920cc7..98025e7e3 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 6008 of file json.hpp.

+

Definition at line 6012 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 27e35d619..4b6ff3c12 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 5978 of file json.hpp.

+

Definition at line 5982 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 4aa8a8d6f..e3545aa7c 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 6014 of file json.hpp.

+

Definition at line 6018 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 ed540ed17..b158240d5 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 6020 of file json.hpp.

+

Definition at line 6024 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 e50eb018a..9050c3f20 100644 --- a/classnlohmann_1_1basic__json_a01a2643289b69cd71d9b3f3fc209b748.html +++ b/classnlohmann_1_1basic__json_a01a2643289b69cd71d9b3f3fc209b748.html @@ -275,13 +275,13 @@ template<template< typename U, typename V, typename...Args > class Obje
18 }
a class to store JSON values
Definition: json.hpp:187
namespace for Niels Lohmann
Definition: json.hpp:78
-
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:3408
+
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:3412
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
-

Definition at line 3408 of file json.hpp.

+

Definition at line 3412 of file json.hpp.

@@ -291,7 +291,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 977095686..202a74bd9 100644 --- a/classnlohmann_1_1basic__json_a0703ae5cbd2daac5e6c0ae01d3a1b114.html +++ b/classnlohmann_1_1basic__json_a0703ae5cbd2daac5e6c0ae01d3a1b114.html @@ -285,7 +285,7 @@ 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:3928
+
void push_back(basic_json &&val)
add an object to an array
Definition: json.hpp:3932
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
{"one":1,"two":2}
 null
@@ -294,7 +294,7 @@ null
 
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
-

Definition at line 4035 of file json.hpp.

+

Definition at line 4039 of file json.hpp.

@@ -304,7 +304,7 @@ null diff --git a/classnlohmann_1_1basic__json_a07c9c38a1f01675759e05d5d34627343.html b/classnlohmann_1_1basic__json_a07c9c38a1f01675759e05d5d34627343.html index f4846fcc3..4be320d1c 100644 --- a/classnlohmann_1_1basic__json_a07c9c38a1f01675759e05d5d34627343.html +++ b/classnlohmann_1_1basic__json_a07c9c38a1f01675759e05d5d34627343.html @@ -290,15 +290,15 @@ template<template< typename U, typename V, typename...Args > class Obje
15  std::cout << v << '\n';
16 }
a class to store JSON values
Definition: json.hpp:187
-
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3442
+
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3446
namespace for Niels Lohmann
Definition: json.hpp:78
-
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4061
+
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4065
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
-

Definition at line 4087 of file json.hpp.

+

Definition at line 4091 of file json.hpp.

@@ -308,7 +308,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 4a15210ed..f9f81ded9 100644 --- a/classnlohmann_1_1basic__json_a088460b5d95f384a4f2ec9e52f4f66ba.html +++ b/classnlohmann_1_1basic__json_a088460b5d95f384a4f2ec9e52f4f66ba.html @@ -296,7 +296,7 @@ true diff --git a/classnlohmann_1_1basic__json_a0afa4512f03406db0d0432657e9c7361.html b/classnlohmann_1_1basic__json_a0afa4512f03406db0d0432657e9c7361.html index d929ecb1f..41a95bdc9 100644 --- a/classnlohmann_1_1basic__json_a0afa4512f03406db0d0432657e9c7361.html +++ b/classnlohmann_1_1basic__json_a0afa4512f03406db0d0432657e9c7361.html @@ -342,7 +342,7 @@ false diff --git a/classnlohmann_1_1basic__json_a114095c452ca2f4ba976548df3da68be.html b/classnlohmann_1_1basic__json_a114095c452ca2f4ba976548df3da68be.html index 136f9a2b1..79d4076ca 100644 --- a/classnlohmann_1_1basic__json_a114095c452ca2f4ba976548df3da68be.html +++ b/classnlohmann_1_1basic__json_a114095c452ca2f4ba976548df3da68be.html @@ -296,7 +296,7 @@ false diff --git a/classnlohmann_1_1basic__json_a11c3dd843c21c58daa651e84046a82af.html b/classnlohmann_1_1basic__json_a11c3dd843c21c58daa651e84046a82af.html index 26c5c6c21..d135c566e 100644 --- a/classnlohmann_1_1basic__json_a11c3dd843c21c58daa651e84046a82af.html +++ b/classnlohmann_1_1basic__json_a11c3dd843c21c58daa651e84046a82af.html @@ -296,7 +296,7 @@ false diff --git a/classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.html b/classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.html index 52d122575..6f63b151e 100644 --- a/classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.html +++ b/classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.html @@ -302,7 +302,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/operator__equal.cpp -o operator__equal 
Since
version 1.0
-

Definition at line 4426 of file json.hpp.

+

Definition at line 4430 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_a13e5642dbfa1602c937d295a085413cc.html b/classnlohmann_1_1basic__json_a13e5642dbfa1602c937d295a085413cc.html index d5081ec3b..eb4b868b6 100644 --- a/classnlohmann_1_1basic__json_a13e5642dbfa1602c937d295a085413cc.html +++ b/classnlohmann_1_1basic__json_a13e5642dbfa1602c937d295a085413cc.html @@ -245,7 +245,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 d30520dab..3971741f3 100644 --- a/classnlohmann_1_1basic__json_a1683189bd539313b5559f07961166c8b.html +++ b/classnlohmann_1_1basic__json_a1683189bd539313b5559f07961166c8b.html @@ -245,7 +245,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 141186ebd..f4f67e2fc 100644 --- a/classnlohmann_1_1basic__json_a16a275d0201e9aedc87c933c764b8869.html +++ b/classnlohmann_1_1basic__json_a16a275d0201e9aedc87c933c764b8869.html @@ -290,7 +290,7 @@ template<template< typename U, typename V, typename...Args > class Obje
26  }
27 }
a class to store JSON values
Definition: json.hpp:187
-
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2612
+
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2616
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
"il brutto"
 out of range
@@ -300,7 +300,7 @@ out of range
 value() for access by value with a default value
 
Since
version 1.0
-

Definition at line 2722 of file json.hpp.

+

Definition at line 2726 of file json.hpp.

@@ -310,7 +310,7 @@ out of range diff --git a/classnlohmann_1_1basic__json_a1dc0c521042807e216d11110d2f002ff.html b/classnlohmann_1_1basic__json_a1dc0c521042807e216d11110d2f002ff.html index 9c9c208d0..476366e39 100644 --- a/classnlohmann_1_1basic__json_a1dc0c521042807e216d11110d2f002ff.html +++ b/classnlohmann_1_1basic__json_a1dc0c521042807e216d11110d2f002ff.html @@ -302,7 +302,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 b1dc55157..12677f6d5 100644 --- a/classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html +++ b/classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html @@ -281,7 +281,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 61365ef1d..26b015470 100644 --- a/classnlohmann_1_1basic__json_a234f03dce002783748ca401a42bc6472.html +++ b/classnlohmann_1_1basic__json_a234f03dce002783748ca401a42bc6472.html @@ -278,7 +278,7 @@ template<typename PointerType , typename std::enable_if<
19  std::cout << std::boolalpha << (p5 == nullptr) << '\n';
20 }
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:2961
+
ValueType value(const typename object_t::key_type &key, ValueType default_value) const
access specified object element with default value
Definition: json.hpp:2965
namespace for Niels Lohmann
Definition: json.hpp:78
PointerType get_ptr() noexcept
get a pointer value (implicit)
Definition: json.hpp:2524
NumberIntegerType number_integer_t
a type for a number (integer)
Definition: json.hpp:527
@@ -298,7 +298,7 @@ true diff --git a/classnlohmann_1_1basic__json_a266c4dd24d11a86e4831523af5d9df4d.html b/classnlohmann_1_1basic__json_a266c4dd24d11a86e4831523af5d9df4d.html index 87b7fa4ec..f3ca934d2 100644 --- a/classnlohmann_1_1basic__json_a266c4dd24d11a86e4831523af5d9df4d.html +++ b/classnlohmann_1_1basic__json_a266c4dd24d11a86e4831523af5d9df4d.html @@ -323,7 +323,7 @@ This function is required for compatibility reasons with Clang. value() for access by value with a default value
Since
version 1.0
-

Definition at line 2890 of file json.hpp.

+

Definition at line 2894 of file json.hpp.

@@ -333,7 +333,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 037a6b003..5c8f403b6 100644 --- a/classnlohmann_1_1basic__json_a26b7e4876af25eae5800ce43f93aaef2.html +++ b/classnlohmann_1_1basic__json_a26b7e4876af25eae5800ce43f93aaef2.html @@ -318,7 +318,7 @@ Unlike 28  << " " << v_string << " " << v_boolean << "\n";
29 }
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:2961
+
ValueType value(const typename object_t::key_type &key, ValueType default_value) const
access specified object element with default value
Definition: json.hpp:2965
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
1 42.23 oops false
 
The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/basic_json__value.cpp -o basic_json__value 
@@ -327,7 +327,7 @@ Unlike operator[](const typename object_t::key_type&) for unchecked access by reference
Since
version 1.0
-

Definition at line 2961 of file json.hpp.

+

Definition at line 2965 of file json.hpp.

@@ -337,7 +337,7 @@ Unlike diff --git a/classnlohmann_1_1basic__json_a2adfc8d24bea3908398cbf325b5dc1d7.html b/classnlohmann_1_1basic__json_a2adfc8d24bea3908398cbf325b5dc1d7.html index 768a072a2..a7fac376e 100644 --- a/classnlohmann_1_1basic__json_a2adfc8d24bea3908398cbf325b5dc1d7.html +++ b/classnlohmann_1_1basic__json_a2adfc8d24bea3908398cbf325b5dc1d7.html @@ -273,13 +273,13 @@ Illustration from cppreference.com
15 }
a class to store JSON values
Definition: json.hpp:187
namespace for Niels Lohmann
Definition: json.hpp:78
-
const_reverse_iterator crbegin() const
returns a const reverse iterator to the last element
Definition: json.hpp:3621
+
const_reverse_iterator crbegin() const
returns a const reverse iterator to the last element
Definition: json.hpp:3625
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
-

Definition at line 3567 of file json.hpp.

+

Definition at line 3571 of file json.hpp.

@@ -289,7 +289,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a2f07bcf7e75c34396476dd1790f26ce8.html b/classnlohmann_1_1basic__json_a2f07bcf7e75c34396476dd1790f26ce8.html index 6d86c4c81..3fd9da152 100644 --- a/classnlohmann_1_1basic__json_a2f07bcf7e75c34396476dd1790f26ce8.html +++ b/classnlohmann_1_1basic__json_a2f07bcf7e75c34396476dd1790f26ce8.html @@ -285,7 +285,7 @@ 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:3928
+
void push_back(basic_json &&val)
add an object to an array
Definition: json.hpp:3932
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
{"one":1,"two":2}
 null
@@ -294,7 +294,7 @@ null
 
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
-

Definition at line 4012 of file json.hpp.

+

Definition at line 4016 of file json.hpp.

@@ -304,7 +304,7 @@ null diff --git a/classnlohmann_1_1basic__json_a3173944e7b1809a333def4078a0b92a3.html b/classnlohmann_1_1basic__json_a3173944e7b1809a333def4078a0b92a3.html index 7cb71096d..80dbd71d5 100644 --- a/classnlohmann_1_1basic__json_a3173944e7b1809a333def4078a0b92a3.html +++ b/classnlohmann_1_1basic__json_a3173944e7b1809a333def4078a0b92a3.html @@ -285,7 +285,7 @@ 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:3928
+
void push_back(basic_json &&val)
add an object to an array
Definition: json.hpp:3932
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
[1,2,3,4,5]
 null
@@ -294,7 +294,7 @@ null
 
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
-

Definition at line 3953 of file json.hpp.

+

Definition at line 3957 of file json.hpp.

@@ -304,7 +304,7 @@ null diff --git a/classnlohmann_1_1basic__json_a3287df6546c905fb0a5786deb4b1cf32.html b/classnlohmann_1_1basic__json_a3287df6546c905fb0a5786deb4b1cf32.html index 3bd06e6d7..9170d3cab 100644 --- a/classnlohmann_1_1basic__json_a3287df6546c905fb0a5786deb4b1cf32.html +++ b/classnlohmann_1_1basic__json_a3287df6546c905fb0a5786deb4b1cf32.html @@ -302,7 +302,7 @@ template<template< typename U, typename V, typename...Args > class Obje
object (unordered set of name/value pairs)
namespace for Niels Lohmann
Definition: json.hpp:78
array (ordered collection of values)
-
bool empty() const noexcept
checks whether the container is empty
Definition: json.hpp:3688
+
bool empty() const noexcept
checks whether the container is empty
Definition: json.hpp:3692
Output (play with this example online):
true
 false
 false
@@ -315,7 +315,7 @@ false
 
The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/empty.cpp -o empty 
Since
version 1.0
-

Definition at line 3688 of file json.hpp.

+

Definition at line 3692 of file json.hpp.

@@ -325,7 +325,7 @@ false diff --git a/classnlohmann_1_1basic__json_a33f1632cfdbf460b4913f4e8a43dd9e4.html b/classnlohmann_1_1basic__json_a33f1632cfdbf460b4913f4e8a43dd9e4.html index 8881a0111..0cf27058b 100644 --- a/classnlohmann_1_1basic__json_a33f1632cfdbf460b4913f4e8a43dd9e4.html +++ b/classnlohmann_1_1basic__json_a33f1632cfdbf460b4913f4e8a43dd9e4.html @@ -288,7 +288,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 8fdbe9949..77f8ae396 100644 --- a/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html +++ b/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html @@ -306,7 +306,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/operator_serialize.cpp -o operator_serialize 
Since
version 1.0
-

Definition at line 4735 of file json.hpp.

+

Definition at line 4739 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_a3d4e4bab95b24ccab42ed37e0ede2d98.html b/classnlohmann_1_1basic__json_a3d4e4bab95b24ccab42ed37e0ede2d98.html index 8d2980d5c..e26de5929 100644 --- a/classnlohmann_1_1basic__json_a3d4e4bab95b24ccab42ed37e0ede2d98.html +++ b/classnlohmann_1_1basic__json_a3d4e4bab95b24ccab42ed37e0ede2d98.html @@ -293,7 +293,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 88ba919ef..2625150e7 100644 --- a/classnlohmann_1_1basic__json_a42f9133f978dde4cce5851b2c2434a0c.html +++ b/classnlohmann_1_1basic__json_a42f9133f978dde4cce5851b2c2434a0c.html @@ -303,7 +303,7 @@ true diff --git a/classnlohmann_1_1basic__json_a4361aa791f3980abb239e4155a3450cb.html b/classnlohmann_1_1basic__json_a4361aa791f3980abb239e4155a3450cb.html index d97a06167..68cd230c7 100644 --- a/classnlohmann_1_1basic__json_a4361aa791f3980abb239e4155a3450cb.html +++ b/classnlohmann_1_1basic__json_a4361aa791f3980abb239e4155a3450cb.html @@ -273,14 +273,14 @@ Illustration from cppreference.com
14  std::cout << *it << '\n';
15 }
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:3476
+
const_iterator cbegin() const
returns a const iterator to the first element
Definition: json.hpp:3480
namespace for Niels Lohmann
Definition: json.hpp:78
-
a const random access iterator for the basic_json class
Definition: json.hpp:5302
+
a const random access iterator for the basic_json class
Definition: json.hpp:5306
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
-

Definition at line 3452 of file json.hpp.

+

Definition at line 3456 of file json.hpp.

@@ -290,7 +290,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a457fec897d7b6283c60ca236ebb1f5e8.html b/classnlohmann_1_1basic__json_a457fec897d7b6283c60ca236ebb1f5e8.html index fc88fc078..c73d6f389 100644 --- a/classnlohmann_1_1basic__json_a457fec897d7b6283c60ca236ebb1f5e8.html +++ b/classnlohmann_1_1basic__json_a457fec897d7b6283c60ca236ebb1f5e8.html @@ -293,7 +293,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 903a9e689..9cc97d186 100644 --- a/classnlohmann_1_1basic__json_a48c8d153bc2fd1af655063a4b984feac.html +++ b/classnlohmann_1_1basic__json_a48c8d153bc2fd1af655063a4b984feac.html @@ -295,7 +295,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 621d0b973..37faa2e22 100644 --- a/classnlohmann_1_1basic__json_a4943b7f16ddc4e0df33c0cae7ef14471.html +++ b/classnlohmann_1_1basic__json_a4943b7f16ddc4e0df33c0cae7ef14471.html @@ -276,13 +276,13 @@ Illustration from cppreference.com
18 }
a class to store JSON values
Definition: json.hpp:187
namespace for Niels Lohmann
Definition: json.hpp:78
-
const_reverse_iterator crend() const
returns a const reverse iterator to one before the first
Definition: json.hpp:3644
+
const_reverse_iterator crend() const
returns a const reverse iterator to one before the first
Definition: json.hpp:3648
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
-

Definition at line 3644 of file json.hpp.

+

Definition at line 3648 of file json.hpp.

@@ -292,7 +292,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a4ad3f27ecece8f644e8dca69a97eb67f.html b/classnlohmann_1_1basic__json_a4ad3f27ecece8f644e8dca69a97eb67f.html index e29ce5e63..b2fca277f 100644 --- a/classnlohmann_1_1basic__json_a4ad3f27ecece8f644e8dca69a97eb67f.html +++ b/classnlohmann_1_1basic__json_a4ad3f27ecece8f644e8dca69a97eb67f.html @@ -276,13 +276,13 @@ Illustration from cppreference.com
18 }
a class to store JSON values
Definition: json.hpp:187
namespace for Niels Lohmann
Definition: json.hpp:78
-
const_reverse_iterator crend() const
returns a const reverse iterator to one before the first
Definition: json.hpp:3644
+
const_reverse_iterator crend() const
returns a const reverse iterator to one before the first
Definition: json.hpp:3648
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
-

Definition at line 3598 of file json.hpp.

+

Definition at line 3602 of file json.hpp.

@@ -292,7 +292,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a4bf695ddf4a00ea8feea2c725ec847f1.html b/classnlohmann_1_1basic__json_a4bf695ddf4a00ea8feea2c725ec847f1.html index 17747a7cd..a9437c2d3 100644 --- a/classnlohmann_1_1basic__json_a4bf695ddf4a00ea8feea2c725ec847f1.html +++ b/classnlohmann_1_1basic__json_a4bf695ddf4a00ea8feea2c725ec847f1.html @@ -282,13 +282,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:4253
+
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:4257
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
-

Definition at line 4315 of file json.hpp.

+

Definition at line 4319 of file json.hpp.

@@ -298,7 +298,7 @@ object = {"one":"eins","two":"zwei"} diff --git a/classnlohmann_1_1basic__json_a4d688b5ff534d3ab4e284b3191061529.html b/classnlohmann_1_1basic__json_a4d688b5ff534d3ab4e284b3191061529.html index 90d0cc2a2..a32ca02f8 100644 --- a/classnlohmann_1_1basic__json_a4d688b5ff534d3ab4e284b3191061529.html +++ b/classnlohmann_1_1basic__json_a4d688b5ff534d3ab4e284b3191061529.html @@ -273,13 +273,13 @@ Illustration from cppreference.com
15 }
a class to store JSON values
Definition: json.hpp:187
namespace for Niels Lohmann
Definition: json.hpp:78
-
const_reverse_iterator crbegin() const
returns a const reverse iterator to the last element
Definition: json.hpp:3621
+
const_reverse_iterator crbegin() const
returns a const reverse iterator to the last element
Definition: json.hpp:3625
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
-

Definition at line 3621 of file json.hpp.

+

Definition at line 3625 of file json.hpp.

@@ -289,7 +289,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a5114ed5eb394a2805da0bd1acba95ae2.html b/classnlohmann_1_1basic__json_a5114ed5eb394a2805da0bd1acba95ae2.html index b9d70f442..d6caa48c4 100644 --- a/classnlohmann_1_1basic__json_a5114ed5eb394a2805da0bd1acba95ae2.html +++ b/classnlohmann_1_1basic__json_a5114ed5eb394a2805da0bd1acba95ae2.html @@ -285,7 +285,7 @@ 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:3928
+
void push_back(basic_json &&val)
add an object to an array
Definition: json.hpp:3932
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
[1,2,3,4,5]
 null
@@ -294,7 +294,7 @@ null
 
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
-

Definition at line 3963 of file json.hpp.

+

Definition at line 3967 of file json.hpp.

@@ -304,7 +304,7 @@ null diff --git a/classnlohmann_1_1basic__json_a53a2abfdd4f72c7df5aba1155bf03e48.html b/classnlohmann_1_1basic__json_a53a2abfdd4f72c7df5aba1155bf03e48.html index 3424e9372..f2f5e269a 100644 --- a/classnlohmann_1_1basic__json_a53a2abfdd4f72c7df5aba1155bf03e48.html +++ b/classnlohmann_1_1basic__json_a53a2abfdd4f72c7df5aba1155bf03e48.html @@ -297,7 +297,7 @@ false diff --git a/classnlohmann_1_1basic__json_a57703688bee6b9736ab3a430d8d246f2.html b/classnlohmann_1_1basic__json_a57703688bee6b9736ab3a430d8d246f2.html index 47cb536ed..35723cc6a 100644 --- a/classnlohmann_1_1basic__json_a57703688bee6b9736ab3a430d8d246f2.html +++ b/classnlohmann_1_1basic__json_a57703688bee6b9736ab3a430d8d246f2.html @@ -294,7 +294,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/operatorarray__size_type.cpp -o operatorarray__size_type 
Since
version 1.0
-

Definition at line 2759 of file json.hpp.

+

Definition at line 2763 of file json.hpp.

@@ -304,7 +304,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a57a96ab3ff1ce7b48a754129fb12c982.html b/classnlohmann_1_1basic__json_a57a96ab3ff1ce7b48a754129fb12c982.html index 87fcd5245..a2a77f8bf 100644 --- a/classnlohmann_1_1basic__json_a57a96ab3ff1ce7b48a754129fb12c982.html +++ b/classnlohmann_1_1basic__json_a57a96ab3ff1ce7b48a754129fb12c982.html @@ -282,13 +282,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:4253
+
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:4257
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
-

Definition at line 4347 of file json.hpp.

+

Definition at line 4351 of file json.hpp.

@@ -298,7 +298,7 @@ string = the bad diff --git a/classnlohmann_1_1basic__json_a5a2d4dbcdbc8ea065b87daf52cd786b9.html b/classnlohmann_1_1basic__json_a5a2d4dbcdbc8ea065b87daf52cd786b9.html index 1a1dadd7b..a318cad31 100644 --- a/classnlohmann_1_1basic__json_a5a2d4dbcdbc8ea065b87daf52cd786b9.html +++ b/classnlohmann_1_1basic__json_a5a2d4dbcdbc8ea065b87daf52cd786b9.html @@ -279,7 +279,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 3e23ee532..6ebb25dd1 100644 --- a/classnlohmann_1_1basic__json_a5c8bb5200f5eac10d31e26be46e5b1ac.html +++ b/classnlohmann_1_1basic__json_a5c8bb5200f5eac10d31e26be46e5b1ac.html @@ -298,7 +298,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/operator__greater.cpp -o operator__greater 
Since
version 1.0
-

Definition at line 4636 of file json.hpp.

+

Definition at line 4640 of file json.hpp.

@@ -308,7 +308,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 1c9a1061b..0dc9e9266 100644 --- a/classnlohmann_1_1basic__json_a5d428360d75a52f6af74751d1cc912c6.html +++ b/classnlohmann_1_1basic__json_a5d428360d75a52f6af74751d1cc912c6.html @@ -312,7 +312,7 @@ true diff --git a/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html b/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html index 798fa4977..d28f9ea7e 100644 --- a/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html +++ b/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html @@ -306,7 +306,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/operator_serialize.cpp -o operator_serialize 
Since
version 1.0
-

Definition at line 4717 of file json.hpp.

+

Definition at line 4721 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_a5f0aad50ed7e8aec3128fe018c18b3fe.html b/classnlohmann_1_1basic__json_a5f0aad50ed7e8aec3128fe018c18b3fe.html index eee7c9292..5baec4c20 100644 --- a/classnlohmann_1_1basic__json_a5f0aad50ed7e8aec3128fe018c18b3fe.html +++ b/classnlohmann_1_1basic__json_a5f0aad50ed7e8aec3128fe018c18b3fe.html @@ -341,7 +341,7 @@ array: [1,2,3,4,5] diff --git a/classnlohmann_1_1basic__json_a5fd8b54389698edf0c08e2dd001f610b.html b/classnlohmann_1_1basic__json_a5fd8b54389698edf0c08e2dd001f610b.html index 70b18000a..7c7879d30 100644 --- a/classnlohmann_1_1basic__json_a5fd8b54389698edf0c08e2dd001f610b.html +++ b/classnlohmann_1_1basic__json_a5fd8b54389698edf0c08e2dd001f610b.html @@ -245,7 +245,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 e5596899d..187bbcde3 100644 --- a/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html +++ b/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html @@ -314,7 +314,7 @@ template<template< typename U, typename V, typename...Args > class Obje
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
-

Definition at line 4839 of file json.hpp.

+

Definition at line 4843 of file json.hpp.

@@ -324,7 +324,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 4f66c6284..e3872b2d0 100644 --- a/classnlohmann_1_1basic__json_a63691315292df8e1522b00d37ebb1ffc.html +++ b/classnlohmann_1_1basic__json_a63691315292df8e1522b00d37ebb1ffc.html @@ -282,7 +282,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 c1bcae8c1..1951e2866 100644 --- a/classnlohmann_1_1basic__json_a652414dd930cb3af3b6f454cc535a23e.html +++ b/classnlohmann_1_1basic__json_a652414dd930cb3af3b6f454cc535a23e.html @@ -296,7 +296,7 @@ template<template< typename U, typename V, typename...Args > class Obje
32  }
33 }
a class to store JSON values
Definition: json.hpp:187
-
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2612
+
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2616
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
"il brutto"
 {"the bad":"il cattivo","the good":"il buono","the ugly":"il brutto"}
@@ -307,7 +307,7 @@ out of range
 value() for access by value with a default value
 
Since
version 1.0
-

Definition at line 2684 of file json.hpp.

+

Definition at line 2688 of file json.hpp.

@@ -317,7 +317,7 @@ out of range diff --git a/classnlohmann_1_1basic__json_a656939a3dc9a6047e4afacd9e11b83a6.html b/classnlohmann_1_1basic__json_a656939a3dc9a6047e4afacd9e11b83a6.html index 9d249561a..e55aa3f37 100644 --- a/classnlohmann_1_1basic__json_a656939a3dc9a6047e4afacd9e11b83a6.html +++ b/classnlohmann_1_1basic__json_a656939a3dc9a6047e4afacd9e11b83a6.html @@ -278,7 +278,7 @@ template<typename PointerType , typename std::enable_if<
19  std::cout << std::boolalpha << (p5 == nullptr) << '\n';
20 }
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:2961
+
ValueType value(const typename object_t::key_type &key, ValueType default_value) const
access specified object element with default value
Definition: json.hpp:2965
namespace for Niels Lohmann
Definition: json.hpp:78
PointerType get_ptr() noexcept
get a pointer value (implicit)
Definition: json.hpp:2524
NumberIntegerType number_integer_t
a type for a number (integer)
Definition: json.hpp:527
@@ -298,7 +298,7 @@ true diff --git a/classnlohmann_1_1basic__json_a66f936cfbd252f85bd3dc2598e37a64b.html b/classnlohmann_1_1basic__json_a66f936cfbd252f85bd3dc2598e37a64b.html index b847f9dd9..ea2373510 100644 --- a/classnlohmann_1_1basic__json_a66f936cfbd252f85bd3dc2598e37a64b.html +++ b/classnlohmann_1_1basic__json_a66f936cfbd252f85bd3dc2598e37a64b.html @@ -285,7 +285,7 @@ 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:3928
+
void push_back(basic_json &&val)
add an object to an array
Definition: json.hpp:3932
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
[1,2,3,4,5]
 null
@@ -294,7 +294,7 @@ null
 
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
-

Definition at line 3928 of file json.hpp.

+

Definition at line 3932 of file json.hpp.

@@ -304,7 +304,7 @@ null diff --git a/classnlohmann_1_1basic__json_a6944904b3b59769b1cf62ac2532cbe33.html b/classnlohmann_1_1basic__json_a6944904b3b59769b1cf62ac2532cbe33.html index afc899d33..b154ef19d 100644 --- a/classnlohmann_1_1basic__json_a6944904b3b59769b1cf62ac2532cbe33.html +++ b/classnlohmann_1_1basic__json_a6944904b3b59769b1cf62ac2532cbe33.html @@ -271,7 +271,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 b194e291a..ffe93e90d 100644 --- a/classnlohmann_1_1basic__json_a696ced74d8edc0b63a000a72907ab109.html +++ b/classnlohmann_1_1basic__json_a696ced74d8edc0b63a000a72907ab109.html @@ -299,7 +299,7 @@ false diff --git a/classnlohmann_1_1basic__json_a6a7f45095675ac6fd1d018a0e41874be.html b/classnlohmann_1_1basic__json_a6a7f45095675ac6fd1d018a0e41874be.html index ca8c3222c..9d1c7a308 100644 --- a/classnlohmann_1_1basic__json_a6a7f45095675ac6fd1d018a0e41874be.html +++ b/classnlohmann_1_1basic__json_a6a7f45095675ac6fd1d018a0e41874be.html @@ -308,9 +308,9 @@ template<class InputIT , typename std::enable_if<
20  std::cout << j_object_range << '\n';
21 }
a class to store JSON values
Definition: json.hpp:187
-
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3501
-
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3442
-
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3362
+
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3505
+
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3446
+
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3366
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
["bravo","charly"]
 42
@@ -328,7 +328,7 @@ template<class InputIT , typename std::enable_if<
 
 
 
diff --git a/classnlohmann_1_1basic__json_a6b7428e8c1169497f47b81667001cbfb.html b/classnlohmann_1_1basic__json_a6b7428e8c1169497f47b81667001cbfb.html
index 930527ab2..963a6b46a 100644
--- a/classnlohmann_1_1basic__json_a6b7428e8c1169497f47b81667001cbfb.html
+++ b/classnlohmann_1_1basic__json_a6b7428e8c1169497f47b81667001cbfb.html
@@ -297,15 +297,15 @@ template<template< typename U, typename V, typename...Args > class Obje
 
15  std::cout << v << '\n';
16 }
a class to store JSON values
Definition: json.hpp:187
-
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3442
+
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3446
namespace for Niels Lohmann
Definition: json.hpp:78
-
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4061
+
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4065
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
-

Definition at line 4114 of file json.hpp.

+

Definition at line 4118 of file json.hpp.

@@ -315,7 +315,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 052c072b7..50bce130f 100644 --- a/classnlohmann_1_1basic__json_a6bbd3e72a870f1ba81ff6886b063b0fe.html +++ b/classnlohmann_1_1basic__json_a6bbd3e72a870f1ba81ff6886b063b0fe.html @@ -245,7 +245,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 6dcffef4e..d9277c348 100644 --- a/classnlohmann_1_1basic__json_a6dff6a02a2be250b8f8dc2f47be65544.html +++ b/classnlohmann_1_1basic__json_a6dff6a02a2be250b8f8dc2f47be65544.html @@ -278,7 +278,7 @@ template<template< typename U, typename V, typename...Args > class Obje
15 }
a class to store JSON values
Definition: json.hpp:187
namespace for Niels Lohmann
Definition: json.hpp:78
-
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:3111
+
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:3115
Output (play with this example online):
[0,1,3,4,5]
 
The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/erase__size_type.cpp -o erase__size_type 
See also
erase(InteratorType) – removes the element at a given position
@@ -288,7 +288,7 @@ template<template< typename U, typename V, typename...Args > class Obje erase(const typename object_t::key_type&) – remvoes the element from an object at the given key
Since
version 1.0
-

Definition at line 3327 of file json.hpp.

+

Definition at line 3331 of file json.hpp.

@@ -298,7 +298,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.html b/classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.html index 1e53bdd27..f056c5ee0 100644 --- a/classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.html +++ b/classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.html @@ -298,7 +298,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/operator__notequal.cpp -o operator__notequal 
Since
version 1.0
-

Definition at line 4514 of file json.hpp.

+

Definition at line 4518 of file json.hpp.

@@ -308,7 +308,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 d951ec6ca..a4421d0fb 100644 --- a/classnlohmann_1_1basic__json_a71eba33d906745e66f340952b79fbce3.html +++ b/classnlohmann_1_1basic__json_a71eba33d906745e66f340952b79fbce3.html @@ -245,7 +245,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 ae63045b6..6370fc5b1 100644 --- a/classnlohmann_1_1basic__json_a72442ccbb378b4464a24a2da1e784041.html +++ b/classnlohmann_1_1basic__json_a72442ccbb378b4464a24a2da1e784041.html @@ -316,7 +316,7 @@ Unlike 28  << " " << v_string << " " << v_boolean << "\n";
29 }
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:2961
+
ValueType value(const typename object_t::key_type &key, ValueType default_value) const
access specified object element with default value
Definition: json.hpp:2965
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
1 42.23 oops false
 
The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/basic_json__value.cpp -o basic_json__value 
@@ -325,7 +325,7 @@ Unlike operator[](const typename object_t::key_type&) for unchecked access by reference
Since
version 1.0
-

Definition at line 2987 of file json.hpp.

+

Definition at line 2991 of file json.hpp.

@@ -335,7 +335,7 @@ Unlike diff --git a/classnlohmann_1_1basic__json_a72ba20783ecb3eec98bd6a3b870d565c.html b/classnlohmann_1_1basic__json_a72ba20783ecb3eec98bd6a3b870d565c.html index e85d6904d..ad530c415 100644 --- a/classnlohmann_1_1basic__json_a72ba20783ecb3eec98bd6a3b870d565c.html +++ b/classnlohmann_1_1basic__json_a72ba20783ecb3eec98bd6a3b870d565c.html @@ -276,14 +276,14 @@ Illustration from cppreference.com
17  std::cout << *it << '\n';
18 }
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:3535
+
const_iterator cend() const
returns a const iterator to one past the last element
Definition: json.hpp:3539
namespace for Niels Lohmann
Definition: json.hpp:78
-
a const random access iterator for the basic_json class
Definition: json.hpp:5302
+
a const random access iterator for the basic_json class
Definition: json.hpp:5306
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
-

Definition at line 3535 of file json.hpp.

+

Definition at line 3539 of file json.hpp.

@@ -293,7 +293,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a74472977b798c7b7989e6e7cb960ecff.html b/classnlohmann_1_1basic__json_a74472977b798c7b7989e6e7cb960ecff.html index 7a3c600bf..551265dbb 100644 --- a/classnlohmann_1_1basic__json_a74472977b798c7b7989e6e7cb960ecff.html +++ b/classnlohmann_1_1basic__json_a74472977b798c7b7989e6e7cb960ecff.html @@ -299,7 +299,7 @@ null diff --git a/classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.html b/classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.html index 3f48e3d55..f1a84a49e 100644 --- a/classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.html +++ b/classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.html @@ -298,7 +298,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/operator__greaterequal.cpp -o operator__greaterequal 
Since
version 1.0
-

Definition at line 4680 of file json.hpp.

+

Definition at line 4684 of file json.hpp.

@@ -308,7 +308,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 502a2502c..889ef8e01 100644 --- a/classnlohmann_1_1basic__json_a74ccfa471a0c061876b247f820f3c741.html +++ b/classnlohmann_1_1basic__json_a74ccfa471a0c061876b247f820f3c741.html @@ -321,13 +321,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:7622
+
basic_json<> json
default JSON class
Definition: json.hpp:7631
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:3862
+
void clear() noexcept
clears the contents
Definition: json.hpp:3866
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:4774
+
static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
deserialize from string
Definition: json.hpp:4778
parse_event_t
JSON callback events.
Definition: json.hpp:754
Output (play with this example online):
{
     "Image": {
@@ -367,7 +367,7 @@ template<template< typename U, typename V, typename...Args > class Obje
 
See also
parse(const string_t&, parser_callback_t) for a version that reads from a string
Since
version 1.0
-

Definition at line 4803 of file json.hpp.

+

Definition at line 4807 of file json.hpp.

@@ -377,7 +377,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 4e3b0edb1..ededbe8b0 100644 --- a/classnlohmann_1_1basic__json_a75a1754e0d39f33095d3102a8bdb9881.html +++ b/classnlohmann_1_1basic__json_a75a1754e0d39f33095d3102a8bdb9881.html @@ -309,10 +309,10 @@ template<class InteratorType , typename std::enable_if<
29  std::cout << j_string << '\n';
30 }
a class to store JSON values
Definition: json.hpp:187
-
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3442
-
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3362
+
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3446
+
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3366
namespace for Niels Lohmann
Definition: json.hpp:78
-
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:3111
+
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:3115
Output (play with this example online):
null
 null
 null
@@ -327,7 +327,7 @@ null
 erase(const size_type) – removes the element from an array at the given index
 
Since
version 1.0
-

Definition at line 3111 of file json.hpp.

+

Definition at line 3115 of file json.hpp.

@@ -337,7 +337,7 @@ null diff --git a/classnlohmann_1_1basic__json_a76cfc5062bf6223396ab82c753cd4634.html b/classnlohmann_1_1basic__json_a76cfc5062bf6223396ab82c753cd4634.html index 787735ec7..c75592b25 100644 --- a/classnlohmann_1_1basic__json_a76cfc5062bf6223396ab82c753cd4634.html +++ b/classnlohmann_1_1basic__json_a76cfc5062bf6223396ab82c753cd4634.html @@ -278,7 +278,7 @@ template<typename PointerType , typename std::enable_if<
19  std::cout << std::boolalpha << (p5 == nullptr) << '\n';
20 }
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:2961
+
ValueType value(const typename object_t::key_type &key, ValueType default_value) const
access specified object element with default value
Definition: json.hpp:2965
namespace for Niels Lohmann
Definition: json.hpp:78
ValueType get() const
get a value (explicit)
Definition: json.hpp:2440
NumberIntegerType number_integer_t
a type for a number (integer)
Definition: json.hpp:527
@@ -299,7 +299,7 @@ true diff --git a/classnlohmann_1_1basic__json_a7c08f966200af98db0313a3b517ce0a9.html b/classnlohmann_1_1basic__json_a7c08f966200af98db0313a3b517ce0a9.html index 51bf55a08..b05bfd659 100644 --- a/classnlohmann_1_1basic__json_a7c08f966200af98db0313a3b517ce0a9.html +++ b/classnlohmann_1_1basic__json_a7c08f966200af98db0313a3b517ce0a9.html @@ -275,14 +275,14 @@ Illustration from cppreference.com
17  std::cout << *it << '\n';
18 }
a class to store JSON values
Definition: json.hpp:187
-
reverse_iterator rend()
returns an iterator to the reverse-end
Definition: json.hpp:3590
+
reverse_iterator rend()
returns an iterator to the reverse-end
Definition: json.hpp:3594
namespace for Niels Lohmann
Definition: json.hpp:78
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
-

Definition at line 3590 of file json.hpp.

+

Definition at line 3594 of file json.hpp.

@@ -292,7 +292,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_a7c19a5c3be6cc755377ee41eade78baf.html b/classnlohmann_1_1basic__json_a7c19a5c3be6cc755377ee41eade78baf.html index e221cc6b8..2e39182c9 100644 --- a/classnlohmann_1_1basic__json_a7c19a5c3be6cc755377ee41eade78baf.html +++ b/classnlohmann_1_1basic__json_a7c19a5c3be6cc755377ee41eade78baf.html @@ -275,8 +275,8 @@ template<template< typename U, typename V, typename...Args > class Obje
18  std::cout << "\"three\" was found: " << (it_three != j_object.end()) << '\n';
19 }
a class to store JSON values
Definition: json.hpp:187
-
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3501
-
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3362
+
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3505
+
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3366
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
"two" was found: true
 value at key "two": 2
@@ -284,7 +284,7 @@ value at key "two": 2
 
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
-

Definition at line 3378 of file json.hpp.

+

Definition at line 3382 of file json.hpp.

@@ -294,7 +294,7 @@ value at key "two": 2 diff --git a/classnlohmann_1_1basic__json_a7d0db3b728d820d4984df78d97d2b104.html b/classnlohmann_1_1basic__json_a7d0db3b728d820d4984df78d97d2b104.html index 13b521e95..9244aebc2 100644 --- a/classnlohmann_1_1basic__json_a7d0db3b728d820d4984df78d97d2b104.html +++ b/classnlohmann_1_1basic__json_a7d0db3b728d820d4984df78d97d2b104.html @@ -245,7 +245,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 20a61d77e..7c6613d31 100644 --- a/classnlohmann_1_1basic__json_a7d1b990f2c12fecb57db1504fdadd0bb.html +++ b/classnlohmann_1_1basic__json_a7d1b990f2c12fecb57db1504fdadd0bb.html @@ -280,7 +280,7 @@ 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
-
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:3111
+
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:3115
Output (play with this example online):
{"two":2}
 1 0
 
The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/erase__key_type.cpp -o erase__key_type 
@@ -291,7 +291,7 @@ template<template< typename U, typename V, typename...Args > class Obje erase(const size_type) – removes the element from an array at the given index
Since
version 1.0
-

Definition at line 3292 of file json.hpp.

+

Definition at line 3296 of file json.hpp.

@@ -301,7 +301,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 8e8c3f8dc..40ef736c3 100644 --- a/classnlohmann_1_1basic__json_a7dab69b10b98e7bc694339720e37fb2b.html +++ b/classnlohmann_1_1basic__json_a7dab69b10b98e7bc694339720e37fb2b.html @@ -275,8 +275,8 @@ template<template< typename U, typename V, typename...Args > class Obje
18  std::cout << "\"three\" was found: " << (it_three != j_object.end()) << '\n';
19 }
a class to store JSON values
Definition: json.hpp:187
-
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3501
-
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3362
+
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3505
+
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3366
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
"two" was found: true
 value at key "two": 2
@@ -284,7 +284,7 @@ value at key "two": 2
 
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
-

Definition at line 3362 of file json.hpp.

+

Definition at line 3366 of file json.hpp.

@@ -294,7 +294,7 @@ value at key "two": 2 diff --git a/classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html b/classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html index 0e5d2d7f8..1634f4bfe 100644 --- a/classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html +++ b/classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html @@ -296,7 +296,7 @@ template<template< typename U, typename V, typename...Args > class Obje 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
-

Definition at line 4546 of file json.hpp.

+

Definition at line 4550 of file json.hpp.

@@ -306,7 +306,7 @@ null != nullptr false diff --git a/classnlohmann_1_1basic__json_a80ceaa3bdd346292273b309e08525c1c.html b/classnlohmann_1_1basic__json_a80ceaa3bdd346292273b309e08525c1c.html index 2496f98f0..3fb72ce91 100644 --- a/classnlohmann_1_1basic__json_a80ceaa3bdd346292273b309e08525c1c.html +++ b/classnlohmann_1_1basic__json_a80ceaa3bdd346292273b309e08525c1c.html @@ -245,7 +245,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 ff0ce7811..84911511b 100644 --- a/classnlohmann_1_1basic__json_a83cbbfbf5d3ecbad6de8ece0be6b36c4.html +++ b/classnlohmann_1_1basic__json_a83cbbfbf5d3ecbad6de8ece0be6b36c4.html @@ -283,7 +283,7 @@ template<template< typename U, typename V, typename...Args > class Obje
26  //std::cout << j_array_empty.front() << '\n'; // would throw
27  std::cout << j_string.front() << '\n';
28 }
-
reference front()
access the first element
Definition: json.hpp:3012
+
reference front()
access the first element
Definition: json.hpp:3016
a class to store JSON values
Definition: json.hpp:187
object (unordered set of name/value pairs)
namespace for Niels Lohmann
Definition: json.hpp:78
@@ -297,7 +297,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/front.cpp -o front 
Since
version 1.0
-

Definition at line 3012 of file json.hpp.

+

Definition at line 3016 of file json.hpp.

@@ -307,7 +307,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 49ff09303..0db5fa5a8 100644 --- a/classnlohmann_1_1basic__json_a87db51b6b936fb2ea293cdbc8702dcb8.html +++ b/classnlohmann_1_1basic__json_a87db51b6b936fb2ea293cdbc8702dcb8.html @@ -298,7 +298,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/operator__lessequal.cpp -o operator__lessequal 
Since
version 1.0
-

Definition at line 4658 of file json.hpp.

+

Definition at line 4662 of file json.hpp.

@@ -308,7 +308,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 b0e8e0b3d..6d790e95e 100644 --- a/classnlohmann_1_1basic__json_a8b526709d395142b68d21abfbfff17c3.html +++ b/classnlohmann_1_1basic__json_a8b526709d395142b68d21abfbfff17c3.html @@ -283,7 +283,7 @@ template<template< typename U, typename V, typename...Args > class Obje
26  //std::cout << j_array_empty.front() << '\n'; // would throw
27  std::cout << j_string.front() << '\n';
28 }
-
reference front()
access the first element
Definition: json.hpp:3012
+
reference front()
access the first element
Definition: json.hpp:3016
a class to store JSON values
Definition: json.hpp:187
object (unordered set of name/value pairs)
namespace for Niels Lohmann
Definition: json.hpp:78
@@ -297,7 +297,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/front.cpp -o front 
Since
version 1.0
-

Definition at line 3020 of file json.hpp.

+

Definition at line 3024 of file json.hpp.

@@ -307,7 +307,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 87220aace..42da7507d 100644 --- a/classnlohmann_1_1basic__json_a8c40cd9ead4de7c82f28268bdf0ec98a.html +++ b/classnlohmann_1_1basic__json_a8c40cd9ead4de7c82f28268bdf0ec98a.html @@ -299,7 +299,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:3862
+
void clear() noexcept
clears the contents
Definition: json.hpp:3866
Output (play with this example online):
null
 false
 0
@@ -310,7 +310,7 @@ false
 
The example code above can be translated with
g++ -std=c++11 -Isrc doc/examples/clear.cpp -o clear 
Since
version 1.0
-

Definition at line 3862 of file json.hpp.

+

Definition at line 3866 of file json.hpp.

@@ -320,7 +320,7 @@ false diff --git a/classnlohmann_1_1basic__json_a8fa74698f4061e18ec664009f3af1ddf.html b/classnlohmann_1_1basic__json_a8fa74698f4061e18ec664009f3af1ddf.html index 84d579acb..e380b5921 100644 --- a/classnlohmann_1_1basic__json_a8fa74698f4061e18ec664009f3af1ddf.html +++ b/classnlohmann_1_1basic__json_a8fa74698f4061e18ec664009f3af1ddf.html @@ -302,16 +302,16 @@ template<template< typename U, typename V, typename...Args > class Obje
18  std::cout << v << '\n';
19 }
a class to store JSON values
Definition: json.hpp:187
-
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3501
-
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3442
+
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3505
+
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3446
namespace for Niels Lohmann
Definition: json.hpp:78
-
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4061
+
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4065
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
-

Definition at line 4162 of file json.hpp.

+

Definition at line 4166 of file json.hpp.

@@ -321,7 +321,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_a930e14150ffa067bcf56d35cb00271e1.html b/classnlohmann_1_1basic__json_a930e14150ffa067bcf56d35cb00271e1.html index 479845c42..ab6d44c89 100644 --- a/classnlohmann_1_1basic__json_a930e14150ffa067bcf56d35cb00271e1.html +++ b/classnlohmann_1_1basic__json_a930e14150ffa067bcf56d35cb00271e1.html @@ -277,7 +277,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 3bf1f8365..b3622a36e 100644 --- a/classnlohmann_1_1basic__json_a960962c683909619d1d2fbbe856c022e.html +++ b/classnlohmann_1_1basic__json_a960962c683909619d1d2fbbe856c022e.html @@ -285,7 +285,7 @@ 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:3928
+
void push_back(basic_json &&val)
add an object to an array
Definition: json.hpp:3932
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
[1,2,3,4,5]
 null
@@ -294,7 +294,7 @@ null
 
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
-

Definition at line 3986 of file json.hpp.

+

Definition at line 3990 of file json.hpp.

@@ -304,7 +304,7 @@ null diff --git a/classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html b/classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html index e91e19c7f..e73c20f7b 100644 --- a/classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html +++ b/classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html @@ -296,7 +296,7 @@ template<template< typename U, typename V, typename...Args > class Obje 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
-

Definition at line 4484 of file json.hpp.

+

Definition at line 4488 of file json.hpp.

@@ -306,7 +306,7 @@ null == nullptr true diff --git a/classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html b/classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html index 476a64496..c2eb6ba22 100644 --- a/classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html +++ b/classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html @@ -296,7 +296,7 @@ template<template< typename U, typename V, typename...Args > class Obje 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
-

Definition at line 4493 of file json.hpp.

+

Definition at line 4497 of file json.hpp.

@@ -306,7 +306,7 @@ null == nullptr true diff --git a/classnlohmann_1_1basic__json_a9993148cb0473365e52998c7315f9ada.html b/classnlohmann_1_1basic__json_a9993148cb0473365e52998c7315f9ada.html index aff9bbfc3..38237543d 100644 --- a/classnlohmann_1_1basic__json_a9993148cb0473365e52998c7315f9ada.html +++ b/classnlohmann_1_1basic__json_a9993148cb0473365e52998c7315f9ada.html @@ -299,7 +299,7 @@ false diff --git a/classnlohmann_1_1basic__json_a9a73d1b71c9e913aa2888d8b40c72ee9.html b/classnlohmann_1_1basic__json_a9a73d1b71c9e913aa2888d8b40c72ee9.html index fb7395789..a7d99de63 100644 --- a/classnlohmann_1_1basic__json_a9a73d1b71c9e913aa2888d8b40c72ee9.html +++ b/classnlohmann_1_1basic__json_a9a73d1b71c9e913aa2888d8b40c72ee9.html @@ -282,7 +282,7 @@ 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:7622
+
basic_json<> json
default JSON class
Definition: json.hpp:7631
a class to store JSON values
Definition: json.hpp:187
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
[]
@@ -301,7 +301,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 9546b170a..cb1f2637d 100644
--- a/classnlohmann_1_1basic__json_a9c26c5d0f4a519c7236149b9aeb3ef9e.html
+++ b/classnlohmann_1_1basic__json_a9c26c5d0f4a519c7236149b9aeb3ef9e.html
@@ -299,7 +299,7 @@ false
 
 
 
diff --git a/classnlohmann_1_1basic__json_a9f17a0690155e3a5603246ccec81499e.html b/classnlohmann_1_1basic__json_a9f17a0690155e3a5603246ccec81499e.html
index 1d22fc4ba..5b235512f 100644
--- a/classnlohmann_1_1basic__json_a9f17a0690155e3a5603246ccec81499e.html
+++ b/classnlohmann_1_1basic__json_a9f17a0690155e3a5603246ccec81499e.html
@@ -296,7 +296,7 @@ true
 
 
 
diff --git a/classnlohmann_1_1basic__json_aa0422e861b4cbd7cdcaad7a11a1304a9.html b/classnlohmann_1_1basic__json_aa0422e861b4cbd7cdcaad7a11a1304a9.html
index 37d26f687..9d17894a3 100644
--- a/classnlohmann_1_1basic__json_aa0422e861b4cbd7cdcaad7a11a1304a9.html
+++ b/classnlohmann_1_1basic__json_aa0422e861b4cbd7cdcaad7a11a1304a9.html
@@ -321,13 +321,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:7622
+
basic_json<> json
default JSON class
Definition: json.hpp:7631
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:3862
+
void clear() noexcept
clears the contents
Definition: json.hpp:3866
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:4774
+
static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
deserialize from string
Definition: json.hpp:4778
parse_event_t
JSON callback events.
Definition: json.hpp:754
Output (play with this example online):
{
     "Image": {
@@ -367,7 +367,7 @@ template<template< typename U, typename V, typename...Args > class Obje
 
See also
parse(const string_t&, parser_callback_t) for a version that reads from a string
Since
version 1.0
-

Definition at line 4811 of file json.hpp.

+

Definition at line 4815 of file json.hpp.

@@ -377,7 +377,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 873d85191..4febef272 100644 --- a/classnlohmann_1_1basic__json_aa1f3b3f1dca79392d6727b81f9668c6c.html +++ b/classnlohmann_1_1basic__json_aa1f3b3f1dca79392d6727b81f9668c6c.html @@ -287,7 +287,7 @@ template<template< typename U, typename V, typename...Args > class Obje
object (unordered set of name/value pairs)
namespace for Niels Lohmann
Definition: json.hpp:78
array (ordered collection of values)
-
reference back()
access the last element
Definition: json.hpp:3046
+
reference back()
access the last element
Definition: json.hpp:3050
Output (play with this example online):
true
 17
 23.42
@@ -297,7 +297,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/back.cpp -o back 
Since
version 1.0
-

Definition at line 3046 of file json.hpp.

+

Definition at line 3050 of file json.hpp.

@@ -307,7 +307,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 9a7e49d3c..44e536c2f 100644 --- a/classnlohmann_1_1basic__json_aa5413178b8041f7ac685dec4b040dd2c.html +++ b/classnlohmann_1_1basic__json_aa5413178b8041f7ac685dec4b040dd2c.html @@ -276,14 +276,14 @@ Illustration from cppreference.com
17  std::cout << *it << '\n';
18 }
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:3535
+
const_iterator cend() const
returns a const iterator to one past the last element
Definition: json.hpp:3539
namespace for Niels Lohmann
Definition: json.hpp:78
-
a const random access iterator for the basic_json class
Definition: json.hpp:5302
+
a const random access iterator for the basic_json class
Definition: json.hpp:5306
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
-

Definition at line 3511 of file json.hpp.

+

Definition at line 3515 of file json.hpp.

@@ -293,7 +293,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_aa6a24b176f9599a21d662cc5f8e1ca76.html b/classnlohmann_1_1basic__json_aa6a24b176f9599a21d662cc5f8e1ca76.html index ab49bec2e..6f38145e2 100644 --- a/classnlohmann_1_1basic__json_aa6a24b176f9599a21d662cc5f8e1ca76.html +++ b/classnlohmann_1_1basic__json_aa6a24b176f9599a21d662cc5f8e1ca76.html @@ -264,7 +264,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 5cc8743d7..d019be66e 100644 --- a/classnlohmann_1_1basic__json_aa6c32f669a2e523666072003d0ea46f4.html +++ b/classnlohmann_1_1basic__json_aa6c32f669a2e523666072003d0ea46f4.html @@ -329,7 +329,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 4d8ea7b91..922c51b8f 100644 --- a/classnlohmann_1_1basic__json_aa71e977d31f470689883ac60d16ea4ac.html +++ b/classnlohmann_1_1basic__json_aa71e977d31f470689883ac60d16ea4ac.html @@ -281,15 +281,15 @@ template<template< typename U, typename V, typename...Args > class Obje
19 }
ArrayType< basic_json, AllocatorType< basic_json >> array_t
a type for an array
Definition: json.hpp:386
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:2961
+
ValueType value(const typename object_t::key_type &key, ValueType default_value) const
access specified object element with default value
Definition: json.hpp:2965
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:4253
+
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:4257
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
-

Definition at line 4283 of file json.hpp.

+

Definition at line 4287 of file json.hpp.

@@ -299,7 +299,7 @@ array = [1,2,3,4] diff --git a/classnlohmann_1_1basic__json_aabe4661644ea549089f0886c2551d2ac.html b/classnlohmann_1_1basic__json_aabe4661644ea549089f0886c2551d2ac.html index 608d17171..7659e7693 100644 --- a/classnlohmann_1_1basic__json_aabe4661644ea549089f0886c2551d2ac.html +++ b/classnlohmann_1_1basic__json_aabe4661644ea549089f0886c2551d2ac.html @@ -279,7 +279,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 10de0ff0b..af705d653 100644 --- a/classnlohmann_1_1basic__json_aac185a137428a7337aa620de07bfbbd7.html +++ b/classnlohmann_1_1basic__json_aac185a137428a7337aa620de07bfbbd7.html @@ -262,7 +262,7 @@ template<template< typename U, typename V, typename...Args > class Obje
Since
version 1.0
-

Definition at line 4380 of file json.hpp.

+

Definition at line 4384 of file json.hpp.

@@ -272,7 +272,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 2c0cf3bdc..214d28a74 100644 --- a/classnlohmann_1_1basic__json_aacd442b66140c764c594ac8ad7dfd5b3.html +++ b/classnlohmann_1_1basic__json_aacd442b66140c764c594ac8ad7dfd5b3.html @@ -302,7 +302,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/operator__less.cpp -o operator__less 
Since
version 1.0
-

Definition at line 4575 of file json.hpp.

+

Definition at line 4579 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_aacf6c869f6a9c66ac1bc99e93f310044.html b/classnlohmann_1_1basic__json_aacf6c869f6a9c66ac1bc99e93f310044.html index 71632974a..7824b9857 100644 --- a/classnlohmann_1_1basic__json_aacf6c869f6a9c66ac1bc99e93f310044.html +++ b/classnlohmann_1_1basic__json_aacf6c869f6a9c66ac1bc99e93f310044.html @@ -267,7 +267,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 3dcc98911..04f0f26ca 100644 --- a/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html +++ b/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html @@ -314,7 +314,7 @@ template<template< typename U, typename V, typename...Args > class Obje
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
-

Definition at line 4849 of file json.hpp.

+

Definition at line 4853 of file json.hpp.

@@ -324,7 +324,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 6c071bdc1..dd4817054 100644 --- a/classnlohmann_1_1basic__json_aafa839f2a74dc1b5060314b3423143b8.html +++ b/classnlohmann_1_1basic__json_aafa839f2a74dc1b5060314b3423143b8.html @@ -253,7 +253,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 e1a9f4027..fce58b60d 100644 --- a/classnlohmann_1_1basic__json_ab14e3503305622fb5ab01a7f490916e8.html +++ b/classnlohmann_1_1basic__json_ab14e3503305622fb5ab01a7f490916e8.html @@ -290,15 +290,15 @@ template<template< typename U, typename V, typename...Args > class Obje
15  std::cout << v << '\n';
16 }
a class to store JSON values
Definition: json.hpp:187
-
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3501
+
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3505
namespace for Niels Lohmann
Definition: json.hpp:78
-
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4061
+
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4065
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
-

Definition at line 4216 of file json.hpp.

+

Definition at line 4220 of file json.hpp.

@@ -308,7 +308,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 0994a6e59..8a74fdd67 100644 --- a/classnlohmann_1_1basic__json_ab2162bc76e10d8736cab9b2039956054.html +++ b/classnlohmann_1_1basic__json_ab2162bc76e10d8736cab9b2039956054.html @@ -275,14 +275,14 @@ 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:5804
-
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3501
+
a mutable random access iterator for the basic_json class
Definition: json.hpp:5808
+
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3505
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
-

Definition at line 3501 of file json.hpp.

+

Definition at line 3505 of file json.hpp.

@@ -292,7 +292,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_ab74b2398f29acc6ffbf48f1b8974a848.html b/classnlohmann_1_1basic__json_ab74b2398f29acc6ffbf48f1b8974a848.html index 3f12e0328..87450ac2c 100644 --- a/classnlohmann_1_1basic__json_ab74b2398f29acc6ffbf48f1b8974a848.html +++ b/classnlohmann_1_1basic__json_ab74b2398f29acc6ffbf48f1b8974a848.html @@ -312,7 +312,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 3d016bd2b..701e22967 100644 --- a/classnlohmann_1_1basic__json_ab7d60fb6cb8e8f5740e588f9dc953819.html +++ b/classnlohmann_1_1basic__json_ab7d60fb6cb8e8f5740e588f9dc953819.html @@ -351,7 +351,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 08512f24b..34c187642 100644 --- a/classnlohmann_1_1basic__json_ab9a20bd1d391e9cb968db50c246f728d.html +++ b/classnlohmann_1_1basic__json_ab9a20bd1d391e9cb968db50c246f728d.html @@ -298,7 +298,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:3745
+
size_type size() const noexcept
returns the number of elements
Definition: json.hpp:3749
object (unordered set of name/value pairs)
namespace for Niels Lohmann
Definition: json.hpp:78
array (ordered collection of values)
@@ -314,7 +314,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/size.cpp -o size 
Since
version 1.0
-

Definition at line 3745 of file json.hpp.

+

Definition at line 3749 of file json.hpp.

@@ -324,7 +324,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 095c017a4..1f7c522bf 100644 --- a/classnlohmann_1_1basic__json_ab9da2afc6f77295f25252725fde142a6.html +++ b/classnlohmann_1_1basic__json_ab9da2afc6f77295f25252725fde142a6.html @@ -287,7 +287,7 @@ template<template< typename U, typename V, typename...Args > class Obje
object (unordered set of name/value pairs)
namespace for Niels Lohmann
Definition: json.hpp:78
array (ordered collection of values)
-
reference back()
access the last element
Definition: json.hpp:3046
+
reference back()
access the last element
Definition: json.hpp:3050
Output (play with this example online):
true
 17
 23.42
@@ -297,7 +297,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/back.cpp -o back 
Since
version 1.0
-

Definition at line 3056 of file json.hpp.

+

Definition at line 3060 of file json.hpp.

@@ -307,7 +307,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 06611ad51..dfe51a65d 100644 --- a/classnlohmann_1_1basic__json_abe8f3224ca4041908ddb466cb9caecf1.html +++ b/classnlohmann_1_1basic__json_abe8f3224ca4041908ddb466cb9caecf1.html @@ -295,7 +295,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:3805
+
size_type max_size() const noexcept
returns the maximum possible number of elements
Definition: json.hpp:3809
Output (play with this example online):
0
 1
 1
@@ -306,7 +306,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/max_size.cpp -o max_size 
Since
version 1.0
-

Definition at line 3805 of file json.hpp.

+

Definition at line 3809 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_ac160789f17d206a5404981ca0957e303.html b/classnlohmann_1_1basic__json_ac160789f17d206a5404981ca0957e303.html index 9bce6feb2..f6dd4800c 100644 --- a/classnlohmann_1_1basic__json_ac160789f17d206a5404981ca0957e303.html +++ b/classnlohmann_1_1basic__json_ac160789f17d206a5404981ca0957e303.html @@ -289,7 +289,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 354f5799f..2465f6daa 100644 --- a/classnlohmann_1_1basic__json_ac4011bd0781e51afe4994d2b09fd27e9.html +++ b/classnlohmann_1_1basic__json_ac4011bd0781e51afe4994d2b09fd27e9.html @@ -245,7 +245,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 58e405b67..66ab99020 100644 --- a/classnlohmann_1_1basic__json_ac8163abe518595f19dbee68db1caaaf7.html +++ b/classnlohmann_1_1basic__json_ac8163abe518595f19dbee68db1caaaf7.html @@ -296,7 +296,7 @@ false diff --git a/classnlohmann_1_1basic__json_ac82abedf356d252e0589850c3d8b35ba.html b/classnlohmann_1_1basic__json_ac82abedf356d252e0589850c3d8b35ba.html index 432befc5a..5e0814ec6 100644 --- a/classnlohmann_1_1basic__json_ac82abedf356d252e0589850c3d8b35ba.html +++ b/classnlohmann_1_1basic__json_ac82abedf356d252e0589850c3d8b35ba.html @@ -271,7 +271,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 7c07bd5a4..77ef89e5c 100644 --- a/classnlohmann_1_1basic__json_ac943391891fcde0a71a15ce990e0f7f4.html +++ b/classnlohmann_1_1basic__json_ac943391891fcde0a71a15ce990e0f7f4.html @@ -298,7 +298,7 @@ true diff --git a/classnlohmann_1_1basic__json_acd08f9179c8c1e9f2cd7575a724ce27e.html b/classnlohmann_1_1basic__json_acd08f9179c8c1e9f2cd7575a724ce27e.html index bbf72ff97..7398fc50b 100644 --- a/classnlohmann_1_1basic__json_acd08f9179c8c1e9f2cd7575a724ce27e.html +++ b/classnlohmann_1_1basic__json_acd08f9179c8c1e9f2cd7575a724ce27e.html @@ -297,7 +297,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 d40d23a35..37521fd31 100644 --- a/classnlohmann_1_1basic__json_acdf4445333649ec94198f09a62144884.html +++ b/classnlohmann_1_1basic__json_acdf4445333649ec94198f09a62144884.html @@ -272,14 +272,14 @@ 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:5804
-
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3442
+
a mutable random access iterator for the basic_json class
Definition: json.hpp:5808
+
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3446
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
-

Definition at line 3442 of file json.hpp.

+

Definition at line 3446 of file json.hpp.

@@ -289,7 +289,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_ace8338e57fdb11e1955c2a0c2d782069.html b/classnlohmann_1_1basic__json_ace8338e57fdb11e1955c2a0c2d782069.html index 15faf7999..e7e9328eb 100644 --- a/classnlohmann_1_1basic__json_ace8338e57fdb11e1955c2a0c2d782069.html +++ b/classnlohmann_1_1basic__json_ace8338e57fdb11e1955c2a0c2d782069.html @@ -266,7 +266,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 276503714..83635d45f 100644 --- a/classnlohmann_1_1basic__json_ad1f617d29e8923dd40c89153f792b1bc.html +++ b/classnlohmann_1_1basic__json_ad1f617d29e8923dd40c89153f792b1bc.html @@ -301,7 +301,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 2489d4337..1513d8732 100644 --- a/classnlohmann_1_1basic__json_ad2c4513cef5d8db760c4b2d871eea42c.html +++ b/classnlohmann_1_1basic__json_ad2c4513cef5d8db760c4b2d871eea42c.html @@ -256,7 +256,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 296cf9339..26cd931b6 100644 --- a/classnlohmann_1_1basic__json_ad497cbc4f80c8d79662ee6e19bf145dd.html +++ b/classnlohmann_1_1basic__json_ad497cbc4f80c8d79662ee6e19bf145dd.html @@ -320,11 +320,11 @@ template<class InteratorType , typename std::enable_if<
29  std::cout << j_string << '\n';
30 }
a class to store JSON values
Definition: json.hpp:187
-
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3501
-
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3442
-
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3362
+
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3505
+
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3446
+
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3366
namespace for Niels Lohmann
Definition: json.hpp:78
-
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:3111
+
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:3115
Output (play with this example online):
null
 null
 null
@@ -339,7 +339,7 @@ null
 erase(const size_type) – removes the element from an array at the given index
 
Since
version 1.0
-

Definition at line 3212 of file json.hpp.

+

Definition at line 3216 of file json.hpp.

@@ -349,7 +349,7 @@ null diff --git a/classnlohmann_1_1basic__json_ad6734c2b91b1b77aa2b43b65c3619c05.html b/classnlohmann_1_1basic__json_ad6734c2b91b1b77aa2b43b65c3619c05.html index 62fd6940d..756c01a6d 100644 --- a/classnlohmann_1_1basic__json_ad6734c2b91b1b77aa2b43b65c3619c05.html +++ b/classnlohmann_1_1basic__json_ad6734c2b91b1b77aa2b43b65c3619c05.html @@ -306,7 +306,7 @@ null diff --git a/classnlohmann_1_1basic__json_ad8e0c5d04f016d1b3ac7369e5c73bedf.html b/classnlohmann_1_1basic__json_ad8e0c5d04f016d1b3ac7369e5c73bedf.html index ee6fa87d2..a4d5517b0 100644 --- a/classnlohmann_1_1basic__json_ad8e0c5d04f016d1b3ac7369e5c73bedf.html +++ b/classnlohmann_1_1basic__json_ad8e0c5d04f016d1b3ac7369e5c73bedf.html @@ -273,14 +273,14 @@ Illustration from cppreference.com
14  std::cout << *it << '\n';
15 }
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:3476
+
const_iterator cbegin() const
returns a const iterator to the first element
Definition: json.hpp:3480
namespace for Niels Lohmann
Definition: json.hpp:78
-
a const random access iterator for the basic_json class
Definition: json.hpp:5302
+
a const random access iterator for the basic_json class
Definition: json.hpp:5306
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
-

Definition at line 3476 of file json.hpp.

+

Definition at line 3480 of file json.hpp.

@@ -290,7 +290,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_ada8e01109a60088e4db2a670d4903b54.html b/classnlohmann_1_1basic__json_ada8e01109a60088e4db2a670d4903b54.html index 069408d41..cbffc4de5 100644 --- a/classnlohmann_1_1basic__json_ada8e01109a60088e4db2a670d4903b54.html +++ b/classnlohmann_1_1basic__json_ada8e01109a60088e4db2a670d4903b54.html @@ -291,7 +291,7 @@ template<template< typename U, typename V, typename...Args > class Obje
27  }
28 }
a class to store JSON values
Definition: json.hpp:187
-
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2612
+
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2616
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
"third"
 ["first","second","third","fourth"]
@@ -299,7 +299,7 @@ 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
-

Definition at line 2612 of file json.hpp.

+

Definition at line 2616 of file json.hpp.

@@ -309,7 +309,7 @@ out of range diff --git a/classnlohmann_1_1basic__json_adbd4c16c9ac641b2a4736bc2c6787d83.html b/classnlohmann_1_1basic__json_adbd4c16c9ac641b2a4736bc2c6787d83.html index edd5ee3ce..4510a1a5f 100644 --- a/classnlohmann_1_1basic__json_adbd4c16c9ac641b2a4736bc2c6787d83.html +++ b/classnlohmann_1_1basic__json_adbd4c16c9ac641b2a4736bc2c6787d83.html @@ -245,7 +245,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 a8f8f2639..3577aa9de 100644 --- a/classnlohmann_1_1basic__json_ade7bd6e0fe221fec9d3fa9b430f5ce76.html +++ b/classnlohmann_1_1basic__json_ade7bd6e0fe221fec9d3fa9b430f5ce76.html @@ -326,7 +326,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 488341842..2d328a6a7 100644 --- a/classnlohmann_1_1basic__json_adeaef2ab021997a11a826c378c2365e1.html +++ b/classnlohmann_1_1basic__json_adeaef2ab021997a11a826c378c2365e1.html @@ -285,7 +285,7 @@ false diff --git a/classnlohmann_1_1basic__json_adf5dea6fa9d7075ff89ca0796ab47a7e.html b/classnlohmann_1_1basic__json_adf5dea6fa9d7075ff89ca0796ab47a7e.html index 9a7f1bb05..d94f19492 100644 --- a/classnlohmann_1_1basic__json_adf5dea6fa9d7075ff89ca0796ab47a7e.html +++ b/classnlohmann_1_1basic__json_adf5dea6fa9d7075ff89ca0796ab47a7e.html @@ -292,7 +292,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 84e4b7671..7ed12bea3 100644 --- a/classnlohmann_1_1basic__json_ae347859ec88176ef76a0cbe5b4514fcf.html +++ b/classnlohmann_1_1basic__json_ae347859ec88176ef76a0cbe5b4514fcf.html @@ -296,7 +296,7 @@ template<template< typename U, typename V, typename...Args > class Obje 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
-

Definition at line 4537 of file json.hpp.

+

Definition at line 4541 of file json.hpp.

@@ -306,7 +306,7 @@ null != nullptr false diff --git a/classnlohmann_1_1basic__json_ae50f22a1c646b8627e88f1313cceffd4.html b/classnlohmann_1_1basic__json_ae50f22a1c646b8627e88f1313cceffd4.html index 5b751ee46..fe5829506 100644 --- a/classnlohmann_1_1basic__json_ae50f22a1c646b8627e88f1313cceffd4.html +++ b/classnlohmann_1_1basic__json_ae50f22a1c646b8627e88f1313cceffd4.html @@ -278,7 +278,7 @@ template<typename PointerType , typename std::enable_if<
19  std::cout << std::boolalpha << (p5 == nullptr) << '\n';
20 }
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:2961
+
ValueType value(const typename object_t::key_type &key, ValueType default_value) const
access specified object element with default value
Definition: json.hpp:2965
namespace for Niels Lohmann
Definition: json.hpp:78
ValueType get() const
get a value (explicit)
Definition: json.hpp:2440
NumberIntegerType number_integer_t
a type for a number (integer)
Definition: json.hpp:527
@@ -299,7 +299,7 @@ true diff --git a/classnlohmann_1_1basic__json_ae874cfc1746b560c53a03bcf5b7bbeed.html b/classnlohmann_1_1basic__json_ae874cfc1746b560c53a03bcf5b7bbeed.html index 5417cfddb..a6aeaeaf7 100644 --- a/classnlohmann_1_1basic__json_ae874cfc1746b560c53a03bcf5b7bbeed.html +++ b/classnlohmann_1_1basic__json_ae874cfc1746b560c53a03bcf5b7bbeed.html @@ -296,7 +296,7 @@ false diff --git a/classnlohmann_1_1basic__json_ae928414b2805cf6ef56b4e4f8d235416.html b/classnlohmann_1_1basic__json_ae928414b2805cf6ef56b4e4f8d235416.html index 0d6a2ccce..57ee4b280 100644 --- a/classnlohmann_1_1basic__json_ae928414b2805cf6ef56b4e4f8d235416.html +++ b/classnlohmann_1_1basic__json_ae928414b2805cf6ef56b4e4f8d235416.html @@ -245,7 +245,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 a5128f63b..901b5aad3 100644 --- a/classnlohmann_1_1basic__json_ae960d2d6bc7b94fe39cc5e9f106edfa9.html +++ b/classnlohmann_1_1basic__json_ae960d2d6bc7b94fe39cc5e9f106edfa9.html @@ -274,13 +274,13 @@ template<template< typename U, typename V, typename...Args > class Obje
11  std::cout << array.at(2) << '\n';
12 }
a class to store JSON values
Definition: json.hpp:187
-
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2612
+
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2616
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
-

Definition at line 2802 of file json.hpp.

+

Definition at line 2806 of file json.hpp.

@@ -290,7 +290,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html b/classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html index 119d0f4ab..e86dcc22a 100644 --- a/classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html +++ b/classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html @@ -275,7 +275,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 d580b6e61..76c9eee96 100644 --- a/classnlohmann_1_1basic__json_af073eec08d2e68924098aef09e9a10ba.html +++ b/classnlohmann_1_1basic__json_af073eec08d2e68924098aef09e9a10ba.html @@ -273,13 +273,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:4253
+
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:4257
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
-

Definition at line 4253 of file json.hpp.

+

Definition at line 4257 of file json.hpp.

@@ -289,7 +289,7 @@ j2 = [1,2,3,4,5] diff --git a/classnlohmann_1_1basic__json_af0ebd1757acb971a6504b4acabf88584.html b/classnlohmann_1_1basic__json_af0ebd1757acb971a6504b4acabf88584.html index df3fd1310..7a458a1de 100644 --- a/classnlohmann_1_1basic__json_af0ebd1757acb971a6504b4acabf88584.html +++ b/classnlohmann_1_1basic__json_af0ebd1757acb971a6504b4acabf88584.html @@ -273,13 +273,13 @@ Illustration from cppreference.com
15 }
a class to store JSON values
Definition: json.hpp:187
namespace for Niels Lohmann
Definition: json.hpp:78
-
reverse_iterator rbegin()
returns an iterator to the reverse-beginning
Definition: json.hpp:3559
+
reverse_iterator rbegin()
returns an iterator to the reverse-beginning
Definition: json.hpp:3563
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
-

Definition at line 3559 of file json.hpp.

+

Definition at line 3563 of file json.hpp.

@@ -289,7 +289,7 @@ Illustration from cppreference.com diff --git a/classnlohmann_1_1basic__json_af127fb69c580c17821da5f5be57e3585.html b/classnlohmann_1_1basic__json_af127fb69c580c17821da5f5be57e3585.html index 2210414b6..173f01a61 100644 --- a/classnlohmann_1_1basic__json_af127fb69c580c17821da5f5be57e3585.html +++ b/classnlohmann_1_1basic__json_af127fb69c580c17821da5f5be57e3585.html @@ -291,7 +291,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 2c878749b..7b99b99f6 100644 --- a/classnlohmann_1_1basic__json_af1e3f9e079136abca2530c8191c56292.html +++ b/classnlohmann_1_1basic__json_af1e3f9e079136abca2530c8191c56292.html @@ -315,7 +315,7 @@ template<template< typename U, typename V, typename...Args > class Obje
18  std::cout << j_nested_object << '\n';
19  std::cout << j_nested_array << '\n';
20 }
-
basic_json<> json
default JSON class
Definition: json.hpp:7622
+
basic_json<> json
default JSON class
Definition: json.hpp:7631
a class to store JSON values
Definition: json.hpp:187
namespace for Niels Lohmann
Definition: json.hpp:78
Output (play with this example online):
{}
@@ -339,7 +339,7 @@ template<template< typename U, typename V, typename...Args > class Obje
 
 
 
diff --git a/classnlohmann_1_1basic__json_af2730bc8ffa6b28916875c13ee7b83f5.html b/classnlohmann_1_1basic__json_af2730bc8ffa6b28916875c13ee7b83f5.html
index 260902d22..3967121e9 100644
--- a/classnlohmann_1_1basic__json_af2730bc8ffa6b28916875c13ee7b83f5.html
+++ b/classnlohmann_1_1basic__json_af2730bc8ffa6b28916875c13ee7b83f5.html
@@ -313,12 +313,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:7622
+
basic_json<> json
default JSON class
Definition: json.hpp:7631
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:4774
+
static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
deserialize from string
Definition: json.hpp:4778
parse_event_t
JSON callback events.
Definition: json.hpp:754
Output (play with this example online):
{
     "Image": {
@@ -358,7 +358,7 @@ template<template< typename U, typename V, typename...Args > class Obje
 
See also
parse(std::istream&, parser_callback_t) for a version that reads from an input stream
Since
version 1.0
-

Definition at line 4774 of file json.hpp.

+

Definition at line 4778 of file json.hpp.

@@ -368,7 +368,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 2b791dd0f..8caf8399a 100644 --- a/classnlohmann_1_1basic__json_af661bc209bf22097e2f76607a11b56bf.html +++ b/classnlohmann_1_1basic__json_af661bc209bf22097e2f76607a11b56bf.html @@ -296,7 +296,7 @@ false diff --git a/classnlohmann_1_1basic__json_af6b6050ccd906dddf7c9f47fe3ad62a5.html b/classnlohmann_1_1basic__json_af6b6050ccd906dddf7c9f47fe3ad62a5.html index b0a0e4a7c..6940ec3b1 100644 --- a/classnlohmann_1_1basic__json_af6b6050ccd906dddf7c9f47fe3ad62a5.html +++ b/classnlohmann_1_1basic__json_af6b6050ccd906dddf7c9f47fe3ad62a5.html @@ -285,14 +285,14 @@ template<template< typename U, typename V, typename...Args > class Obje
21  }
22 }
a class to store JSON values
Definition: json.hpp:187
-
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2612
+
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2616
namespace for Niels Lohmann
Definition: json.hpp:78
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
-

Definition at line 2646 of file json.hpp.

+

Definition at line 2650 of file json.hpp.

@@ -302,7 +302,7 @@ out of range diff --git a/classnlohmann_1_1basic__json_af709c079de0ac3507143ea2c60699bd0.html b/classnlohmann_1_1basic__json_af709c079de0ac3507143ea2c60699bd0.html index 478f31870..ff5aad451 100644 --- a/classnlohmann_1_1basic__json_af709c079de0ac3507143ea2c60699bd0.html +++ b/classnlohmann_1_1basic__json_af709c079de0ac3507143ea2c60699bd0.html @@ -229,7 +229,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
template<template< typename U, typename V, typename...Args > class ObjectType = std::map, template< typename U, typename...Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = int64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator>
-template<typename ValueType , typename std::enable_if< not std::is_pointer< ValueType >::value , int >::type = 0>
+template<typename ValueType , typename std::enable_if< not std::is_pointer< ValueType >::value and not std::is_same< ValueType, typename string_t::value_type >::value and not std::is_same< ValueType, std::initializer_list< typename string_t::value_type >>::value , int >::type = 0> diff --git a/functions.html b/functions.html index 415896482..a23a7ae2a 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 cf32864a5..c7cc32127 100644 --- a/functions_b.html +++ b/functions_b.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_c.html b/functions_c.html index 2d9e94cf6..e27169e24 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 785ce6278..93fbeac2a 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 1436f8b26..5c0c39788 100644 --- a/functions_e.html +++ b/functions_e.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_enum.html b/functions_enum.html index 4827a87d3..cfb52f4e7 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 0fd66769f..a6645e5e5 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 404020e8e..51e10ff78 100644 --- a/functions_func.html +++ b/functions_func.html @@ -415,7 +415,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_g.html b/functions_g.html index 525be7ef2..9f6f2f202 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 570f5243f..97385c2e0 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 6cc7cc055..422a428a7 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 5af153386..ad472c77d 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 006cb1051..c244b3383 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 29a8563d3..bbd3fed3c 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 c7ccdc41d..bd4178370 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 0c2b0926f..21269644f 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 3ce289b17..3fe2b3a02 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 787f29bca..20e2314b3 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 f0677999a..17f6b801f 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 ce5a059a2..41574e07d 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 205da5919..8ab32f085 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 6c013db97..751b3a6fd 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 88bd23ff5..5ecf70cf0 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 0ebd88bfe..4d7ac0348 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 a242438e8..f2d5b986a 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/index.html b/index.html index 5297d9552..7cdc81496 100644 --- a/index.html +++ b/index.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/json_8hpp_source.html b/json_8hpp_source.html index cf304897f..c845461cf 100644 --- a/json_8hpp_source.html +++ b/json_8hpp_source.html @@ -1085,2292 +1085,2290 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
2542  return get_impl_ptr(static_cast<const PointerType>(nullptr));
2543  }
2544 
-
2571  template<typename ValueType, typename
-
2572  std::enable_if<
-
2573  not std::is_pointer<ValueType>::value
-
2574  , int>::type = 0>
-
2575  operator ValueType() const
-
2576  {
-
2577  // delegate the call to get<>() const
-
2578  return get<ValueType>();
-
2579  }
-
2580 
-
2582 
-
2583 
-
2585  // element access //
-
2587 
-
2590 
- -
2613  {
-
2614  // at only works for arrays
-
2615  if (is_array())
-
2616  {
-
2617  return m_value.array->at(idx);
-
2618  }
-
2619  else
+
2573  template<typename ValueType, typename
+
2574  std::enable_if<
+
2575  not std::is_pointer<ValueType>::value
+
2576  and not std::is_same<ValueType, typename string_t::value_type>::value
+
2577  and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
+
2578  , int>::type = 0>
+
2579  operator ValueType() const
+
2580  {
+
2581  // delegate the call to get<>() const
+
2582  return get<ValueType>();
+
2583  }
+
2584 
+
2586 
+
2587 
+
2589  // element access //
+
2591 
+
2594 
+ +
2617  {
+
2618  // at only works for arrays
+
2619  if (is_array())
2620  {
-
2621  throw std::domain_error("cannot use at() with " + type_name());
+
2621  return m_value.array->at(idx);
2622  }
-
2623  }
-
2624 
- -
2647  {
-
2648  // at only works for arrays
-
2649  if (is_array())
-
2650  {
-
2651  return m_value.array->at(idx);
-
2652  }
-
2653  else
+
2623  else
+
2624  {
+
2625  throw std::domain_error("cannot use at() with " + type_name());
+
2626  }
+
2627  }
+
2628 
+ +
2651  {
+
2652  // at only works for arrays
+
2653  if (is_array())
2654  {
-
2655  throw std::domain_error("cannot use at() with " + type_name());
+
2655  return m_value.array->at(idx);
2656  }
-
2657  }
-
2658 
-
2684  reference at(const typename object_t::key_type& key)
-
2685  {
-
2686  // at only works for objects
-
2687  if (is_object())
-
2688  {
-
2689  return m_value.object->at(key);
-
2690  }
-
2691  else
+
2657  else
+
2658  {
+
2659  throw std::domain_error("cannot use at() with " + type_name());
+
2660  }
+
2661  }
+
2662 
+
2688  reference at(const typename object_t::key_type& key)
+
2689  {
+
2690  // at only works for objects
+
2691  if (is_object())
2692  {
-
2693  throw std::domain_error("cannot use at() with " + type_name());
+
2693  return m_value.object->at(key);
2694  }
-
2695  }
-
2696 
-
2722  const_reference at(const typename object_t::key_type& key) const
-
2723  {
-
2724  // at only works for objects
-
2725  if (is_object())
-
2726  {
-
2727  return m_value.object->at(key);
-
2728  }
-
2729  else
+
2695  else
+
2696  {
+
2697  throw std::domain_error("cannot use at() with " + type_name());
+
2698  }
+
2699  }
+
2700 
+
2726  const_reference at(const typename object_t::key_type& key) const
+
2727  {
+
2728  // at only works for objects
+
2729  if (is_object())
2730  {
-
2731  throw std::domain_error("cannot use at() with " + type_name());
+
2731  return m_value.object->at(key);
2732  }
-
2733  }
-
2734 
- -
2760  {
-
2761  // implicitly convert null to object
-
2762  if (is_null())
-
2763  {
-
2764  m_type = value_t::array;
-
2765  m_value.array = create<array_t>();
-
2766  }
-
2767 
-
2768  // [] only works for arrays
-
2769  if (is_array())
-
2770  {
-
2771  for (size_t i = m_value.array->size(); i <= idx; ++i)
-
2772  {
-
2773  m_value.array->push_back(basic_json());
-
2774  }
-
2775 
-
2776  return m_value.array->operator[](idx);
-
2777  }
-
2778  else
-
2779  {
-
2780  throw std::domain_error("cannot use operator[] with " + type_name());
+
2733  else
+
2734  {
+
2735  throw std::domain_error("cannot use at() with " + type_name());
+
2736  }
+
2737  }
+
2738 
+ +
2764  {
+
2765  // implicitly convert null to object
+
2766  if (is_null())
+
2767  {
+
2768  m_type = value_t::array;
+
2769  m_value.array = create<array_t>();
+
2770  }
+
2771 
+
2772  // [] only works for arrays
+
2773  if (is_array())
+
2774  {
+
2775  for (size_t i = m_value.array->size(); i <= idx; ++i)
+
2776  {
+
2777  m_value.array->push_back(basic_json());
+
2778  }
+
2779 
+
2780  return m_value.array->operator[](idx);
2781  }
-
2782  }
-
2783 
- -
2803  {
-
2804  // at only works for arrays
-
2805  if (is_array())
-
2806  {
-
2807  return m_value.array->operator[](idx);
-
2808  }
-
2809  else
+
2782  else
+
2783  {
+
2784  throw std::domain_error("cannot use operator[] with " + type_name());
+
2785  }
+
2786  }
+
2787 
+ +
2807  {
+
2808  // at only works for arrays
+
2809  if (is_array())
2810  {
-
2811  throw std::domain_error("cannot use operator[] with " + type_name());
+
2811  return m_value.array->operator[](idx);
2812  }
-
2813  }
-
2814 
-
2841  reference operator[](const typename object_t::key_type& key)
-
2842  {
-
2843  // implicitly convert null to object
-
2844  if (is_null())
-
2845  {
-
2846  m_type = value_t::object;
-
2847  m_value.object = create<object_t>();
-
2848  }
-
2849 
-
2850  // [] only works for objects
-
2851  if (is_object())
-
2852  {
-
2853  return m_value.object->operator[](key);
-
2854  }
-
2855  else
+
2813  else
+
2814  {
+
2815  throw std::domain_error("cannot use operator[] with " + type_name());
+
2816  }
+
2817  }
+
2818 
+
2845  reference operator[](const typename object_t::key_type& key)
+
2846  {
+
2847  // implicitly convert null to object
+
2848  if (is_null())
+
2849  {
+
2850  m_type = value_t::object;
+
2851  m_value.object = create<object_t>();
+
2852  }
+
2853 
+
2854  // [] only works for objects
+
2855  if (is_object())
2856  {
-
2857  throw std::domain_error("cannot use operator[] with " + type_name());
+
2857  return m_value.object->operator[](key);
2858  }
-
2859  }
-
2860 
-
2889  template<typename T, std::size_t n>
-
2890  reference operator[](const T (&key)[n])
-
2891  {
-
2892  // implicitly convert null to object
-
2893  if (is_null())
-
2894  {
-
2895  m_type = value_t::object;
-
2896  m_value = value_t::object;
-
2897  }
-
2898 
-
2899  // at only works for objects
-
2900  if (is_object())
-
2901  {
-
2902  return m_value.object->operator[](key);
-
2903  }
-
2904  else
+
2859  else
+
2860  {
+
2861  throw std::domain_error("cannot use operator[] with " + type_name());
+
2862  }
+
2863  }
+
2864 
+
2893  template<typename T, std::size_t n>
+
2894  reference operator[](const T (&key)[n])
+
2895  {
+
2896  // implicitly convert null to object
+
2897  if (is_null())
+
2898  {
+
2899  m_type = value_t::object;
+
2900  m_value = value_t::object;
+
2901  }
+
2902 
+
2903  // at only works for objects
+
2904  if (is_object())
2905  {
-
2906  throw std::domain_error("cannot use operator[] with " + type_name());
+
2906  return m_value.object->operator[](key);
2907  }
-
2908  }
-
2909 
-
2957  template <class ValueType, typename
-
2958  std::enable_if<
-
2959  std::is_convertible<basic_json_t, ValueType>::value
-
2960  , int>::type = 0>
-
2961  ValueType value(const typename object_t::key_type& key, ValueType default_value) const
-
2962  {
-
2963  // at only works for objects
-
2964  if (is_object())
-
2965  {
-
2966  // if key is found, return value and given default value otherwise
-
2967  const auto it = find(key);
-
2968  if (it != end())
-
2969  {
-
2970  return *it;
-
2971  }
-
2972  else
+
2908  else
+
2909  {
+
2910  throw std::domain_error("cannot use operator[] with " + type_name());
+
2911  }
+
2912  }
+
2913 
+
2961  template <class ValueType, typename
+
2962  std::enable_if<
+
2963  std::is_convertible<basic_json_t, ValueType>::value
+
2964  , int>::type = 0>
+
2965  ValueType value(const typename object_t::key_type& key, ValueType default_value) const
+
2966  {
+
2967  // at only works for objects
+
2968  if (is_object())
+
2969  {
+
2970  // if key is found, return value and given default value otherwise
+
2971  const auto it = find(key);
+
2972  if (it != end())
2973  {
-
2974  return default_value;
+
2974  return *it;
2975  }
-
2976  }
-
2977  else
-
2978  {
-
2979  throw std::domain_error("cannot use value() with " + type_name());
+
2976  else
+
2977  {
+
2978  return default_value;
+
2979  }
2980  }
-
2981  }
-
2982 
-
2987  string_t value(const typename object_t::key_type& key, const char* default_value) const
-
2988  {
-
2989  return value(key, string_t(default_value));
-
2990  }
-
2991 
- -
3013  {
-
3014  return *begin();
-
3015  }
-
3016 
- -
3021  {
-
3022  return *cbegin();
-
3023  }
-
3024 
- -
3047  {
-
3048  auto tmp = end();
-
3049  --tmp;
-
3050  return *tmp;
-
3051  }
-
3052 
- -
3057  {
-
3058  auto tmp = cend();
-
3059  --tmp;
-
3060  return *tmp;
-
3061  }
-
3062 
-
3105  template <class InteratorType, typename
-
3106  std::enable_if<
-
3107  std::is_same<InteratorType, typename basic_json_t::iterator>::value or
-
3108  std::is_same<InteratorType, typename basic_json_t::const_iterator>::value
-
3109  , int>::type
-
3110  = 0>
-
3111  InteratorType erase(InteratorType pos)
-
3112  {
-
3113  // make sure iterator fits the current value
-
3114  if (this != pos.m_object)
-
3115  {
-
3116  throw std::domain_error("iterator does not fit current value");
-
3117  }
-
3118 
-
3119  InteratorType result = end();
-
3120 
-
3121  switch (m_type)
-
3122  {
-
3123  case value_t::boolean:
-
3124  case value_t::number_float:
- -
3126  case value_t::string:
-
3127  {
-
3128  if (not pos.m_it.primitive_iterator.is_begin())
-
3129  {
-
3130  throw std::out_of_range("iterator out of range");
-
3131  }
-
3132 
-
3133  if (is_string())
-
3134  {
-
3135  delete m_value.string;
-
3136  m_value.string = nullptr;
-
3137  }
-
3138 
-
3139  m_type = value_t::null;
-
3140  break;
-
3141  }
+
2981  else
+
2982  {
+
2983  throw std::domain_error("cannot use value() with " + type_name());
+
2984  }
+
2985  }
+
2986 
+
2991  string_t value(const typename object_t::key_type& key, const char* default_value) const
+
2992  {
+
2993  return value(key, string_t(default_value));
+
2994  }
+
2995 
+ +
3017  {
+
3018  return *begin();
+
3019  }
+
3020 
+ +
3025  {
+
3026  return *cbegin();
+
3027  }
+
3028 
+ +
3051  {
+
3052  auto tmp = end();
+
3053  --tmp;
+
3054  return *tmp;
+
3055  }
+
3056 
+ +
3061  {
+
3062  auto tmp = cend();
+
3063  --tmp;
+
3064  return *tmp;
+
3065  }
+
3066 
+
3109  template <class InteratorType, typename
+
3110  std::enable_if<
+
3111  std::is_same<InteratorType, typename basic_json_t::iterator>::value or
+
3112  std::is_same<InteratorType, typename basic_json_t::const_iterator>::value
+
3113  , int>::type
+
3114  = 0>
+
3115  InteratorType erase(InteratorType pos)
+
3116  {
+
3117  // make sure iterator fits the current value
+
3118  if (this != pos.m_object)
+
3119  {
+
3120  throw std::domain_error("iterator does not fit current value");
+
3121  }
+
3122 
+
3123  InteratorType result = end();
+
3124 
+
3125  switch (m_type)
+
3126  {
+
3127  case value_t::boolean:
+
3128  case value_t::number_float:
+ +
3130  case value_t::string:
+
3131  {
+
3132  if (not pos.m_it.primitive_iterator.is_begin())
+
3133  {
+
3134  throw std::out_of_range("iterator out of range");
+
3135  }
+
3136 
+
3137  if (is_string())
+
3138  {
+
3139  delete m_value.string;
+
3140  m_value.string = nullptr;
+
3141  }
3142 
-
3143  case value_t::object:
-
3144  {
-
3145  result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator);
-
3146  break;
-
3147  }
-
3148 
-
3149  case value_t::array:
-
3150  {
-
3151  result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator);
-
3152  break;
-
3153  }
-
3154 
-
3155  default:
-
3156  {
-
3157  throw std::domain_error("cannot use erase() with " + type_name());
-
3158  }
-
3159  }
-
3160 
-
3161  return result;
-
3162  }
-
3163 
-
3206  template <class InteratorType, typename
-
3207  std::enable_if<
-
3208  std::is_same<InteratorType, typename basic_json_t::iterator>::value or
-
3209  std::is_same<InteratorType, typename basic_json_t::const_iterator>::value
-
3210  , int>::type
-
3211  = 0>
-
3212  InteratorType erase(InteratorType first, InteratorType last)
-
3213  {
-
3214  // make sure iterator fits the current value
-
3215  if (this != first.m_object or this != last.m_object)
-
3216  {
-
3217  throw std::domain_error("iterators do not fit current value");
-
3218  }
-
3219 
-
3220  InteratorType result = end();
-
3221 
-
3222  switch (m_type)
-
3223  {
-
3224  case value_t::boolean:
-
3225  case value_t::number_float:
- -
3227  case value_t::string:
-
3228  {
-
3229  if (not first.m_it.primitive_iterator.is_begin() or not last.m_it.primitive_iterator.is_end())
-
3230  {
-
3231  throw std::out_of_range("iterators out of range");
-
3232  }
-
3233 
-
3234  if (is_string())
-
3235  {
-
3236  delete m_value.string;
-
3237  m_value.string = nullptr;
-
3238  }
-
3239 
-
3240  m_type = value_t::null;
-
3241  break;
-
3242  }
+
3143  m_type = value_t::null;
+
3144  break;
+
3145  }
+
3146 
+
3147  case value_t::object:
+
3148  {
+
3149  result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator);
+
3150  break;
+
3151  }
+
3152 
+
3153  case value_t::array:
+
3154  {
+
3155  result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator);
+
3156  break;
+
3157  }
+
3158 
+
3159  default:
+
3160  {
+
3161  throw std::domain_error("cannot use erase() with " + type_name());
+
3162  }
+
3163  }
+
3164 
+
3165  return result;
+
3166  }
+
3167 
+
3210  template <class InteratorType, typename
+
3211  std::enable_if<
+
3212  std::is_same<InteratorType, typename basic_json_t::iterator>::value or
+
3213  std::is_same<InteratorType, typename basic_json_t::const_iterator>::value
+
3214  , int>::type
+
3215  = 0>
+
3216  InteratorType erase(InteratorType first, InteratorType last)
+
3217  {
+
3218  // make sure iterator fits the current value
+
3219  if (this != first.m_object or this != last.m_object)
+
3220  {
+
3221  throw std::domain_error("iterators do not fit current value");
+
3222  }
+
3223 
+
3224  InteratorType result = end();
+
3225 
+
3226  switch (m_type)
+
3227  {
+
3228  case value_t::boolean:
+
3229  case value_t::number_float:
+ +
3231  case value_t::string:
+
3232  {
+
3233  if (not first.m_it.primitive_iterator.is_begin() or not last.m_it.primitive_iterator.is_end())
+
3234  {
+
3235  throw std::out_of_range("iterators out of range");
+
3236  }
+
3237 
+
3238  if (is_string())
+
3239  {
+
3240  delete m_value.string;
+
3241  m_value.string = nullptr;
+
3242  }
3243 
-
3244  case value_t::object:
-
3245  {
-
3246  result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator,
-
3247  last.m_it.object_iterator);
-
3248  break;
-
3249  }
-
3250 
-
3251  case value_t::array:
-
3252  {
-
3253  result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator,
-
3254  last.m_it.array_iterator);
-
3255  break;
-
3256  }
-
3257 
-
3258  default:
-
3259  {
-
3260  throw std::domain_error("cannot use erase with " + type_name());
-
3261  }
-
3262  }
-
3263 
-
3264  return result;
-
3265  }
-
3266 
-
3292  size_type erase(const typename object_t::key_type& key)
-
3293  {
-
3294  // this erase only works for objects
-
3295  if (is_object())
-
3296  {
-
3297  return m_value.object->erase(key);
-
3298  }
-
3299  else
+
3244  m_type = value_t::null;
+
3245  break;
+
3246  }
+
3247 
+
3248  case value_t::object:
+
3249  {
+
3250  result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator,
+
3251  last.m_it.object_iterator);
+
3252  break;
+
3253  }
+
3254 
+
3255  case value_t::array:
+
3256  {
+
3257  result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator,
+
3258  last.m_it.array_iterator);
+
3259  break;
+
3260  }
+
3261 
+
3262  default:
+
3263  {
+
3264  throw std::domain_error("cannot use erase with " + type_name());
+
3265  }
+
3266  }
+
3267 
+
3268  return result;
+
3269  }
+
3270 
+
3296  size_type erase(const typename object_t::key_type& key)
+
3297  {
+
3298  // this erase only works for objects
+
3299  if (is_object())
3300  {
-
3301  throw std::domain_error("cannot use erase() with " + type_name());
+
3301  return m_value.object->erase(key);
3302  }
-
3303  }
-
3304 
-
3327  void erase(const size_type idx)
-
3328  {
-
3329  // this erase only works for arrays
-
3330  if (is_array())
-
3331  {
-
3332  if (idx >= size())
-
3333  {
-
3334  throw std::out_of_range("index out of range");
-
3335  }
-
3336 
-
3337  m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx));
-
3338  }
-
3339  else
-
3340  {
-
3341  throw std::domain_error("cannot use erase() with " + type_name());
+
3303  else
+
3304  {
+
3305  throw std::domain_error("cannot use erase() with " + type_name());
+
3306  }
+
3307  }
+
3308 
+
3331  void erase(const size_type idx)
+
3332  {
+
3333  // this erase only works for arrays
+
3334  if (is_array())
+
3335  {
+
3336  if (idx >= size())
+
3337  {
+
3338  throw std::out_of_range("index out of range");
+
3339  }
+
3340 
+
3341  m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx));
3342  }
-
3343  }
-
3344 
-
3362  iterator find(typename object_t::key_type key)
-
3363  {
-
3364  auto result = end();
-
3365 
-
3366  if (is_object())
-
3367  {
-
3368  result.m_it.object_iterator = m_value.object->find(key);
-
3369  }
-
3370 
-
3371  return result;
-
3372  }
-
3373 
-
3378  const_iterator find(typename object_t::key_type key) const
-
3379  {
-
3380  auto result = cend();
-
3381 
-
3382  if (is_object())
-
3383  {
-
3384  result.m_it.object_iterator = m_value.object->find(key);
-
3385  }
-
3386 
-
3387  return result;
-
3388  }
-
3389 
-
3408  size_type count(typename object_t::key_type key) const
-
3409  {
-
3410  // return 0 for all nonobject types
-
3411  return is_object() ? m_value.object->count(key) : 0;
-
3412  }
-
3413 
-
3415 
-
3416 
-
3418  // iterators //
-
3420 
-
3423 
- -
3443  {
-
3444  iterator result(this);
-
3445  result.set_begin();
-
3446  return result;
-
3447  }
-
3448 
- -
3453  {
-
3454  return cbegin();
-
3455  }
-
3456 
- -
3477  {
-
3478  const_iterator result(this);
-
3479  result.set_begin();
-
3480  return result;
-
3481  }
-
3482 
- -
3502  {
-
3503  iterator result(this);
-
3504  result.set_end();
-
3505  return result;
-
3506  }
-
3507 
- -
3512  {
-
3513  return cend();
-
3514  }
-
3515 
- -
3536  {
-
3537  const_iterator result(this);
-
3538  result.set_end();
-
3539  return result;
-
3540  }
-
3541 
- -
3560  {
-
3561  return reverse_iterator(end());
-
3562  }
-
3563 
- -
3568  {
-
3569  return crbegin();
-
3570  }
-
3571 
- -
3591  {
-
3592  return reverse_iterator(begin());
-
3593  }
-
3594 
- -
3599  {
-
3600  return crend();
-
3601  }
-
3602 
- -
3622  {
-
3623  return const_reverse_iterator(cend());
-
3624  }
-
3625 
- -
3645  {
-
3646  return const_reverse_iterator(cbegin());
-
3647  }
-
3648 
-
3650 
-
3651 
-
3653  // capacity //
-
3655 
-
3658 
-
3688  bool empty() const noexcept
-
3689  {
-
3690  switch (m_type)
-
3691  {
-
3692  case value_t::null:
-
3693  {
-
3694  // null values are empty
-
3695  return true;
-
3696  }
-
3697 
-
3698  case value_t::array:
-
3699  {
-
3700  return m_value.array->empty();
-
3701  }
-
3702 
-
3703  case value_t::object:
-
3704  {
-
3705  return m_value.object->empty();
-
3706  }
-
3707 
-
3708  default:
-
3709  {
-
3710  // all other types are nonempty
-
3711  return false;
-
3712  }
-
3713  }
-
3714  }
-
3715 
-
3745  size_type size() const noexcept
-
3746  {
-
3747  switch (m_type)
-
3748  {
-
3749  case value_t::null:
-
3750  {
-
3751  // null values are empty
-
3752  return 0;
-
3753  }
-
3754 
-
3755  case value_t::array:
-
3756  {
-
3757  return m_value.array->size();
-
3758  }
-
3759 
-
3760  case value_t::object:
-
3761  {
-
3762  return m_value.object->size();
-
3763  }
-
3764 
-
3765  default:
-
3766  {
-
3767  // all other types have size 1
-
3768  return 1;
-
3769  }
-
3770  }
-
3771  }
-
3772 
-
3805  size_type max_size() const noexcept
-
3806  {
-
3807  switch (m_type)
-
3808  {
-
3809  case value_t::array:
-
3810  {
-
3811  return m_value.array->max_size();
-
3812  }
-
3813 
-
3814  case value_t::object:
-
3815  {
-
3816  return m_value.object->max_size();
-
3817  }
-
3818 
-
3819  default:
-
3820  {
-
3821  // all other types have max_size() == size()
-
3822  return size();
-
3823  }
-
3824  }
-
3825  }
-
3826 
-
3828 
-
3829 
-
3831  // modifiers //
-
3833 
-
3836 
-
3862  void clear() noexcept
-
3863  {
-
3864  switch (m_type)
-
3865  {
- -
3867  {
-
3868  m_value.number_integer = 0;
-
3869  break;
-
3870  }
-
3871 
-
3872  case value_t::number_float:
-
3873  {
-
3874  m_value.number_float = 0.0;
-
3875  break;
-
3876  }
-
3877 
-
3878  case value_t::boolean:
-
3879  {
-
3880  m_value.boolean = false;
-
3881  break;
-
3882  }
-
3883 
-
3884  case value_t::string:
-
3885  {
-
3886  m_value.string->clear();
-
3887  break;
-
3888  }
-
3889 
-
3890  case value_t::array:
-
3891  {
-
3892  m_value.array->clear();
-
3893  break;
-
3894  }
-
3895 
-
3896  case value_t::object:
-
3897  {
-
3898  m_value.object->clear();
-
3899  break;
-
3900  }
-
3901 
-
3902  default:
-
3903  {
-
3904  break;
-
3905  }
-
3906  }
-
3907  }
-
3908 
-
3928  void push_back(basic_json&& val)
-
3929  {
-
3930  // push_back only works for null objects or arrays
-
3931  if (not(is_null() or is_array()))
-
3932  {
-
3933  throw std::domain_error("cannot use push_back() with " + type_name());
-
3934  }
-
3935 
-
3936  // transform null object into an array
-
3937  if (is_null())
-
3938  {
-
3939  m_type = value_t::array;
-
3940  m_value = value_t::array;
-
3941  }
-
3942 
-
3943  // add element to array (move semantics)
-
3944  m_value.array->push_back(std::move(val));
-
3945  // invalidate object
-
3946  val.m_type = value_t::null;
-
3947  }
-
3948 
-
3953  reference operator+=(basic_json&& val)
-
3954  {
-
3955  push_back(std::move(val));
-
3956  return *this;
-
3957  }
-
3958 
-
3963  void push_back(const basic_json& val)
-
3964  {
-
3965  // push_back only works for null objects or arrays
-
3966  if (not(is_null() or is_array()))
-
3967  {
-
3968  throw std::domain_error("cannot use push_back() with " + type_name());
-
3969  }
-
3970 
-
3971  // transform null object into an array
-
3972  if (is_null())
-
3973  {
-
3974  m_type = value_t::array;
-
3975  m_value = value_t::array;
-
3976  }
-
3977 
-
3978  // add element to array
-
3979  m_value.array->push_back(val);
-
3980  }
+
3343  else
+
3344  {
+
3345  throw std::domain_error("cannot use erase() with " + type_name());
+
3346  }
+
3347  }
+
3348 
+
3366  iterator find(typename object_t::key_type key)
+
3367  {
+
3368  auto result = end();
+
3369 
+
3370  if (is_object())
+
3371  {
+
3372  result.m_it.object_iterator = m_value.object->find(key);
+
3373  }
+
3374 
+
3375  return result;
+
3376  }
+
3377 
+
3382  const_iterator find(typename object_t::key_type key) const
+
3383  {
+
3384  auto result = cend();
+
3385 
+
3386  if (is_object())
+
3387  {
+
3388  result.m_it.object_iterator = m_value.object->find(key);
+
3389  }
+
3390 
+
3391  return result;
+
3392  }
+
3393 
+
3412  size_type count(typename object_t::key_type key) const
+
3413  {
+
3414  // return 0 for all nonobject types
+
3415  return is_object() ? m_value.object->count(key) : 0;
+
3416  }
+
3417 
+
3419 
+
3420 
+
3422  // iterators //
+
3424 
+
3427 
+ +
3447  {
+
3448  iterator result(this);
+
3449  result.set_begin();
+
3450  return result;
+
3451  }
+
3452 
+ +
3457  {
+
3458  return cbegin();
+
3459  }
+
3460 
+ +
3481  {
+
3482  const_iterator result(this);
+
3483  result.set_begin();
+
3484  return result;
+
3485  }
+
3486 
+ +
3506  {
+
3507  iterator result(this);
+
3508  result.set_end();
+
3509  return result;
+
3510  }
+
3511 
+ +
3516  {
+
3517  return cend();
+
3518  }
+
3519 
+ +
3540  {
+
3541  const_iterator result(this);
+
3542  result.set_end();
+
3543  return result;
+
3544  }
+
3545 
+ +
3564  {
+
3565  return reverse_iterator(end());
+
3566  }
+
3567 
+ +
3572  {
+
3573  return crbegin();
+
3574  }
+
3575 
+ +
3595  {
+
3596  return reverse_iterator(begin());
+
3597  }
+
3598 
+ +
3603  {
+
3604  return crend();
+
3605  }
+
3606 
+ +
3626  {
+
3627  return const_reverse_iterator(cend());
+
3628  }
+
3629 
+ +
3649  {
+
3650  return const_reverse_iterator(cbegin());
+
3651  }
+
3652 
+
3654 
+
3655 
+
3657  // capacity //
+
3659 
+
3662 
+
3692  bool empty() const noexcept
+
3693  {
+
3694  switch (m_type)
+
3695  {
+
3696  case value_t::null:
+
3697  {
+
3698  // null values are empty
+
3699  return true;
+
3700  }
+
3701 
+
3702  case value_t::array:
+
3703  {
+
3704  return m_value.array->empty();
+
3705  }
+
3706 
+
3707  case value_t::object:
+
3708  {
+
3709  return m_value.object->empty();
+
3710  }
+
3711 
+
3712  default:
+
3713  {
+
3714  // all other types are nonempty
+
3715  return false;
+
3716  }
+
3717  }
+
3718  }
+
3719 
+
3749  size_type size() const noexcept
+
3750  {
+
3751  switch (m_type)
+
3752  {
+
3753  case value_t::null:
+
3754  {
+
3755  // null values are empty
+
3756  return 0;
+
3757  }
+
3758 
+
3759  case value_t::array:
+
3760  {
+
3761  return m_value.array->size();
+
3762  }
+
3763 
+
3764  case value_t::object:
+
3765  {
+
3766  return m_value.object->size();
+
3767  }
+
3768 
+
3769  default:
+
3770  {
+
3771  // all other types have size 1
+
3772  return 1;
+
3773  }
+
3774  }
+
3775  }
+
3776 
+
3809  size_type max_size() const noexcept
+
3810  {
+
3811  switch (m_type)
+
3812  {
+
3813  case value_t::array:
+
3814  {
+
3815  return m_value.array->max_size();
+
3816  }
+
3817 
+
3818  case value_t::object:
+
3819  {
+
3820  return m_value.object->max_size();
+
3821  }
+
3822 
+
3823  default:
+
3824  {
+
3825  // all other types have max_size() == size()
+
3826  return size();
+
3827  }
+
3828  }
+
3829  }
+
3830 
+
3832 
+
3833 
+
3835  // modifiers //
+
3837 
+
3840 
+
3866  void clear() noexcept
+
3867  {
+
3868  switch (m_type)
+
3869  {
+ +
3871  {
+
3872  m_value.number_integer = 0;
+
3873  break;
+
3874  }
+
3875 
+
3876  case value_t::number_float:
+
3877  {
+
3878  m_value.number_float = 0.0;
+
3879  break;
+
3880  }
+
3881 
+
3882  case value_t::boolean:
+
3883  {
+
3884  m_value.boolean = false;
+
3885  break;
+
3886  }
+
3887 
+
3888  case value_t::string:
+
3889  {
+
3890  m_value.string->clear();
+
3891  break;
+
3892  }
+
3893 
+
3894  case value_t::array:
+
3895  {
+
3896  m_value.array->clear();
+
3897  break;
+
3898  }
+
3899 
+
3900  case value_t::object:
+
3901  {
+
3902  m_value.object->clear();
+
3903  break;
+
3904  }
+
3905 
+
3906  default:
+
3907  {
+
3908  break;
+
3909  }
+
3910  }
+
3911  }
+
3912 
+
3932  void push_back(basic_json&& val)
+
3933  {
+
3934  // push_back only works for null objects or arrays
+
3935  if (not(is_null() or is_array()))
+
3936  {
+
3937  throw std::domain_error("cannot use push_back() with " + type_name());
+
3938  }
+
3939 
+
3940  // transform null object into an array
+
3941  if (is_null())
+
3942  {
+
3943  m_type = value_t::array;
+
3944  m_value = value_t::array;
+
3945  }
+
3946 
+
3947  // add element to array (move semantics)
+
3948  m_value.array->push_back(std::move(val));
+
3949  // invalidate object
+
3950  val.m_type = value_t::null;
+
3951  }
+
3952 
+
3957  reference operator+=(basic_json&& val)
+
3958  {
+
3959  push_back(std::move(val));
+
3960  return *this;
+
3961  }
+
3962 
+
3967  void push_back(const basic_json& val)
+
3968  {
+
3969  // push_back only works for null objects or arrays
+
3970  if (not(is_null() or is_array()))
+
3971  {
+
3972  throw std::domain_error("cannot use push_back() with " + type_name());
+
3973  }
+
3974 
+
3975  // transform null object into an array
+
3976  if (is_null())
+
3977  {
+
3978  m_type = value_t::array;
+
3979  m_value = value_t::array;
+
3980  }
3981 
-
3986  reference operator+=(const basic_json& val)
-
3987  {
-
3988  push_back(val);
-
3989  return *this;
-
3990  }
-
3991 
-
4012  void push_back(const typename object_t::value_type& val)
-
4013  {
-
4014  // push_back only works for null objects or objects
-
4015  if (not(is_null() or is_object()))
-
4016  {
-
4017  throw std::domain_error("cannot use push_back() with " + type_name());
-
4018  }
-
4019 
-
4020  // transform null object into an object
-
4021  if (is_null())
-
4022  {
-
4023  m_type = value_t::object;
-
4024  m_value = value_t::object;
-
4025  }
-
4026 
-
4027  // add element to array
-
4028  m_value.object->insert(val);
-
4029  }
+
3982  // add element to array
+
3983  m_value.array->push_back(val);
+
3984  }
+
3985 
+
3990  reference operator+=(const basic_json& val)
+
3991  {
+
3992  push_back(val);
+
3993  return *this;
+
3994  }
+
3995 
+
4016  void push_back(const typename object_t::value_type& val)
+
4017  {
+
4018  // push_back only works for null objects or objects
+
4019  if (not(is_null() or is_object()))
+
4020  {
+
4021  throw std::domain_error("cannot use push_back() with " + type_name());
+
4022  }
+
4023 
+
4024  // transform null object into an object
+
4025  if (is_null())
+
4026  {
+
4027  m_type = value_t::object;
+
4028  m_value = value_t::object;
+
4029  }
4030 
-
4035  reference operator+=(const typename object_t::value_type& val)
-
4036  {
-
4037  push_back(val);
-
4038  return operator[](val.first);
-
4039  }
-
4040 
-
4061  iterator insert(const_iterator pos, const basic_json& val)
-
4062  {
-
4063  // insert only works for arrays
-
4064  if (is_array())
-
4065  {
-
4066  // check if iterator pos fits to this JSON value
-
4067  if (pos.m_object != this)
-
4068  {
-
4069  throw std::domain_error("iterator does not fit current value");
-
4070  }
-
4071 
-
4072  // insert to array and return iterator
-
4073  iterator result(this);
-
4074  result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, val);
-
4075  return result;
-
4076  }
-
4077  else
-
4078  {
-
4079  throw std::domain_error("cannot use insert() with " + type_name());
+
4031  // add element to array
+
4032  m_value.object->insert(val);
+
4033  }
+
4034 
+
4039  reference operator+=(const typename object_t::value_type& val)
+
4040  {
+
4041  push_back(val);
+
4042  return operator[](val.first);
+
4043  }
+
4044 
+
4065  iterator insert(const_iterator pos, const basic_json& val)
+
4066  {
+
4067  // insert only works for arrays
+
4068  if (is_array())
+
4069  {
+
4070  // check if iterator pos fits to this JSON value
+
4071  if (pos.m_object != this)
+
4072  {
+
4073  throw std::domain_error("iterator does not fit current value");
+
4074  }
+
4075 
+
4076  // insert to array and return iterator
+
4077  iterator result(this);
+
4078  result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, val);
+
4079  return result;
4080  }
-
4081  }
-
4082 
-
4087  iterator insert(const_iterator pos, basic_json&& val)
-
4088  {
-
4089  return insert(pos, val);
-
4090  }
-
4091 
-
4114  iterator insert(const_iterator pos, size_type cnt, const basic_json& val)
-
4115  {
-
4116  // insert only works for arrays
-
4117  if (is_array())
-
4118  {
-
4119  // check if iterator pos fits to this JSON value
-
4120  if (pos.m_object != this)
-
4121  {
-
4122  throw std::domain_error("iterator does not fit current value");
-
4123  }
-
4124 
-
4125  // insert to array and return iterator
-
4126  iterator result(this);
-
4127  result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);
-
4128  return result;
-
4129  }
-
4130  else
-
4131  {
-
4132  throw std::domain_error("cannot use insert() with " + type_name());
+
4081  else
+
4082  {
+
4083  throw std::domain_error("cannot use insert() with " + type_name());
+
4084  }
+
4085  }
+
4086 
+
4091  iterator insert(const_iterator pos, basic_json&& val)
+
4092  {
+
4093  return insert(pos, val);
+
4094  }
+
4095 
+
4118  iterator insert(const_iterator pos, size_type cnt, const basic_json& val)
+
4119  {
+
4120  // insert only works for arrays
+
4121  if (is_array())
+
4122  {
+
4123  // check if iterator pos fits to this JSON value
+
4124  if (pos.m_object != this)
+
4125  {
+
4126  throw std::domain_error("iterator does not fit current value");
+
4127  }
+
4128 
+
4129  // insert to array and return iterator
+
4130  iterator result(this);
+
4131  result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);
+
4132  return result;
4133  }
-
4134  }
-
4135 
- -
4163  {
-
4164  // insert only works for arrays
-
4165  if (not is_array())
-
4166  {
-
4167  throw std::domain_error("cannot use insert() with " + type_name());
-
4168  }
-
4169 
-
4170  // check if iterator pos fits to this JSON value
-
4171  if (pos.m_object != this)
-
4172  {
-
4173  throw std::domain_error("iterator does not fit current value");
-
4174  }
-
4175 
-
4176  if (first.m_object != last.m_object)
-
4177  {
-
4178  throw std::domain_error("iterators do not fit");
-
4179  }
-
4180 
-
4181  if (first.m_object == this or last.m_object == this)
-
4182  {
-
4183  throw std::domain_error("passed iterators may not belong to container");
-
4184  }
-
4185 
-
4186  // insert to array and return iterator
-
4187  iterator result(this);
-
4188  result.m_it.array_iterator = m_value.array->insert(
-
4189  pos.m_it.array_iterator,
-
4190  first.m_it.array_iterator,
-
4191  last.m_it.array_iterator);
-
4192  return result;
-
4193  }
-
4194 
-
4216  iterator insert(const_iterator pos, std::initializer_list<basic_json> ilist)
-
4217  {
-
4218  // insert only works for arrays
-
4219  if (not is_array())
-
4220  {
-
4221  throw std::domain_error("cannot use insert() with " + type_name());
-
4222  }
-
4223 
-
4224  // check if iterator pos fits to this JSON value
-
4225  if (pos.m_object != this)
-
4226  {
-
4227  throw std::domain_error("iterator does not fit current value");
-
4228  }
-
4229 
-
4230  // insert to array and return iterator
-
4231  iterator result(this);
-
4232  result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, ilist);
-
4233  return result;
-
4234  }
-
4235 
-
4253  void swap(reference other) noexcept (
-
4254  std::is_nothrow_move_constructible<value_t>::value and
-
4255  std::is_nothrow_move_assignable<value_t>::value and
-
4256  std::is_nothrow_move_constructible<json_value>::value and
-
4257  std::is_nothrow_move_assignable<json_value>::value
-
4258  )
-
4259  {
-
4260  std::swap(m_type, other.m_type);
-
4261  std::swap(m_value, other.m_value);
-
4262  }
-
4263 
-
4283  void swap(array_t& other)
-
4284  {
-
4285  // swap only works for arrays
-
4286  if (is_array())
-
4287  {
-
4288  std::swap(*(m_value.array), other);
-
4289  }
-
4290  else
+
4134  else
+
4135  {
+
4136  throw std::domain_error("cannot use insert() with " + type_name());
+
4137  }
+
4138  }
+
4139 
+ +
4167  {
+
4168  // insert only works for arrays
+
4169  if (not is_array())
+
4170  {
+
4171  throw std::domain_error("cannot use insert() with " + type_name());
+
4172  }
+
4173 
+
4174  // check if iterator pos fits to this JSON value
+
4175  if (pos.m_object != this)
+
4176  {
+
4177  throw std::domain_error("iterator does not fit current value");
+
4178  }
+
4179 
+
4180  if (first.m_object != last.m_object)
+
4181  {
+
4182  throw std::domain_error("iterators do not fit");
+
4183  }
+
4184 
+
4185  if (first.m_object == this or last.m_object == this)
+
4186  {
+
4187  throw std::domain_error("passed iterators may not belong to container");
+
4188  }
+
4189 
+
4190  // insert to array and return iterator
+
4191  iterator result(this);
+
4192  result.m_it.array_iterator = m_value.array->insert(
+
4193  pos.m_it.array_iterator,
+
4194  first.m_it.array_iterator,
+
4195  last.m_it.array_iterator);
+
4196  return result;
+
4197  }
+
4198 
+
4220  iterator insert(const_iterator pos, std::initializer_list<basic_json> ilist)
+
4221  {
+
4222  // insert only works for arrays
+
4223  if (not is_array())
+
4224  {
+
4225  throw std::domain_error("cannot use insert() with " + type_name());
+
4226  }
+
4227 
+
4228  // check if iterator pos fits to this JSON value
+
4229  if (pos.m_object != this)
+
4230  {
+
4231  throw std::domain_error("iterator does not fit current value");
+
4232  }
+
4233 
+
4234  // insert to array and return iterator
+
4235  iterator result(this);
+
4236  result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, ilist);
+
4237  return result;
+
4238  }
+
4239 
+
4257  void swap(reference other) noexcept (
+
4258  std::is_nothrow_move_constructible<value_t>::value and
+
4259  std::is_nothrow_move_assignable<value_t>::value and
+
4260  std::is_nothrow_move_constructible<json_value>::value and
+
4261  std::is_nothrow_move_assignable<json_value>::value
+
4262  )
+
4263  {
+
4264  std::swap(m_type, other.m_type);
+
4265  std::swap(m_value, other.m_value);
+
4266  }
+
4267 
+
4287  void swap(array_t& other)
+
4288  {
+
4289  // swap only works for arrays
+
4290  if (is_array())
4291  {
-
4292  throw std::domain_error("cannot use swap() with " + type_name());
+
4292  std::swap(*(m_value.array), other);
4293  }
-
4294  }
-
4295 
-
4315  void swap(object_t& other)
-
4316  {
-
4317  // swap only works for objects
-
4318  if (is_object())
-
4319  {
-
4320  std::swap(*(m_value.object), other);
-
4321  }
-
4322  else
+
4294  else
+
4295  {
+
4296  throw std::domain_error("cannot use swap() with " + type_name());
+
4297  }
+
4298  }
+
4299 
+
4319  void swap(object_t& other)
+
4320  {
+
4321  // swap only works for objects
+
4322  if (is_object())
4323  {
-
4324  throw std::domain_error("cannot use swap() with " + type_name());
+
4324  std::swap(*(m_value.object), other);
4325  }
-
4326  }
-
4327 
-
4347  void swap(string_t& other)
-
4348  {
-
4349  // swap only works for strings
-
4350  if (is_string())
-
4351  {
-
4352  std::swap(*(m_value.string), other);
-
4353  }
-
4354  else
+
4326  else
+
4327  {
+
4328  throw std::domain_error("cannot use swap() with " + type_name());
+
4329  }
+
4330  }
+
4331 
+
4351  void swap(string_t& other)
+
4352  {
+
4353  // swap only works for strings
+
4354  if (is_string())
4355  {
-
4356  throw std::domain_error("cannot use swap() with " + type_name());
+
4356  std::swap(*(m_value.string), other);
4357  }
-
4358  }
-
4359 
-
4361 
-
4362 
-
4364  // lexicographical comparison operators //
-
4366 
-
4369 
-
4370  private:
-
4380  friend bool operator<(const value_t lhs, const value_t rhs)
-
4381  {
-
4382  static constexpr std::array<uint8_t, 7> order = {{
-
4383  0, // null
-
4384  3, // object
-
4385  4, // array
-
4386  5, // string
-
4387  1, // boolean
-
4388  2, // integer
-
4389  2 // float
-
4390  }
-
4391  };
-
4392 
-
4393  // discarded values are not comparable
-
4394  if (lhs == value_t::discarded or rhs == value_t::discarded)
-
4395  {
-
4396  return false;
-
4397  }
-
4398 
-
4399  return order[static_cast<std::size_t>(lhs)] < order[static_cast<std::size_t>(rhs)];
-
4400  }
-
4401 
-
4402  public:
-
4426  friend bool operator==(const_reference lhs, const_reference rhs) noexcept
-
4427  {
-
4428  const auto lhs_type = lhs.type();
-
4429  const auto rhs_type = rhs.type();
-
4430 
-
4431  if (lhs_type == rhs_type)
-
4432  {
-
4433  switch (lhs_type)
-
4434  {
-
4435  case value_t::array:
-
4436  return *lhs.m_value.array == *rhs.m_value.array;
-
4437  case value_t::object:
-
4438  return *lhs.m_value.object == *rhs.m_value.object;
-
4439  case value_t::null:
-
4440  return true;
-
4441  case value_t::string:
-
4442  return *lhs.m_value.string == *rhs.m_value.string;
-
4443  case value_t::boolean:
-
4444  return lhs.m_value.boolean == rhs.m_value.boolean;
- -
4446  return lhs.m_value.number_integer == rhs.m_value.number_integer;
-
4447  case value_t::number_float:
-
4448  return approx(lhs.m_value.number_float, rhs.m_value.number_float);
-
4449  default:
-
4450  return false;
-
4451  }
-
4452  }
-
4453  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
-
4454  {
-
4455  return approx(static_cast<number_float_t>(lhs.m_value.number_integer),
-
4456  rhs.m_value.number_float);
-
4457  }
-
4458  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
-
4459  {
-
4460  return approx(lhs.m_value.number_float,
-
4461  static_cast<number_float_t>(rhs.m_value.number_integer));
-
4462  }
-
4463  return false;
-
4464  }
-
4465 
-
4484  friend bool operator==(const_reference v, std::nullptr_t) noexcept
-
4485  {
-
4486  return v.is_null();
-
4487  }
-
4488 
-
4493  friend bool operator==(std::nullptr_t, const_reference v) noexcept
-
4494  {
-
4495  return v.is_null();
-
4496  }
-
4497 
-
4514  friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
-
4515  {
-
4516  return not (lhs == rhs);
-
4517  }
-
4518 
-
4537  friend bool operator!=(const_reference v, std::nullptr_t) noexcept
-
4538  {
-
4539  return not v.is_null();
-
4540  }
-
4541 
-
4546  friend bool operator!=(std::nullptr_t, const_reference v) noexcept
-
4547  {
-
4548  return not v.is_null();
-
4549  }
-
4550 
-
4575  friend bool operator<(const_reference lhs, const_reference rhs) noexcept
-
4576  {
-
4577  const auto lhs_type = lhs.type();
-
4578  const auto rhs_type = rhs.type();
-
4579 
-
4580  if (lhs_type == rhs_type)
-
4581  {
-
4582  switch (lhs_type)
-
4583  {
-
4584  case value_t::array:
-
4585  return *lhs.m_value.array < *rhs.m_value.array;
-
4586  case value_t::object:
-
4587  return *lhs.m_value.object < *rhs.m_value.object;
-
4588  case value_t::null:
-
4589  return false;
-
4590  case value_t::string:
-
4591  return *lhs.m_value.string < *rhs.m_value.string;
-
4592  case value_t::boolean:
-
4593  return lhs.m_value.boolean < rhs.m_value.boolean;
- -
4595  return lhs.m_value.number_integer < rhs.m_value.number_integer;
-
4596  case value_t::number_float:
-
4597  return lhs.m_value.number_float < rhs.m_value.number_float;
-
4598  default:
-
4599  return false;
-
4600  }
-
4601  }
-
4602  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
-
4603  {
-
4604  return static_cast<number_float_t>(lhs.m_value.number_integer) <
-
4605  rhs.m_value.number_float;
-
4606  }
-
4607  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
-
4608  {
-
4609  return lhs.m_value.number_float <
-
4610  static_cast<number_float_t>(rhs.m_value.number_integer);
-
4611  }
-
4612 
-
4613  // We only reach this line if we cannot compare values. In that case,
-
4614  // we compare types. Note we have to call the operator explicitly,
-
4615  // because MSVC has problems otherwise.
-
4616  return operator<(lhs_type, rhs_type);
-
4617  }
-
4618 
-
4636  friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
-
4637  {
-
4638  return not (rhs < lhs);
-
4639  }
-
4640 
-
4658  friend bool operator>(const_reference lhs, const_reference rhs) noexcept
-
4659  {
-
4660  return not (lhs <= rhs);
-
4661  }
-
4662 
-
4680  friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
-
4681  {
-
4682  return not (lhs < rhs);
-
4683  }
-
4684 
-
4686 
-
4687 
-
4689  // serialization //
-
4691 
-
4694 
-
4717  friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
-
4718  {
-
4719  // read width member and use it as indentation parameter if nonzero
-
4720  const bool pretty_print = (o.width() > 0);
-
4721  const auto indentation = (pretty_print ? o.width() : 0);
-
4722 
-
4723  // reset width to 0 for subsequent calls to this stream
-
4724  o.width(0);
-
4725 
-
4726  // do the actual serialization
-
4727  j.dump(o, pretty_print, static_cast<unsigned int>(indentation));
-
4728  return o;
-
4729  }
-
4730 
-
4735  friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
-
4736  {
-
4737  return o << j;
-
4738  }
-
4739 
-
4741 
-
4742 
-
4744  // deserialization //
-
4746 
-
4749 
-
4774  static basic_json parse(const string_t& s, parser_callback_t cb = nullptr)
-
4775  {
-
4776  return parser(s, cb).parse();
-
4777  }
-
4778 
-
4803  static basic_json parse(std::istream& i, parser_callback_t cb = nullptr)
-
4804  {
-
4805  return parser(i, cb).parse();
-
4806  }
-
4807 
-
4811  static basic_json parse(std::istream&& i, parser_callback_t cb = nullptr)
-
4812  {
-
4813  return parser(i, cb).parse();
-
4814  }
-
4815 
-
4839  friend std::istream& operator<<(basic_json& j, std::istream& i)
-
4840  {
-
4841  j = parser(i).parse();
-
4842  return i;
-
4843  }
-
4844 
-
4849  friend std::istream& operator>>(std::istream& i, basic_json& j)
-
4850  {
-
4851  j = parser(i).parse();
-
4852  return i;
-
4853  }
-
4854 
-
4856 
-
4857 
-
4858  private:
-
4860  // convenience functions //
-
4862 
-
4864  string_t type_name() const
-
4865  {
-
4866  switch (m_type)
-
4867  {
-
4868  case value_t::null:
-
4869  return "null";
-
4870  case value_t::object:
-
4871  return "object";
-
4872  case value_t::array:
-
4873  return "array";
-
4874  case value_t::string:
-
4875  return "string";
-
4876  case value_t::boolean:
-
4877  return "boolean";
-
4878  case value_t::discarded:
-
4879  return "discarded";
-
4880  default:
-
4881  return "number";
-
4882  }
-
4883  }
-
4884 
-
4893  static std::size_t extra_space(const string_t& s) noexcept
-
4894  {
-
4895  std::size_t result = 0;
-
4896 
-
4897  for (const auto& c : s)
-
4898  {
-
4899  switch (c)
-
4900  {
-
4901  case '"':
-
4902  case '\\':
-
4903  case '\b':
-
4904  case '\f':
-
4905  case '\n':
-
4906  case '\r':
-
4907  case '\t':
-
4908  {
-
4909  // from c (1 byte) to \x (2 bytes)
-
4910  result += 1;
-
4911  break;
-
4912  }
-
4913 
-
4914  default:
-
4915  {
-
4916  if (c >= 0x00 and c <= 0x1f)
-
4917  {
-
4918  // from c (1 byte) to \uxxxx (6 bytes)
-
4919  result += 5;
-
4920  }
-
4921  break;
-
4922  }
-
4923  }
-
4924  }
-
4925 
-
4926  return result;
-
4927  }
-
4928 
-
4942  static string_t escape_string(const string_t& s) noexcept
-
4943  {
-
4944  const auto space = extra_space(s);
-
4945  if (space == 0)
-
4946  {
-
4947  return s;
-
4948  }
-
4949 
-
4950  // create a result string of necessary size
-
4951  string_t result(s.size() + space, '\\');
-
4952  std::size_t pos = 0;
+
4358  else
+
4359  {
+
4360  throw std::domain_error("cannot use swap() with " + type_name());
+
4361  }
+
4362  }
+
4363 
+
4365 
+
4366 
+
4368  // lexicographical comparison operators //
+
4370 
+
4373 
+
4374  private:
+
4384  friend bool operator<(const value_t lhs, const value_t rhs)
+
4385  {
+
4386  static constexpr std::array<uint8_t, 7> order = {{
+
4387  0, // null
+
4388  3, // object
+
4389  4, // array
+
4390  5, // string
+
4391  1, // boolean
+
4392  2, // integer
+
4393  2 // float
+
4394  }
+
4395  };
+
4396 
+
4397  // discarded values are not comparable
+
4398  if (lhs == value_t::discarded or rhs == value_t::discarded)
+
4399  {
+
4400  return false;
+
4401  }
+
4402 
+
4403  return order[static_cast<std::size_t>(lhs)] < order[static_cast<std::size_t>(rhs)];
+
4404  }
+
4405 
+
4406  public:
+
4430  friend bool operator==(const_reference lhs, const_reference rhs) noexcept
+
4431  {
+
4432  const auto lhs_type = lhs.type();
+
4433  const auto rhs_type = rhs.type();
+
4434 
+
4435  if (lhs_type == rhs_type)
+
4436  {
+
4437  switch (lhs_type)
+
4438  {
+
4439  case value_t::array:
+
4440  return *lhs.m_value.array == *rhs.m_value.array;
+
4441  case value_t::object:
+
4442  return *lhs.m_value.object == *rhs.m_value.object;
+
4443  case value_t::null:
+
4444  return true;
+
4445  case value_t::string:
+
4446  return *lhs.m_value.string == *rhs.m_value.string;
+
4447  case value_t::boolean:
+
4448  return lhs.m_value.boolean == rhs.m_value.boolean;
+ +
4450  return lhs.m_value.number_integer == rhs.m_value.number_integer;
+
4451  case value_t::number_float:
+
4452  return approx(lhs.m_value.number_float, rhs.m_value.number_float);
+
4453  default:
+
4454  return false;
+
4455  }
+
4456  }
+
4457  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
+
4458  {
+
4459  return approx(static_cast<number_float_t>(lhs.m_value.number_integer),
+
4460  rhs.m_value.number_float);
+
4461  }
+
4462  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
+
4463  {
+
4464  return approx(lhs.m_value.number_float,
+
4465  static_cast<number_float_t>(rhs.m_value.number_integer));
+
4466  }
+
4467  return false;
+
4468  }
+
4469 
+
4488  friend bool operator==(const_reference v, std::nullptr_t) noexcept
+
4489  {
+
4490  return v.is_null();
+
4491  }
+
4492 
+
4497  friend bool operator==(std::nullptr_t, const_reference v) noexcept
+
4498  {
+
4499  return v.is_null();
+
4500  }
+
4501 
+
4518  friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
+
4519  {
+
4520  return not (lhs == rhs);
+
4521  }
+
4522 
+
4541  friend bool operator!=(const_reference v, std::nullptr_t) noexcept
+
4542  {
+
4543  return not v.is_null();
+
4544  }
+
4545 
+
4550  friend bool operator!=(std::nullptr_t, const_reference v) noexcept
+
4551  {
+
4552  return not v.is_null();
+
4553  }
+
4554 
+
4579  friend bool operator<(const_reference lhs, const_reference rhs) noexcept
+
4580  {
+
4581  const auto lhs_type = lhs.type();
+
4582  const auto rhs_type = rhs.type();
+
4583 
+
4584  if (lhs_type == rhs_type)
+
4585  {
+
4586  switch (lhs_type)
+
4587  {
+
4588  case value_t::array:
+
4589  return *lhs.m_value.array < *rhs.m_value.array;
+
4590  case value_t::object:
+
4591  return *lhs.m_value.object < *rhs.m_value.object;
+
4592  case value_t::null:
+
4593  return false;
+
4594  case value_t::string:
+
4595  return *lhs.m_value.string < *rhs.m_value.string;
+
4596  case value_t::boolean:
+
4597  return lhs.m_value.boolean < rhs.m_value.boolean;
+ +
4599  return lhs.m_value.number_integer < rhs.m_value.number_integer;
+
4600  case value_t::number_float:
+
4601  return lhs.m_value.number_float < rhs.m_value.number_float;
+
4602  default:
+
4603  return false;
+
4604  }
+
4605  }
+
4606  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
+
4607  {
+
4608  return static_cast<number_float_t>(lhs.m_value.number_integer) <
+
4609  rhs.m_value.number_float;
+
4610  }
+
4611  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
+
4612  {
+
4613  return lhs.m_value.number_float <
+
4614  static_cast<number_float_t>(rhs.m_value.number_integer);
+
4615  }
+
4616 
+
4617  // We only reach this line if we cannot compare values. In that case,
+
4618  // we compare types. Note we have to call the operator explicitly,
+
4619  // because MSVC has problems otherwise.
+
4620  return operator<(lhs_type, rhs_type);
+
4621  }
+
4622 
+
4640  friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
+
4641  {
+
4642  return not (rhs < lhs);
+
4643  }
+
4644 
+
4662  friend bool operator>(const_reference lhs, const_reference rhs) noexcept
+
4663  {
+
4664  return not (lhs <= rhs);
+
4665  }
+
4666 
+
4684  friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
+
4685  {
+
4686  return not (lhs < rhs);
+
4687  }
+
4688 
+
4690 
+
4691 
+
4693  // serialization //
+
4695 
+
4698 
+
4721  friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
+
4722  {
+
4723  // read width member and use it as indentation parameter if nonzero
+
4724  const bool pretty_print = (o.width() > 0);
+
4725  const auto indentation = (pretty_print ? o.width() : 0);
+
4726 
+
4727  // reset width to 0 for subsequent calls to this stream
+
4728  o.width(0);
+
4729 
+
4730  // do the actual serialization
+
4731  j.dump(o, pretty_print, static_cast<unsigned int>(indentation));
+
4732  return o;
+
4733  }
+
4734 
+
4739  friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
+
4740  {
+
4741  return o << j;
+
4742  }
+
4743 
+
4745 
+
4746 
+
4748  // deserialization //
+
4750 
+
4753 
+
4778  static basic_json parse(const string_t& s, parser_callback_t cb = nullptr)
+
4779  {
+
4780  return parser(s, cb).parse();
+
4781  }
+
4782 
+
4807  static basic_json parse(std::istream& i, parser_callback_t cb = nullptr)
+
4808  {
+
4809  return parser(i, cb).parse();
+
4810  }
+
4811 
+
4815  static basic_json parse(std::istream&& i, parser_callback_t cb = nullptr)
+
4816  {
+
4817  return parser(i, cb).parse();
+
4818  }
+
4819 
+
4843  friend std::istream& operator<<(basic_json& j, std::istream& i)
+
4844  {
+
4845  j = parser(i).parse();
+
4846  return i;
+
4847  }
+
4848 
+
4853  friend std::istream& operator>>(std::istream& i, basic_json& j)
+
4854  {
+
4855  j = parser(i).parse();
+
4856  return i;
+
4857  }
+
4858 
+
4860 
+
4861 
+
4862  private:
+
4864  // convenience functions //
+
4866 
+
4868  string_t type_name() const
+
4869  {
+
4870  switch (m_type)
+
4871  {
+
4872  case value_t::null:
+
4873  return "null";
+
4874  case value_t::object:
+
4875  return "object";
+
4876  case value_t::array:
+
4877  return "array";
+
4878  case value_t::string:
+
4879  return "string";
+
4880  case value_t::boolean:
+
4881  return "boolean";
+
4882  case value_t::discarded:
+
4883  return "discarded";
+
4884  default:
+
4885  return "number";
+
4886  }
+
4887  }
+
4888 
+
4897  static std::size_t extra_space(const string_t& s) noexcept
+
4898  {
+
4899  std::size_t result = 0;
+
4900 
+
4901  for (const auto& c : s)
+
4902  {
+
4903  switch (c)
+
4904  {
+
4905  case '"':
+
4906  case '\\':
+
4907  case '\b':
+
4908  case '\f':
+
4909  case '\n':
+
4910  case '\r':
+
4911  case '\t':
+
4912  {
+
4913  // from c (1 byte) to \x (2 bytes)
+
4914  result += 1;
+
4915  break;
+
4916  }
+
4917 
+
4918  default:
+
4919  {
+
4920  if (c >= 0x00 and c <= 0x1f)
+
4921  {
+
4922  // from c (1 byte) to \uxxxx (6 bytes)
+
4923  result += 5;
+
4924  }
+
4925  break;
+
4926  }
+
4927  }
+
4928  }
+
4929 
+
4930  return result;
+
4931  }
+
4932 
+
4946  static string_t escape_string(const string_t& s) noexcept
+
4947  {
+
4948  const auto space = extra_space(s);
+
4949  if (space == 0)
+
4950  {
+
4951  return s;
+
4952  }
4953 
-
4954  for (const auto& c : s)
-
4955  {
-
4956  switch (c)
-
4957  {
-
4958  // quotation mark (0x22)
-
4959  case '"':
-
4960  {
-
4961  result[pos + 1] = '"';
-
4962  pos += 2;
-
4963  break;
-
4964  }
-
4965 
-
4966  // reverse solidus (0x5c)
-
4967  case '\\':
-
4968  {
-
4969  // nothing to change
-
4970  pos += 2;
-
4971  break;
-
4972  }
-
4973 
-
4974  // backspace (0x08)
-
4975  case '\b':
-
4976  {
-
4977  result[pos + 1] = 'b';
-
4978  pos += 2;
-
4979  break;
-
4980  }
-
4981 
-
4982  // formfeed (0x0c)
-
4983  case '\f':
-
4984  {
-
4985  result[pos + 1] = 'f';
-
4986  pos += 2;
-
4987  break;
-
4988  }
-
4989 
-
4990  // newline (0x0a)
-
4991  case '\n':
-
4992  {
-
4993  result[pos + 1] = 'n';
-
4994  pos += 2;
-
4995  break;
-
4996  }
-
4997 
-
4998  // carriage return (0x0d)
-
4999  case '\r':
-
5000  {
-
5001  result[pos + 1] = 'r';
-
5002  pos += 2;
-
5003  break;
-
5004  }
-
5005 
-
5006  // horizontal tab (0x09)
-
5007  case '\t':
-
5008  {
-
5009  result[pos + 1] = 't';
-
5010  pos += 2;
-
5011  break;
-
5012  }
-
5013 
-
5014  default:
-
5015  {
-
5016  if (c >= 0x00 and c <= 0x1f)
-
5017  {
-
5018  // convert a number 0..15 to its hex representation (0..f)
-
5019  auto hexify = [](const char v) -> char
-
5020  {
-
5021  return (v < 10) ? ('0' + v) : ('a' + v - 10);
-
5022  };
-
5023 
-
5024  // print character c as \uxxxx
-
5025  for (const char m :
-
5026  { 'u', '0', '0', hexify(c >> 4), hexify(c & 0x0f)
-
5027  })
-
5028  {
-
5029  result[++pos] = m;
-
5030  }
-
5031 
-
5032  ++pos;
-
5033  }
-
5034  else
-
5035  {
-
5036  // all other characters are added as-is
-
5037  result[pos++] = c;
-
5038  }
-
5039  break;
-
5040  }
-
5041  }
-
5042  }
-
5043 
-
5044  return result;
-
5045  }
-
5046 
-
5064  void dump(std::ostream& o,
-
5065  const bool pretty_print,
-
5066  const unsigned int indent_step,
-
5067  const unsigned int current_indent = 0) const
-
5068  {
-
5069  // variable to hold indentation for recursive calls
-
5070  unsigned int new_indent = current_indent;
-
5071 
-
5072  switch (m_type)
-
5073  {
-
5074  case value_t::object:
-
5075  {
-
5076  if (m_value.object->empty())
-
5077  {
-
5078  o << "{}";
-
5079  return;
-
5080  }
-
5081 
-
5082  o << "{";
-
5083 
-
5084  // increase indentation
-
5085  if (pretty_print)
-
5086  {
-
5087  new_indent += indent_step;
-
5088  o << "\n";
-
5089  }
-
5090 
-
5091  for (auto i = m_value.object->cbegin(); i != m_value.object->cend(); ++i)
-
5092  {
-
5093  if (i != m_value.object->cbegin())
-
5094  {
-
5095  o << (pretty_print ? ",\n" : ",");
-
5096  }
-
5097  o << string_t(new_indent, ' ') << "\""
-
5098  << escape_string(i->first) << "\":"
-
5099  << (pretty_print ? " " : "");
-
5100  i->second.dump(o, pretty_print, indent_step, new_indent);
-
5101  }
-
5102 
-
5103  // decrease indentation
-
5104  if (pretty_print)
-
5105  {
-
5106  new_indent -= indent_step;
-
5107  o << "\n";
-
5108  }
-
5109 
-
5110  o << string_t(new_indent, ' ') + "}";
-
5111  return;
-
5112  }
+
4954  // create a result string of necessary size
+
4955  string_t result(s.size() + space, '\\');
+
4956  std::size_t pos = 0;
+
4957 
+
4958  for (const auto& c : s)
+
4959  {
+
4960  switch (c)
+
4961  {
+
4962  // quotation mark (0x22)
+
4963  case '"':
+
4964  {
+
4965  result[pos + 1] = '"';
+
4966  pos += 2;
+
4967  break;
+
4968  }
+
4969 
+
4970  // reverse solidus (0x5c)
+
4971  case '\\':
+
4972  {
+
4973  // nothing to change
+
4974  pos += 2;
+
4975  break;
+
4976  }
+
4977 
+
4978  // backspace (0x08)
+
4979  case '\b':
+
4980  {
+
4981  result[pos + 1] = 'b';
+
4982  pos += 2;
+
4983  break;
+
4984  }
+
4985 
+
4986  // formfeed (0x0c)
+
4987  case '\f':
+
4988  {
+
4989  result[pos + 1] = 'f';
+
4990  pos += 2;
+
4991  break;
+
4992  }
+
4993 
+
4994  // newline (0x0a)
+
4995  case '\n':
+
4996  {
+
4997  result[pos + 1] = 'n';
+
4998  pos += 2;
+
4999  break;
+
5000  }
+
5001 
+
5002  // carriage return (0x0d)
+
5003  case '\r':
+
5004  {
+
5005  result[pos + 1] = 'r';
+
5006  pos += 2;
+
5007  break;
+
5008  }
+
5009 
+
5010  // horizontal tab (0x09)
+
5011  case '\t':
+
5012  {
+
5013  result[pos + 1] = 't';
+
5014  pos += 2;
+
5015  break;
+
5016  }
+
5017 
+
5018  default:
+
5019  {
+
5020  if (c >= 0x00 and c <= 0x1f)
+
5021  {
+
5022  // convert a number 0..15 to its hex representation (0..f)
+
5023  auto hexify = [](const char v) -> char
+
5024  {
+
5025  return (v < 10) ? ('0' + v) : ('a' + v - 10);
+
5026  };
+
5027 
+
5028  // print character c as \uxxxx
+
5029  for (const char m :
+
5030  { 'u', '0', '0', hexify(c >> 4), hexify(c & 0x0f)
+
5031  })
+
5032  {
+
5033  result[++pos] = m;
+
5034  }
+
5035 
+
5036  ++pos;
+
5037  }
+
5038  else
+
5039  {
+
5040  // all other characters are added as-is
+
5041  result[pos++] = c;
+
5042  }
+
5043  break;
+
5044  }
+
5045  }
+
5046  }
+
5047 
+
5048  return result;
+
5049  }
+
5050 
+
5068  void dump(std::ostream& o,
+
5069  const bool pretty_print,
+
5070  const unsigned int indent_step,
+
5071  const unsigned int current_indent = 0) const
+
5072  {
+
5073  // variable to hold indentation for recursive calls
+
5074  unsigned int new_indent = current_indent;
+
5075 
+
5076  switch (m_type)
+
5077  {
+
5078  case value_t::object:
+
5079  {
+
5080  if (m_value.object->empty())
+
5081  {
+
5082  o << "{}";
+
5083  return;
+
5084  }
+
5085 
+
5086  o << "{";
+
5087 
+
5088  // increase indentation
+
5089  if (pretty_print)
+
5090  {
+
5091  new_indent += indent_step;
+
5092  o << "\n";
+
5093  }
+
5094 
+
5095  for (auto i = m_value.object->cbegin(); i != m_value.object->cend(); ++i)
+
5096  {
+
5097  if (i != m_value.object->cbegin())
+
5098  {
+
5099  o << (pretty_print ? ",\n" : ",");
+
5100  }
+
5101  o << string_t(new_indent, ' ') << "\""
+
5102  << escape_string(i->first) << "\":"
+
5103  << (pretty_print ? " " : "");
+
5104  i->second.dump(o, pretty_print, indent_step, new_indent);
+
5105  }
+
5106 
+
5107  // decrease indentation
+
5108  if (pretty_print)
+
5109  {
+
5110  new_indent -= indent_step;
+
5111  o << "\n";
+
5112  }
5113 
-
5114  case value_t::array:
-
5115  {
-
5116  if (m_value.array->empty())
-
5117  {
-
5118  o << "[]";
-
5119  return;
-
5120  }
-
5121 
-
5122  o << "[";
-
5123 
-
5124  // increase indentation
-
5125  if (pretty_print)
-
5126  {
-
5127  new_indent += indent_step;
-
5128  o << "\n";
-
5129  }
-
5130 
-
5131  for (auto i = m_value.array->cbegin(); i != m_value.array->cend(); ++i)
-
5132  {
-
5133  if (i != m_value.array->cbegin())
-
5134  {
-
5135  o << (pretty_print ? ",\n" : ",");
-
5136  }
-
5137  o << string_t(new_indent, ' ');
-
5138  i->dump(o, pretty_print, indent_step, new_indent);
-
5139  }
-
5140 
-
5141  // decrease indentation
-
5142  if (pretty_print)
-
5143  {
-
5144  new_indent -= indent_step;
-
5145  o << "\n";
-
5146  }
-
5147 
-
5148  o << string_t(new_indent, ' ') << "]";
-
5149  return;
-
5150  }
+
5114  o << string_t(new_indent, ' ') + "}";
+
5115  return;
+
5116  }
+
5117 
+
5118  case value_t::array:
+
5119  {
+
5120  if (m_value.array->empty())
+
5121  {
+
5122  o << "[]";
+
5123  return;
+
5124  }
+
5125 
+
5126  o << "[";
+
5127 
+
5128  // increase indentation
+
5129  if (pretty_print)
+
5130  {
+
5131  new_indent += indent_step;
+
5132  o << "\n";
+
5133  }
+
5134 
+
5135  for (auto i = m_value.array->cbegin(); i != m_value.array->cend(); ++i)
+
5136  {
+
5137  if (i != m_value.array->cbegin())
+
5138  {
+
5139  o << (pretty_print ? ",\n" : ",");
+
5140  }
+
5141  o << string_t(new_indent, ' ');
+
5142  i->dump(o, pretty_print, indent_step, new_indent);
+
5143  }
+
5144 
+
5145  // decrease indentation
+
5146  if (pretty_print)
+
5147  {
+
5148  new_indent -= indent_step;
+
5149  o << "\n";
+
5150  }
5151 
-
5152  case value_t::string:
-
5153  {
-
5154  o << string_t("\"") << escape_string(*m_value.string) << "\"";
-
5155  return;
-
5156  }
-
5157 
-
5158  case value_t::boolean:
-
5159  {
-
5160  o << (m_value.boolean ? "true" : "false");
-
5161  return;
-
5162  }
-
5163 
- -
5165  {
-
5166  o << m_value.number_integer;
-
5167  return;
-
5168  }
-
5169 
-
5170  case value_t::number_float:
-
5171  {
-
5172  // 15 digits of precision allows round-trip IEEE 754
-
5173  // string->double->string; to be safe, we read this value from
-
5174  // std::numeric_limits<number_float_t>::digits10
-
5175  o << std::setprecision(std::numeric_limits<number_float_t>::digits10) << m_value.number_float;
-
5176  return;
-
5177  }
-
5178 
-
5179  case value_t::discarded:
-
5180  {
-
5181  o << "<discarded>";
-
5182  return;
-
5183  }
-
5184 
-
5185  case value_t::null:
-
5186  {
-
5187  o << "null";
-
5188  return;
-
5189  }
-
5190  }
-
5191  }
-
5192 
-
5193  private:
-
5195  // member variables //
-
5197 
-
5199  value_t m_type = value_t::null;
-
5200 
-
5202  json_value m_value = {};
-
5203 
+
5152  o << string_t(new_indent, ' ') << "]";
+
5153  return;
+
5154  }
+
5155 
+
5156  case value_t::string:
+
5157  {
+
5158  o << string_t("\"") << escape_string(*m_value.string) << "\"";
+
5159  return;
+
5160  }
+
5161 
+
5162  case value_t::boolean:
+
5163  {
+
5164  o << (m_value.boolean ? "true" : "false");
+
5165  return;
+
5166  }
+
5167 
+ +
5169  {
+
5170  o << m_value.number_integer;
+
5171  return;
+
5172  }
+
5173 
+
5174  case value_t::number_float:
+
5175  {
+
5176  // 15 digits of precision allows round-trip IEEE 754
+
5177  // string->double->string; to be safe, we read this value from
+
5178  // std::numeric_limits<number_float_t>::digits10
+
5179  o << std::setprecision(std::numeric_limits<number_float_t>::digits10) << m_value.number_float;
+
5180  return;
+
5181  }
+
5182 
+
5183  case value_t::discarded:
+
5184  {
+
5185  o << "<discarded>";
+
5186  return;
+
5187  }
+
5188 
+
5189  case value_t::null:
+
5190  {
+
5191  o << "null";
+
5192  return;
+
5193  }
+
5194  }
+
5195  }
+
5196 
+
5197  private:
+
5199  // member variables //
+
5201 
+
5203  value_t m_type = value_t::null;
5204 
-
5205  private:
-
5207  // iterators //
-
5209 
-
5219  class primitive_iterator_t
-
5220  {
-
5221  public:
-
5223  void set_begin()
-
5224  {
-
5225  m_it = begin_value;
-
5226  }
-
5227 
-
5229  void set_end()
-
5230  {
-
5231  m_it = end_value;
-
5232  }
-
5233 
-
5235  bool is_begin() const
-
5236  {
-
5237  return (m_it == begin_value);
-
5238  }
-
5239 
-
5241  bool is_end() const
-
5242  {
-
5243  return (m_it == end_value);
-
5244  }
-
5245 
-
5247  operator difference_type& ()
-
5248  {
-
5249  return m_it;
-
5250  }
-
5251 
-
5253  operator difference_type () const
-
5254  {
-
5255  return m_it;
-
5256  }
-
5257 
-
5258  private:
-
5259  static constexpr difference_type begin_value = 0;
-
5260  static constexpr difference_type end_value = begin_value + 1;
+
5206  json_value m_value = {};
+
5207 
+
5208 
+
5209  private:
+
5211  // iterators //
+
5213 
+
5223  class primitive_iterator_t
+
5224  {
+
5225  public:
+
5227  void set_begin()
+
5228  {
+
5229  m_it = begin_value;
+
5230  }
+
5231 
+
5233  void set_end()
+
5234  {
+
5235  m_it = end_value;
+
5236  }
+
5237 
+
5239  bool is_begin() const
+
5240  {
+
5241  return (m_it == begin_value);
+
5242  }
+
5243 
+
5245  bool is_end() const
+
5246  {
+
5247  return (m_it == end_value);
+
5248  }
+
5249 
+
5251  operator difference_type& ()
+
5252  {
+
5253  return m_it;
+
5254  }
+
5255 
+
5257  operator difference_type () const
+
5258  {
+
5259  return m_it;
+
5260  }
5261 
-
5263  difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min();
-
5264  };
+
5262  private:
+
5263  static constexpr difference_type begin_value = 0;
+
5264  static constexpr difference_type end_value = begin_value + 1;
5265 
-
5273  struct internal_iterator
-
5274  {
-
5276  typename object_t::iterator object_iterator;
-
5278  typename array_t::iterator array_iterator;
-
5280  primitive_iterator_t primitive_iterator;
-
5281 
-
5283  internal_iterator()
-
5284  : object_iterator(), array_iterator(), primitive_iterator()
-
5285  {}
-
5286  };
-
5287 
-
5288  public:
-
5302  class const_iterator : public std::iterator<std::random_access_iterator_tag, const basic_json>
-
5303  {
-
5305  friend class basic_json;
-
5306 
-
5307  public:
- - - - -
5317  using iterator_category = std::bidirectional_iterator_tag;
-
5318 
-
5320  const_iterator() = default;
-
5321 
-
5323  const_iterator(pointer object) : m_object(object)
-
5324  {
-
5325  switch (m_object->m_type)
-
5326  {
- -
5328  {
-
5329  m_it.object_iterator = typename object_t::iterator();
-
5330  break;
-
5331  }
-
5332 
- -
5334  {
-
5335  m_it.array_iterator = typename array_t::iterator();
-
5336  break;
-
5337  }
-
5338 
-
5339  default:
-
5340  {
-
5341  m_it.primitive_iterator = primitive_iterator_t();
-
5342  break;
-
5343  }
-
5344  }
-
5345  }
-
5346 
-
5348  const_iterator(const iterator& other) : m_object(other.m_object)
-
5349  {
-
5350  switch (m_object->m_type)
-
5351  {
- -
5353  {
-
5354  m_it.object_iterator = other.m_it.object_iterator;
-
5355  break;
-
5356  }
-
5357 
- -
5359  {
-
5360  m_it.array_iterator = other.m_it.array_iterator;
-
5361  break;
-
5362  }
-
5363 
-
5364  default:
-
5365  {
-
5366  m_it.primitive_iterator = other.m_it.primitive_iterator;
-
5367  break;
-
5368  }
-
5369  }
-
5370  }
-
5371 
-
5373  const_iterator(const const_iterator& other) noexcept
-
5374  : m_object(other.m_object), m_it(other.m_it)
-
5375  {}
-
5376 
- -
5379  std::is_nothrow_move_constructible<pointer>::value and
-
5380  std::is_nothrow_move_assignable<pointer>::value and
-
5381  std::is_nothrow_move_constructible<internal_iterator>::value and
-
5382  std::is_nothrow_move_assignable<internal_iterator>::value
-
5383  )
-
5384  {
-
5385  std::swap(m_object, other.m_object);
-
5386  std::swap(m_it, other.m_it);
-
5387  return *this;
-
5388  }
-
5389 
-
5390  private:
-
5392  void set_begin()
-
5393  {
-
5394  switch (m_object->m_type)
-
5395  {
- -
5397  {
-
5398  m_it.object_iterator = m_object->m_value.object->begin();
-
5399  break;
-
5400  }
-
5401 
- -
5403  {
-
5404  m_it.array_iterator = m_object->m_value.array->begin();
-
5405  break;
-
5406  }
-
5407 
- -
5409  {
-
5410  // set to end so begin()==end() is true: null is empty
-
5411  m_it.primitive_iterator.set_end();
-
5412  break;
-
5413  }
-
5414 
-
5415  default:
-
5416  {
-
5417  m_it.primitive_iterator.set_begin();
-
5418  break;
-
5419  }
-
5420  }
-
5421  }
-
5422 
-
5424  void set_end()
-
5425  {
-
5426  switch (m_object->m_type)
-
5427  {
- -
5429  {
-
5430  m_it.object_iterator = m_object->m_value.object->end();
-
5431  break;
-
5432  }
-
5433 
- -
5435  {
-
5436  m_it.array_iterator = m_object->m_value.array->end();
-
5437  break;
-
5438  }
-
5439 
-
5440  default:
-
5441  {
-
5442  m_it.primitive_iterator.set_end();
-
5443  break;
-
5444  }
-
5445  }
-
5446  }
-
5447 
-
5448  public:
- -
5451  {
-
5452  switch (m_object->m_type)
-
5453  {
- -
5455  {
-
5456  return m_it.object_iterator->second;
-
5457  }
-
5458 
- -
5460  {
-
5461  return *m_it.array_iterator;
-
5462  }
-
5463 
- -
5465  {
-
5466  throw std::out_of_range("cannot get value");
-
5467  }
-
5468 
-
5469  default:
-
5470  {
-
5471  if (m_it.primitive_iterator.is_begin())
-
5472  {
-
5473  return *m_object;
-
5474  }
-
5475  else
+
5267  difference_type m_it = std::numeric_limits<std::ptrdiff_t>::denorm_min();
+
5268  };
+
5269 
+
5277  struct internal_iterator
+
5278  {
+
5280  typename object_t::iterator object_iterator;
+
5282  typename array_t::iterator array_iterator;
+
5284  primitive_iterator_t primitive_iterator;
+
5285 
+
5287  internal_iterator()
+
5288  : object_iterator(), array_iterator(), primitive_iterator()
+
5289  {}
+
5290  };
+
5291 
+
5292  public:
+
5306  class const_iterator : public std::iterator<std::random_access_iterator_tag, const basic_json>
+
5307  {
+
5309  friend class basic_json;
+
5310 
+
5311  public:
+ + + + +
5321  using iterator_category = std::bidirectional_iterator_tag;
+
5322 
+
5324  const_iterator() = default;
+
5325 
+
5327  const_iterator(pointer object) : m_object(object)
+
5328  {
+
5329  switch (m_object->m_type)
+
5330  {
+ +
5332  {
+
5333  m_it.object_iterator = typename object_t::iterator();
+
5334  break;
+
5335  }
+
5336 
+ +
5338  {
+
5339  m_it.array_iterator = typename array_t::iterator();
+
5340  break;
+
5341  }
+
5342 
+
5343  default:
+
5344  {
+
5345  m_it.primitive_iterator = primitive_iterator_t();
+
5346  break;
+
5347  }
+
5348  }
+
5349  }
+
5350 
+
5352  const_iterator(const iterator& other) : m_object(other.m_object)
+
5353  {
+
5354  switch (m_object->m_type)
+
5355  {
+ +
5357  {
+
5358  m_it.object_iterator = other.m_it.object_iterator;
+
5359  break;
+
5360  }
+
5361 
+ +
5363  {
+
5364  m_it.array_iterator = other.m_it.array_iterator;
+
5365  break;
+
5366  }
+
5367 
+
5368  default:
+
5369  {
+
5370  m_it.primitive_iterator = other.m_it.primitive_iterator;
+
5371  break;
+
5372  }
+
5373  }
+
5374  }
+
5375 
+
5377  const_iterator(const const_iterator& other) noexcept
+
5378  : m_object(other.m_object), m_it(other.m_it)
+
5379  {}
+
5380 
+ +
5383  std::is_nothrow_move_constructible<pointer>::value and
+
5384  std::is_nothrow_move_assignable<pointer>::value and
+
5385  std::is_nothrow_move_constructible<internal_iterator>::value and
+
5386  std::is_nothrow_move_assignable<internal_iterator>::value
+
5387  )
+
5388  {
+
5389  std::swap(m_object, other.m_object);
+
5390  std::swap(m_it, other.m_it);
+
5391  return *this;
+
5392  }
+
5393 
+
5394  private:
+
5396  void set_begin()
+
5397  {
+
5398  switch (m_object->m_type)
+
5399  {
+ +
5401  {
+
5402  m_it.object_iterator = m_object->m_value.object->begin();
+
5403  break;
+
5404  }
+
5405 
+ +
5407  {
+
5408  m_it.array_iterator = m_object->m_value.array->begin();
+
5409  break;
+
5410  }
+
5411 
+ +
5413  {
+
5414  // set to end so begin()==end() is true: null is empty
+
5415  m_it.primitive_iterator.set_end();
+
5416  break;
+
5417  }
+
5418 
+
5419  default:
+
5420  {
+
5421  m_it.primitive_iterator.set_begin();
+
5422  break;
+
5423  }
+
5424  }
+
5425  }
+
5426 
+
5428  void set_end()
+
5429  {
+
5430  switch (m_object->m_type)
+
5431  {
+ +
5433  {
+
5434  m_it.object_iterator = m_object->m_value.object->end();
+
5435  break;
+
5436  }
+
5437 
+ +
5439  {
+
5440  m_it.array_iterator = m_object->m_value.array->end();
+
5441  break;
+
5442  }
+
5443 
+
5444  default:
+
5445  {
+
5446  m_it.primitive_iterator.set_end();
+
5447  break;
+
5448  }
+
5449  }
+
5450  }
+
5451 
+
5452  public:
+ +
5455  {
+
5456  switch (m_object->m_type)
+
5457  {
+ +
5459  {
+
5460  return m_it.object_iterator->second;
+
5461  }
+
5462 
+ +
5464  {
+
5465  return *m_it.array_iterator;
+
5466  }
+
5467 
+ +
5469  {
+
5470  throw std::out_of_range("cannot get value");
+
5471  }
+
5472 
+
5473  default:
+
5474  {
+
5475  if (m_it.primitive_iterator.is_begin())
5476  {
-
5477  throw std::out_of_range("cannot get value");
+
5477  return *m_object;
5478  }
-
5479  }
-
5480  }
-
5481  }
-
5482 
- -
5485  {
-
5486  switch (m_object->m_type)
-
5487  {
- -
5489  {
-
5490  return &(m_it.object_iterator->second);
-
5491  }
-
5492 
- -
5494  {
-
5495  return &*m_it.array_iterator;
-
5496  }
-
5497 
-
5498  default:
-
5499  {
-
5500  if (m_it.primitive_iterator.is_begin())
-
5501  {
-
5502  return m_object;
-
5503  }
-
5504  else
+
5479  else
+
5480  {
+
5481  throw std::out_of_range("cannot get value");
+
5482  }
+
5483  }
+
5484  }
+
5485  }
+
5486 
+ +
5489  {
+
5490  switch (m_object->m_type)
+
5491  {
+ +
5493  {
+
5494  return &(m_it.object_iterator->second);
+
5495  }
+
5496 
+ +
5498  {
+
5499  return &*m_it.array_iterator;
+
5500  }
+
5501 
+
5502  default:
+
5503  {
+
5504  if (m_it.primitive_iterator.is_begin())
5505  {
-
5506  throw std::out_of_range("cannot get value");
+
5506  return m_object;
5507  }
-
5508  }
-
5509  }
-
5510  }
-
5511 
- -
5514  {
-
5515  auto result = *this;
-
5516  ++(*this);
-
5517  return result;
-
5518  }
-
5519 
- -
5522  {
-
5523  switch (m_object->m_type)
-
5524  {
- -
5526  {
-
5527  ++m_it.object_iterator;
-
5528  break;
-
5529  }
-
5530 
- -
5532  {
-
5533  ++m_it.array_iterator;
-
5534  break;
-
5535  }
-
5536 
-
5537  default:
-
5538  {
-
5539  ++m_it.primitive_iterator;
-
5540  break;
-
5541  }
-
5542  }
-
5543 
-
5544  return *this;
-
5545  }
-
5546 
- -
5549  {
-
5550  auto result = *this;
-
5551  --(*this);
-
5552  return result;
-
5553  }
-
5554 
- -
5557  {
-
5558  switch (m_object->m_type)
-
5559  {
- -
5561  {
-
5562  --m_it.object_iterator;
-
5563  break;
-
5564  }
-
5565 
- -
5567  {
-
5568  --m_it.array_iterator;
-
5569  break;
-
5570  }
-
5571 
-
5572  default:
-
5573  {
-
5574  --m_it.primitive_iterator;
-
5575  break;
-
5576  }
-
5577  }
-
5578 
-
5579  return *this;
-
5580  }
-
5581 
-
5583  bool operator==(const const_iterator& other) const
-
5584  {
-
5585  // if objects are not the same, the comparison is undefined
-
5586  if (m_object != other.m_object)
-
5587  {
-
5588  throw std::domain_error("cannot compare iterators of different containers");
-
5589  }
-
5590 
-
5591  switch (m_object->m_type)
-
5592  {
- -
5594  {
-
5595  return (m_it.object_iterator == other.m_it.object_iterator);
-
5596  }
-
5597 
- -
5599  {
-
5600  return (m_it.array_iterator == other.m_it.array_iterator);
-
5601  }
-
5602 
-
5603  default:
-
5604  {
-
5605  return (m_it.primitive_iterator == other.m_it.primitive_iterator);
-
5606  }
-
5607  }
-
5608  }
-
5609 
-
5611  bool operator!=(const const_iterator& other) const
-
5612  {
-
5613  return not operator==(other);
-
5614  }
-
5615 
-
5617  bool operator<(const const_iterator& other) const
-
5618  {
-
5619  // if objects are not the same, the comparison is undefined
-
5620  if (m_object != other.m_object)
-
5621  {
-
5622  throw std::domain_error("cannot compare iterators of different containers");
-
5623  }
-
5624 
-
5625  switch (m_object->m_type)
-
5626  {
- -
5628  {
-
5629  throw std::domain_error("cannot use operator< for object iterators");
-
5630  }
-
5631 
- -
5633  {
-
5634  return (m_it.array_iterator < other.m_it.array_iterator);
-
5635  }
-
5636 
-
5637  default:
-
5638  {
-
5639  return (m_it.primitive_iterator < other.m_it.primitive_iterator);
-
5640  }
-
5641  }
-
5642  }
-
5643 
-
5645  bool operator<=(const const_iterator& other) const
-
5646  {
-
5647  return not other.operator < (*this);
-
5648  }
-
5649 
-
5651  bool operator>(const const_iterator& other) const
-
5652  {
-
5653  return not operator<=(other);
-
5654  }
-
5655 
-
5657  bool operator>=(const const_iterator& other) const
-
5658  {
-
5659  return not operator<(other);
-
5660  }
-
5661 
- -
5664  {
-
5665  switch (m_object->m_type)
-
5666  {
- -
5668  {
-
5669  throw std::domain_error("cannot use operator+= for object iterators");
-
5670  }
-
5671 
- -
5673  {
-
5674  m_it.array_iterator += i;
-
5675  break;
-
5676  }
-
5677 
-
5678  default:
-
5679  {
-
5680  m_it.primitive_iterator += i;
-
5681  break;
-
5682  }
-
5683  }
-
5684 
-
5685  return *this;
-
5686  }
-
5687 
- -
5690  {
-
5691  return operator+=(-i);
-
5692  }
-
5693 
- -
5696  {
-
5697  auto result = *this;
-
5698  result += i;
-
5699  return result;
-
5700  }
-
5701 
- -
5704  {
-
5705  auto result = *this;
-
5706  result -= i;
-
5707  return result;
-
5708  }
-
5709 
- -
5712  {
-
5713  switch (m_object->m_type)
-
5714  {
- -
5716  {
-
5717  throw std::domain_error("cannot use operator- for object iterators");
-
5718  }
-
5719 
- -
5721  {
-
5722  return m_it.array_iterator - other.m_it.array_iterator;
-
5723  }
-
5724 
-
5725  default:
-
5726  {
-
5727  return m_it.primitive_iterator - other.m_it.primitive_iterator;
-
5728  }
-
5729  }
-
5730  }
-
5731 
- -
5734  {
-
5735  switch (m_object->m_type)
-
5736  {
- -
5738  {
-
5739  throw std::domain_error("cannot use operator[] for object iterators");
-
5740  }
-
5741 
- -
5743  {
-
5744  return *(m_it.array_iterator + n);
-
5745  }
-
5746 
- -
5748  {
-
5749  throw std::out_of_range("cannot get value");
-
5750  }
-
5751 
-
5752  default:
-
5753  {
-
5754  if (m_it.primitive_iterator == -n)
-
5755  {
-
5756  return *m_object;
-
5757  }
-
5758  else
+
5508  else
+
5509  {
+
5510  throw std::out_of_range("cannot get value");
+
5511  }
+
5512  }
+
5513  }
+
5514  }
+
5515 
+ +
5518  {
+
5519  auto result = *this;
+
5520  ++(*this);
+
5521  return result;
+
5522  }
+
5523 
+ +
5526  {
+
5527  switch (m_object->m_type)
+
5528  {
+ +
5530  {
+
5531  ++m_it.object_iterator;
+
5532  break;
+
5533  }
+
5534 
+ +
5536  {
+
5537  ++m_it.array_iterator;
+
5538  break;
+
5539  }
+
5540 
+
5541  default:
+
5542  {
+
5543  ++m_it.primitive_iterator;
+
5544  break;
+
5545  }
+
5546  }
+
5547 
+
5548  return *this;
+
5549  }
+
5550 
+ +
5553  {
+
5554  auto result = *this;
+
5555  --(*this);
+
5556  return result;
+
5557  }
+
5558 
+ +
5561  {
+
5562  switch (m_object->m_type)
+
5563  {
+ +
5565  {
+
5566  --m_it.object_iterator;
+
5567  break;
+
5568  }
+
5569 
+ +
5571  {
+
5572  --m_it.array_iterator;
+
5573  break;
+
5574  }
+
5575 
+
5576  default:
+
5577  {
+
5578  --m_it.primitive_iterator;
+
5579  break;
+
5580  }
+
5581  }
+
5582 
+
5583  return *this;
+
5584  }
+
5585 
+
5587  bool operator==(const const_iterator& other) const
+
5588  {
+
5589  // if objects are not the same, the comparison is undefined
+
5590  if (m_object != other.m_object)
+
5591  {
+
5592  throw std::domain_error("cannot compare iterators of different containers");
+
5593  }
+
5594 
+
5595  switch (m_object->m_type)
+
5596  {
+ +
5598  {
+
5599  return (m_it.object_iterator == other.m_it.object_iterator);
+
5600  }
+
5601 
+ +
5603  {
+
5604  return (m_it.array_iterator == other.m_it.array_iterator);
+
5605  }
+
5606 
+
5607  default:
+
5608  {
+
5609  return (m_it.primitive_iterator == other.m_it.primitive_iterator);
+
5610  }
+
5611  }
+
5612  }
+
5613 
+
5615  bool operator!=(const const_iterator& other) const
+
5616  {
+
5617  return not operator==(other);
+
5618  }
+
5619 
+
5621  bool operator<(const const_iterator& other) const
+
5622  {
+
5623  // if objects are not the same, the comparison is undefined
+
5624  if (m_object != other.m_object)
+
5625  {
+
5626  throw std::domain_error("cannot compare iterators of different containers");
+
5627  }
+
5628 
+
5629  switch (m_object->m_type)
+
5630  {
+ +
5632  {
+
5633  throw std::domain_error("cannot use operator< for object iterators");
+
5634  }
+
5635 
+ +
5637  {
+
5638  return (m_it.array_iterator < other.m_it.array_iterator);
+
5639  }
+
5640 
+
5641  default:
+
5642  {
+
5643  return (m_it.primitive_iterator < other.m_it.primitive_iterator);
+
5644  }
+
5645  }
+
5646  }
+
5647 
+
5649  bool operator<=(const const_iterator& other) const
+
5650  {
+
5651  return not other.operator < (*this);
+
5652  }
+
5653 
+
5655  bool operator>(const const_iterator& other) const
+
5656  {
+
5657  return not operator<=(other);
+
5658  }
+
5659 
+
5661  bool operator>=(const const_iterator& other) const
+
5662  {
+
5663  return not operator<(other);
+
5664  }
+
5665 
+ +
5668  {
+
5669  switch (m_object->m_type)
+
5670  {
+ +
5672  {
+
5673  throw std::domain_error("cannot use operator+= for object iterators");
+
5674  }
+
5675 
+ +
5677  {
+
5678  m_it.array_iterator += i;
+
5679  break;
+
5680  }
+
5681 
+
5682  default:
+
5683  {
+
5684  m_it.primitive_iterator += i;
+
5685  break;
+
5686  }
+
5687  }
+
5688 
+
5689  return *this;
+
5690  }
+
5691 
+ +
5694  {
+
5695  return operator+=(-i);
+
5696  }
+
5697 
+ +
5700  {
+
5701  auto result = *this;
+
5702  result += i;
+
5703  return result;
+
5704  }
+
5705 
+ +
5708  {
+
5709  auto result = *this;
+
5710  result -= i;
+
5711  return result;
+
5712  }
+
5713 
+ +
5716  {
+
5717  switch (m_object->m_type)
+
5718  {
+ +
5720  {
+
5721  throw std::domain_error("cannot use operator- for object iterators");
+
5722  }
+
5723 
+ +
5725  {
+
5726  return m_it.array_iterator - other.m_it.array_iterator;
+
5727  }
+
5728 
+
5729  default:
+
5730  {
+
5731  return m_it.primitive_iterator - other.m_it.primitive_iterator;
+
5732  }
+
5733  }
+
5734  }
+
5735 
+ +
5738  {
+
5739  switch (m_object->m_type)
+
5740  {
+ +
5742  {
+
5743  throw std::domain_error("cannot use operator[] for object iterators");
+
5744  }
+
5745 
+ +
5747  {
+
5748  return *(m_it.array_iterator + n);
+
5749  }
+
5750 
+ +
5752  {
+
5753  throw std::out_of_range("cannot get value");
+
5754  }
+
5755 
+
5756  default:
+
5757  {
+
5758  if (m_it.primitive_iterator == -n)
5759  {
-
5760  throw std::out_of_range("cannot get value");
+
5760  return *m_object;
5761  }
-
5762  }
-
5763  }
-
5764  }
-
5765 
-
5767  typename object_t::key_type key() const
-
5768  {
-
5769  if (m_object->is_object())
-
5770  {
-
5771  return m_it.object_iterator->first;
-
5772  }
-
5773  else
+
5762  else
+
5763  {
+
5764  throw std::out_of_range("cannot get value");
+
5765  }
+
5766  }
+
5767  }
+
5768  }
+
5769 
+
5771  typename object_t::key_type key() const
+
5772  {
+
5773  if (m_object->is_object())
5774  {
-
5775  throw std::domain_error("cannot use key() for non-object iterators");
+
5775  return m_it.object_iterator->first;
5776  }
-
5777  }
-
5778 
- -
5781  {
-
5782  return operator*();
-
5783  }
-
5784 
-
5785  private:
-
5787  pointer m_object = nullptr;
-
5789  internal_iterator m_it = internal_iterator();
-
5790  };
-
5791 
-
5804  class iterator : public const_iterator
-
5805  {
-
5806  public:
- -
5808  using pointer = typename basic_json::pointer;
- -
5810 
-
5812  iterator() = default;
-
5813 
-
5815  iterator(pointer object) noexcept : base_iterator(object)
-
5816  {}
+
5777  else
+
5778  {
+
5779  throw std::domain_error("cannot use key() for non-object iterators");
+
5780  }
+
5781  }
+
5782 
+ +
5785  {
+
5786  return operator*();
+
5787  }
+
5788 
+
5789  private:
+
5791  pointer m_object = nullptr;
+
5793  internal_iterator m_it = internal_iterator();
+
5794  };
+
5795 
+
5808  class iterator : public const_iterator
+
5809  {
+
5810  public:
+ +
5812  using pointer = typename basic_json::pointer;
+ +
5814 
+
5816  iterator() = default;
5817 
-
5819  iterator(const iterator& other) noexcept
-
5820  : base_iterator(other)
-
5821  {}
-
5822 
-
5824  iterator& operator=(iterator other) noexcept(
-
5825  std::is_nothrow_move_constructible<pointer>::value and
-
5826  std::is_nothrow_move_assignable<pointer>::value and
-
5827  std::is_nothrow_move_constructible<internal_iterator>::value and
-
5828  std::is_nothrow_move_assignable<internal_iterator>::value
-
5829  )
-
5830  {
-
5831  base_iterator::operator=(other);
-
5832  return *this;
-
5833  }
-
5834 
- -
5837  {
-
5838  return const_cast<reference>(base_iterator::operator*());
-
5839  }
-
5840 
- -
5843  {
-
5844  return const_cast<pointer>(base_iterator::operator->());
-
5845  }
-
5846 
- -
5849  {
-
5850  iterator result = *this;
- -
5852  return result;
-
5853  }
-
5854 
- -
5857  {
- -
5859  return *this;
-
5860  }
-
5861 
- -
5864  {
-
5865  iterator result = *this;
- -
5867  return result;
-
5868  }
-
5869 
- -
5872  {
- -
5874  return *this;
-
5875  }
-
5876 
- -
5879  {
- -
5881  return *this;
-
5882  }
-
5883 
- -
5886  {
- -
5888  return *this;
-
5889  }
-
5890 
- -
5893  {
-
5894  auto result = *this;
-
5895  result += i;
-
5896  return result;
-
5897  }
-
5898 
- -
5901  {
-
5902  auto result = *this;
-
5903  result -= i;
-
5904  return result;
-
5905  }
-
5906 
-
5907  difference_type operator-(const iterator& other) const
-
5908  {
-
5909  return base_iterator::operator-(other);
-
5910  }
-
5911 
- -
5914  {
-
5915  return const_cast<reference>(base_iterator::operator[](n));
-
5916  }
-
5917 
- -
5920  {
-
5921  return const_cast<reference>(base_iterator::value());
-
5922  }
-
5923  };
-
5924 
-
5942  template<typename Base>
-
5943  class json_reverse_iterator : public std::reverse_iterator<Base>
-
5944  {
-
5945  public:
-
5947  using base_iterator = std::reverse_iterator<Base>;
-
5949  using reference = typename Base::reference;
-
5950 
-
5952  json_reverse_iterator(const typename base_iterator::iterator_type& it)
-
5953  : base_iterator(it) {}
+
5819  iterator(pointer object) noexcept : base_iterator(object)
+
5820  {}
+
5821 
+
5823  iterator(const iterator& other) noexcept
+
5824  : base_iterator(other)
+
5825  {}
+
5826 
+
5828  iterator& operator=(iterator other) noexcept(
+
5829  std::is_nothrow_move_constructible<pointer>::value and
+
5830  std::is_nothrow_move_assignable<pointer>::value and
+
5831  std::is_nothrow_move_constructible<internal_iterator>::value and
+
5832  std::is_nothrow_move_assignable<internal_iterator>::value
+
5833  )
+
5834  {
+
5835  base_iterator::operator=(other);
+
5836  return *this;
+
5837  }
+
5838 
+ +
5841  {
+
5842  return const_cast<reference>(base_iterator::operator*());
+
5843  }
+
5844 
+ +
5847  {
+
5848  return const_cast<pointer>(base_iterator::operator->());
+
5849  }
+
5850 
+ +
5853  {
+
5854  iterator result = *this;
+ +
5856  return result;
+
5857  }
+
5858 
+ +
5861  {
+ +
5863  return *this;
+
5864  }
+
5865 
+ +
5868  {
+
5869  iterator result = *this;
+ +
5871  return result;
+
5872  }
+
5873 
+ +
5876  {
+ +
5878  return *this;
+
5879  }
+
5880 
+ +
5883  {
+ +
5885  return *this;
+
5886  }
+
5887 
+ +
5890  {
+ +
5892  return *this;
+
5893  }
+
5894 
+ +
5897  {
+
5898  auto result = *this;
+
5899  result += i;
+
5900  return result;
+
5901  }
+
5902 
+ +
5905  {
+
5906  auto result = *this;
+
5907  result -= i;
+
5908  return result;
+
5909  }
+
5910 
+
5911  difference_type operator-(const iterator& other) const
+
5912  {
+
5913  return base_iterator::operator-(other);
+
5914  }
+
5915 
+ +
5918  {
+
5919  return const_cast<reference>(base_iterator::operator[](n));
+
5920  }
+
5921 
+ +
5924  {
+
5925  return const_cast<reference>(base_iterator::value());
+
5926  }
+
5927  };
+
5928 
+
5946  template<typename Base>
+
5947  class json_reverse_iterator : public std::reverse_iterator<Base>
+
5948  {
+
5949  public:
+
5951  using base_iterator = std::reverse_iterator<Base>;
+
5953  using reference = typename Base::reference;
5954 
- -
5957 
- -
5960  {
-
5961  return base_iterator::operator++(1);
-
5962  }
-
5963 
- -
5966  {
-
5967  base_iterator::operator++();
-
5968  return *this;
-
5969  }
-
5970 
- -
5973  {
-
5974  return base_iterator::operator--(1);
-
5975  }
-
5976 
- -
5979  {
-
5980  base_iterator::operator--();
-
5981  return *this;
-
5982  }
-
5983 
- -
5986  {
-
5987  base_iterator::operator+=(i);
-
5988  return *this;
-
5989  }
-
5990 
- -
5993  {
-
5994  auto result = *this;
-
5995  result += i;
-
5996  return result;
-
5997  }
-
5998 
- -
6001  {
-
6002  auto result = *this;
-
6003  result -= i;
-
6004  return result;
-
6005  }
-
6006 
- -
6009  {
-
6010  return this->base() - other.base();
-
6011  }
-
6012 
- -
6015  {
-
6016  return *(this->operator+(n));
-
6017  }
-
6018 
-
6020  typename object_t::key_type key() const
-
6021  {
-
6022  auto it = --this->base();
-
6023  return it.key();
-
6024  }
-
6025 
- -
6028  {
-
6029  auto it = --this->base();
-
6030  return it.operator * ();
-
6031  }
-
6032  };
-
6033 
- -
6042  {
-
6043  private:
-
6045  basic_json& container;
-
6047  using json_iterator = decltype(std::begin(container));
-
6048 
-
6050  class iterator_wrapper_internal
-
6051  {
-
6052  private:
-
6054  json_iterator anchor;
-
6056  size_t array_index = 0;
-
6057 
-
6058  public:
-
6060  iterator_wrapper_internal(json_iterator i) : anchor(i)
-
6061  {}
-
6062 
-
6064  iterator_wrapper_internal& operator*()
-
6065  {
-
6066  return *this;
-
6067  }
-
6068 
-
6070  iterator_wrapper_internal& operator++()
-
6071  {
-
6072  ++anchor;
-
6073  ++array_index;
-
6074 
-
6075  return *this;
-
6076  }
-
6077 
-
6079  bool operator!= (const iterator_wrapper_internal& o)
-
6080  {
-
6081  return anchor != o.anchor;
-
6082  }
-
6083 
-
6085  typename basic_json::string_t key() const
-
6086  {
-
6087  switch (anchor.m_object->type())
-
6088  {
-
6089  // use integer array index as key
-
6090  case value_t::array:
-
6091  {
-
6092  return std::to_string(array_index);
-
6093  }
-
6094 
-
6095  // use key from the object
-
6096  case value_t::object:
-
6097  {
-
6098  return anchor.key();
-
6099  }
-
6100 
-
6101  // use an empty key for all primitive types
-
6102  default:
-
6103  {
-
6104  return "";
-
6105  }
-
6106  }
-
6107  }
-
6108 
-
6110  typename json_iterator::reference value() const
-
6111  {
-
6112  return anchor.value();
-
6113  }
-
6114  };
-
6115 
-
6116  public:
-
6118  iterator_wrapper(basic_json& cont)
-
6119  : container(cont)
-
6120  {}
-
6121 
-
6123  iterator_wrapper_internal begin()
-
6124  {
-
6125  return iterator_wrapper_internal(container.begin());
-
6126  }
-
6127 
-
6129  iterator_wrapper_internal end()
-
6130  {
-
6131  return iterator_wrapper_internal(container.end());
-
6132  }
-
6133  };
-
6134 
-
6135  private:
-
6137  // lexer and parser //
-
6139 
-
6147  class lexer
-
6148  {
-
6149  public:
-
6151  enum class token_type
-
6152  {
-
6153  uninitialized,
-
6154  literal_true,
-
6155  literal_false,
-
6156  literal_null,
-
6157  value_string,
-
6158  value_number,
-
6159  begin_array,
-
6160  begin_object,
-
6161  end_array,
-
6162  end_object,
-
6163  name_separator,
-
6164  value_separator,
-
6165  parse_error,
-
6166  end_of_input
-
6167  };
-
6168 
-
6170  using lexer_char_t = unsigned char;
-
6171 
-
6173  explicit lexer(const string_t& s) noexcept
-
6174  : m_stream(nullptr), m_buffer(s)
-
6175  {
-
6176  m_content = reinterpret_cast<const lexer_char_t*>(s.c_str());
-
6177  m_start = m_cursor = m_content;
-
6178  m_limit = m_content + s.size();
-
6179  }
-
6180  explicit lexer(std::istream* s) noexcept
-
6181  : m_stream(s), m_buffer()
-
6182  {
-
6183  getline(*m_stream, m_buffer);
-
6184  m_content = reinterpret_cast<const lexer_char_t*>(m_buffer.c_str());
-
6185  m_start = m_cursor = m_content;
-
6186  m_limit = m_content + m_buffer.size();
-
6187  }
-
6188 
-
6190  lexer() = default;
-
6191 
-
6192  // switch of unwanted functions
-
6193  lexer(const lexer&) = delete;
-
6194  lexer operator=(const lexer&) = delete;
+
5956  json_reverse_iterator(const typename base_iterator::iterator_type& it)
+
5957  : base_iterator(it) {}
+
5958 
+ +
5961 
+ +
5964  {
+
5965  return base_iterator::operator++(1);
+
5966  }
+
5967 
+ +
5970  {
+
5971  base_iterator::operator++();
+
5972  return *this;
+
5973  }
+
5974 
+ +
5977  {
+
5978  return base_iterator::operator--(1);
+
5979  }
+
5980 
+ +
5983  {
+
5984  base_iterator::operator--();
+
5985  return *this;
+
5986  }
+
5987 
+ +
5990  {
+
5991  base_iterator::operator+=(i);
+
5992  return *this;
+
5993  }
+
5994 
+ +
5997  {
+
5998  auto result = *this;
+
5999  result += i;
+
6000  return result;
+
6001  }
+
6002 
+ +
6005  {
+
6006  auto result = *this;
+
6007  result -= i;
+
6008  return result;
+
6009  }
+
6010 
+ +
6013  {
+
6014  return this->base() - other.base();
+
6015  }
+
6016 
+ +
6019  {
+
6020  return *(this->operator+(n));
+
6021  }
+
6022 
+
6024  typename object_t::key_type key() const
+
6025  {
+
6026  auto it = --this->base();
+
6027  return it.key();
+
6028  }
+
6029 
+ +
6032  {
+
6033  auto it = --this->base();
+
6034  return it.operator * ();
+
6035  }
+
6036  };
+
6037 
+ +
6046  {
+
6047  private:
+
6049  basic_json& container;
+
6051  using json_iterator = decltype(std::begin(container));
+
6052 
+
6054  class iterator_wrapper_internal
+
6055  {
+
6056  private:
+
6058  json_iterator anchor;
+
6060  size_t array_index = 0;
+
6061 
+
6062  public:
+
6064  iterator_wrapper_internal(json_iterator i) : anchor(i)
+
6065  {}
+
6066 
+
6068  iterator_wrapper_internal& operator*()
+
6069  {
+
6070  return *this;
+
6071  }
+
6072 
+
6074  iterator_wrapper_internal& operator++()
+
6075  {
+
6076  ++anchor;
+
6077  ++array_index;
+
6078 
+
6079  return *this;
+
6080  }
+
6081 
+
6083  bool operator!= (const iterator_wrapper_internal& o)
+
6084  {
+
6085  return anchor != o.anchor;
+
6086  }
+
6087 
+
6089  typename basic_json::string_t key() const
+
6090  {
+
6091  switch (anchor.m_object->type())
+
6092  {
+
6093  // use integer array index as key
+
6094  case value_t::array:
+
6095  {
+
6096  return std::to_string(array_index);
+
6097  }
+
6098 
+
6099  // use key from the object
+
6100  case value_t::object:
+
6101  {
+
6102  return anchor.key();
+
6103  }
+
6104 
+
6105  // use an empty key for all primitive types
+
6106  default:
+
6107  {
+
6108  return "";
+
6109  }
+
6110  }
+
6111  }
+
6112 
+
6114  typename json_iterator::reference value() const
+
6115  {
+
6116  return anchor.value();
+
6117  }
+
6118  };
+
6119 
+
6120  public:
+
6122  iterator_wrapper(basic_json& cont)
+
6123  : container(cont)
+
6124  {}
+
6125 
+
6127  iterator_wrapper_internal begin()
+
6128  {
+
6129  return iterator_wrapper_internal(container.begin());
+
6130  }
+
6131 
+
6133  iterator_wrapper_internal end()
+
6134  {
+
6135  return iterator_wrapper_internal(container.end());
+
6136  }
+
6137  };
+
6138 
+
6139  private:
+
6141  // lexer and parser //
+
6143 
+
6151  class lexer
+
6152  {
+
6153  public:
+
6155  enum class token_type
+
6156  {
+
6157  uninitialized,
+
6158  literal_true,
+
6159  literal_false,
+
6160  literal_null,
+
6161  value_string,
+
6162  value_number,
+
6163  begin_array,
+
6164  begin_object,
+
6165  end_array,
+
6166  end_object,
+
6167  name_separator,
+
6168  value_separator,
+
6169  parse_error,
+
6170  end_of_input
+
6171  };
+
6172 
+
6174  using lexer_char_t = unsigned char;
+
6175 
+
6177  explicit lexer(const string_t& s) noexcept
+
6178  : m_stream(nullptr), m_buffer(s)
+
6179  {
+
6180  m_content = reinterpret_cast<const lexer_char_t*>(s.c_str());
+
6181  m_start = m_cursor = m_content;
+
6182  m_limit = m_content + s.size();
+
6183  }
+
6184  explicit lexer(std::istream* s) noexcept
+
6185  : m_stream(s), m_buffer()
+
6186  {
+
6187  getline(*m_stream, m_buffer);
+
6188  m_content = reinterpret_cast<const lexer_char_t*>(m_buffer.c_str());
+
6189  m_start = m_cursor = m_content;
+
6190  m_limit = m_content + m_buffer.size();
+
6191  }
+
6192 
+
6194  lexer() = default;
6195 
-
6207  static string_t to_unicode(const std::size_t codepoint1,
-
6208  const std::size_t codepoint2 = 0)
-
6209  {
-
6210  string_t result;
-
6211 
-
6212  // calculate the codepoint from the given code points
-
6213  std::size_t codepoint = codepoint1;
-
6214 
-
6215  // check if codepoint1 is a high surrogate
-
6216  if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF)
-
6217  {
-
6218  // check if codepoint2 is a low surrogate
-
6219  if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF)
-
6220  {
-
6221  codepoint =
-
6222  // high surrogate occupies the most significant 22 bits
-
6223  (codepoint1 << 10)
-
6224  // low surrogate occupies the least significant 15 bits
-
6225  + codepoint2
-
6226  // there is still the 0xD800, 0xDC00 and 0x10000 noise
-
6227  // in the result so we have to substract with:
-
6228  // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00
-
6229  - 0x35FDC00;
-
6230  }
-
6231  else
-
6232  {
-
6233  throw std::invalid_argument("missing or wrong low surrogate");
+
6196  // switch of unwanted functions
+
6197  lexer(const lexer&) = delete;
+
6198  lexer operator=(const lexer&) = delete;
+
6199 
+
6211  static string_t to_unicode(const std::size_t codepoint1,
+
6212  const std::size_t codepoint2 = 0)
+
6213  {
+
6214  string_t result;
+
6215 
+
6216  // calculate the codepoint from the given code points
+
6217  std::size_t codepoint = codepoint1;
+
6218 
+
6219  // check if codepoint1 is a high surrogate
+
6220  if (codepoint1 >= 0xD800 and codepoint1 <= 0xDBFF)
+
6221  {
+
6222  // check if codepoint2 is a low surrogate
+
6223  if (codepoint2 >= 0xDC00 and codepoint2 <= 0xDFFF)
+
6224  {
+
6225  codepoint =
+
6226  // high surrogate occupies the most significant 22 bits
+
6227  (codepoint1 << 10)
+
6228  // low surrogate occupies the least significant 15 bits
+
6229  + codepoint2
+
6230  // there is still the 0xD800, 0xDC00 and 0x10000 noise
+
6231  // in the result so we have to substract with:
+
6232  // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00
+
6233  - 0x35FDC00;
6234  }
-
6235  }
-
6236 
-
6237  if (codepoint < 0x80)
-
6238  {
-
6239  // 1-byte characters: 0xxxxxxx (ASCII)
-
6240  result.append(1, static_cast<typename string_t::value_type>(codepoint));
-
6241  }
-
6242  else if (codepoint <= 0x7ff)
-
6243  {
-
6244  // 2-byte characters: 110xxxxx 10xxxxxx
-
6245  result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F)));
-
6246  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
-
6247  }
-
6248  else if (codepoint <= 0xffff)
-
6249  {
-
6250  // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx
-
6251  result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F)));
-
6252  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F)));
-
6253  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
-
6254  }
-
6255  else if (codepoint <= 0x10ffff)
-
6256  {
-
6257  // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-
6258  result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07)));
-
6259  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F)));
-
6260  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F)));
-
6261  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
-
6262  }
-
6263  else
-
6264  {
-
6265  throw std::out_of_range("code points above 0x10FFFF are invalid");
+
6235  else
+
6236  {
+
6237  throw std::invalid_argument("missing or wrong low surrogate");
+
6238  }
+
6239  }
+
6240 
+
6241  if (codepoint < 0x80)
+
6242  {
+
6243  // 1-byte characters: 0xxxxxxx (ASCII)
+
6244  result.append(1, static_cast<typename string_t::value_type>(codepoint));
+
6245  }
+
6246  else if (codepoint <= 0x7ff)
+
6247  {
+
6248  // 2-byte characters: 110xxxxx 10xxxxxx
+
6249  result.append(1, static_cast<typename string_t::value_type>(0xC0 | ((codepoint >> 6) & 0x1F)));
+
6250  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
+
6251  }
+
6252  else if (codepoint <= 0xffff)
+
6253  {
+
6254  // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx
+
6255  result.append(1, static_cast<typename string_t::value_type>(0xE0 | ((codepoint >> 12) & 0x0F)));
+
6256  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F)));
+
6257  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
+
6258  }
+
6259  else if (codepoint <= 0x10ffff)
+
6260  {
+
6261  // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+
6262  result.append(1, static_cast<typename string_t::value_type>(0xF0 | ((codepoint >> 18) & 0x07)));
+
6263  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 12) & 0x3F)));
+
6264  result.append(1, static_cast<typename string_t::value_type>(0x80 | ((codepoint >> 6) & 0x3F)));
+
6265  result.append(1, static_cast<typename string_t::value_type>(0x80 | (codepoint & 0x3F)));
6266  }
-
6267 
-
6268  return result;
-
6269  }
-
6270 
-
6272  static std::string token_type_name(token_type t)
-
6273  {
-
6274  switch (t)
-
6275  {
-
6276  case token_type::uninitialized:
-
6277  return "<uninitialized>";
-
6278  case token_type::literal_true:
-
6279  return "true literal";
-
6280  case token_type::literal_false:
-
6281  return "false literal";
-
6282  case token_type::literal_null:
-
6283  return "null literal";
-
6284  case token_type::value_string:
-
6285  return "string literal";
-
6286  case token_type::value_number:
-
6287  return "number literal";
-
6288  case token_type::begin_array:
-
6289  return "[";
-
6290  case token_type::begin_object:
-
6291  return "{";
-
6292  case token_type::end_array:
-
6293  return "]";
-
6294  case token_type::end_object:
-
6295  return "}";
-
6296  case token_type::name_separator:
-
6297  return ":";
-
6298  case token_type::value_separator:
-
6299  return ",";
-
6300  case token_type::parse_error:
-
6301  return "<parse error>";
-
6302  case token_type::end_of_input:
-
6303  return "<end of input>";
-
6304  }
-
6305  }
-
6306 
-
6317  token_type scan() noexcept
-
6318  {
-
6319  // pointer for backtracking information
-
6320  m_marker = nullptr;
-
6321 
-
6322  // remember the begin of the token
-
6323  m_start = m_cursor;
-
6324 
-
6325 
-
6326  {
-
6327  lexer_char_t yych;
-
6328  unsigned int yyaccept = 0;
-
6329  static const unsigned char yybm[] =
-
6330  {
-
6331  0, 0, 0, 0, 0, 0, 0, 0,
-
6332  0, 32, 32, 0, 0, 32, 0, 0,
-
6333  64, 64, 64, 64, 64, 64, 64, 64,
-
6334  64, 64, 64, 64, 64, 64, 64, 64,
-
6335  96, 64, 0, 64, 64, 64, 64, 64,
-
6336  64, 64, 64, 64, 64, 64, 64, 64,
-
6337  192, 192, 192, 192, 192, 192, 192, 192,
-
6338  192, 192, 64, 64, 64, 64, 64, 64,
-
6339  64, 64, 64, 64, 64, 64, 64, 64,
-
6340  64, 64, 64, 64, 64, 64, 64, 64,
-
6341  64, 64, 64, 64, 64, 64, 64, 64,
-
6342  64, 64, 64, 64, 0, 64, 64, 64,
+
6267  else
+
6268  {
+
6269  throw std::out_of_range("code points above 0x10FFFF are invalid");
+
6270  }
+
6271 
+
6272  return result;
+
6273  }
+
6274 
+
6276  static std::string token_type_name(token_type t)
+
6277  {
+
6278  switch (t)
+
6279  {
+
6280  case token_type::uninitialized:
+
6281  return "<uninitialized>";
+
6282  case token_type::literal_true:
+
6283  return "true literal";
+
6284  case token_type::literal_false:
+
6285  return "false literal";
+
6286  case token_type::literal_null:
+
6287  return "null literal";
+
6288  case token_type::value_string:
+
6289  return "string literal";
+
6290  case token_type::value_number:
+
6291  return "number literal";
+
6292  case token_type::begin_array:
+
6293  return "[";
+
6294  case token_type::begin_object:
+
6295  return "{";
+
6296  case token_type::end_array:
+
6297  return "]";
+
6298  case token_type::end_object:
+
6299  return "}";
+
6300  case token_type::name_separator:
+
6301  return ":";
+
6302  case token_type::value_separator:
+
6303  return ",";
+
6304  case token_type::parse_error:
+
6305  return "<parse error>";
+
6306  case token_type::end_of_input:
+
6307  return "<end of input>";
+
6308  default:
+
6309  {
+
6310  // catch non-enum values
+
6311  return "unknown token"; // LCOV_EXCL_LINE
+
6312  }
+
6313  }
+
6314  }
+
6315 
+
6326  token_type scan() noexcept
+
6327  {
+
6328  // pointer for backtracking information
+
6329  m_marker = nullptr;
+
6330 
+
6331  // remember the begin of the token
+
6332  m_start = m_cursor;
+
6333 
+
6334 
+
6335  {
+
6336  lexer_char_t yych;
+
6337  unsigned int yyaccept = 0;
+
6338  static const unsigned char yybm[] =
+
6339  {
+
6340  0, 0, 0, 0, 0, 0, 0, 0,
+
6341  0, 32, 32, 0, 0, 32, 0, 0,
+
6342  64, 64, 64, 64, 64, 64, 64, 64,
6343  64, 64, 64, 64, 64, 64, 64, 64,
-
6344  64, 64, 64, 64, 64, 64, 64, 64,
+
6344  96, 64, 0, 64, 64, 64, 64, 64,
6345  64, 64, 64, 64, 64, 64, 64, 64,
-
6346  64, 64, 64, 64, 64, 64, 64, 64,
-
6347  64, 64, 64, 64, 64, 64, 64, 64,
+
6346  192, 192, 192, 192, 192, 192, 192, 192,
+
6347  192, 192, 64, 64, 64, 64, 64, 64,
6348  64, 64, 64, 64, 64, 64, 64, 64,
6349  64, 64, 64, 64, 64, 64, 64, 64,
6350  64, 64, 64, 64, 64, 64, 64, 64,
-
6351  64, 64, 64, 64, 64, 64, 64, 64,
+
6351  64, 64, 64, 64, 0, 64, 64, 64,
6352  64, 64, 64, 64, 64, 64, 64, 64,
6353  64, 64, 64, 64, 64, 64, 64, 64,
6354  64, 64, 64, 64, 64, 64, 64, 64,
@@ -3382,1453 +3380,1462 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
6360  64, 64, 64, 64, 64, 64, 64, 64,
6361  64, 64, 64, 64, 64, 64, 64, 64,
6362  64, 64, 64, 64, 64, 64, 64, 64,
-
6363  };
-
6364  if ((m_limit - m_cursor) < 5)
-
6365  {
-
6366  yyfill(); // LCOV_EXCL_LINE;
-
6367  }
-
6368  yych = *m_cursor;
-
6369  if (yych <= ':')
-
6370  {
-
6371  if (yych <= ' ')
-
6372  {
-
6373  if (yych <= '\n')
-
6374  {
-
6375  if (yych <= 0x00)
-
6376  {
-
6377  goto basic_json_parser_28;
-
6378  }
-
6379  if (yych <= 0x08)
-
6380  {
-
6381  goto basic_json_parser_30;
-
6382  }
-
6383  if (yych >= '\n')
-
6384  {
-
6385  goto basic_json_parser_4;
-
6386  }
-
6387  }
-
6388  else
-
6389  {
-
6390  if (yych == '\r')
-
6391  {
-
6392  goto basic_json_parser_2;
-
6393  }
-
6394  if (yych <= 0x1F)
-
6395  {
-
6396  goto basic_json_parser_30;
-
6397  }
-
6398  }
-
6399  }
-
6400  else
-
6401  {
-
6402  if (yych <= ',')
-
6403  {
-
6404  if (yych == '"')
-
6405  {
-
6406  goto basic_json_parser_27;
-
6407  }
-
6408  if (yych <= '+')
-
6409  {
-
6410  goto basic_json_parser_30;
-
6411  }
-
6412  goto basic_json_parser_16;
-
6413  }
-
6414  else
-
6415  {
-
6416  if (yych <= '/')
-
6417  {
-
6418  if (yych <= '-')
-
6419  {
-
6420  goto basic_json_parser_23;
-
6421  }
-
6422  goto basic_json_parser_30;
-
6423  }
-
6424  else
-
6425  {
-
6426  if (yych <= '0')
-
6427  {
-
6428  goto basic_json_parser_24;
-
6429  }
-
6430  if (yych <= '9')
-
6431  {
-
6432  goto basic_json_parser_26;
-
6433  }
-
6434  goto basic_json_parser_18;
-
6435  }
-
6436  }
-
6437  }
-
6438  }
-
6439  else
-
6440  {
-
6441  if (yych <= 'n')
-
6442  {
-
6443  if (yych <= ']')
-
6444  {
-
6445  if (yych == '[')
-
6446  {
-
6447  goto basic_json_parser_8;
-
6448  }
-
6449  if (yych <= '\\')
-
6450  {
-
6451  goto basic_json_parser_30;
-
6452  }
-
6453  goto basic_json_parser_10;
-
6454  }
-
6455  else
-
6456  {
-
6457  if (yych == 'f')
-
6458  {
-
6459  goto basic_json_parser_22;
-
6460  }
-
6461  if (yych <= 'm')
-
6462  {
-
6463  goto basic_json_parser_30;
-
6464  }
-
6465  goto basic_json_parser_20;
-
6466  }
-
6467  }
-
6468  else
-
6469  {
-
6470  if (yych <= '{')
-
6471  {
-
6472  if (yych == 't')
-
6473  {
-
6474  goto basic_json_parser_21;
-
6475  }
-
6476  if (yych <= 'z')
-
6477  {
-
6478  goto basic_json_parser_30;
-
6479  }
-
6480  goto basic_json_parser_12;
-
6481  }
-
6482  else
-
6483  {
-
6484  if (yych <= '}')
-
6485  {
-
6486  if (yych <= '|')
-
6487  {
-
6488  goto basic_json_parser_30;
-
6489  }
-
6490  goto basic_json_parser_14;
-
6491  }
-
6492  else
-
6493  {
-
6494  if (yych == 0xEF)
-
6495  {
-
6496  goto basic_json_parser_6;
-
6497  }
-
6498  goto basic_json_parser_30;
-
6499  }
-
6500  }
-
6501  }
-
6502  }
-
6503 basic_json_parser_2:
-
6504  ++m_cursor;
-
6505  yych = *m_cursor;
-
6506  goto basic_json_parser_5;
-
6507 basic_json_parser_3:
-
6508  {
-
6509  return scan();
-
6510  }
-
6511 basic_json_parser_4:
-
6512  ++m_cursor;
-
6513  if (m_limit <= m_cursor)
-
6514  {
-
6515  yyfill(); // LCOV_EXCL_LINE;
-
6516  }
-
6517  yych = *m_cursor;
-
6518 basic_json_parser_5:
-
6519  if (yybm[0 + yych] & 32)
-
6520  {
-
6521  goto basic_json_parser_4;
-
6522  }
-
6523  goto basic_json_parser_3;
-
6524 basic_json_parser_6:
-
6525  yyaccept = 0;
-
6526  yych = *(m_marker = ++m_cursor);
-
6527  if (yych == 0xBB)
-
6528  {
-
6529  goto basic_json_parser_64;
-
6530  }
-
6531 basic_json_parser_7:
-
6532  {
-
6533  return token_type::parse_error;
-
6534  }
-
6535 basic_json_parser_8:
-
6536  ++m_cursor;
+
6363  64, 64, 64, 64, 64, 64, 64, 64,
+
6364  64, 64, 64, 64, 64, 64, 64, 64,
+
6365  64, 64, 64, 64, 64, 64, 64, 64,
+
6366  64, 64, 64, 64, 64, 64, 64, 64,
+
6367  64, 64, 64, 64, 64, 64, 64, 64,
+
6368  64, 64, 64, 64, 64, 64, 64, 64,
+
6369  64, 64, 64, 64, 64, 64, 64, 64,
+
6370  64, 64, 64, 64, 64, 64, 64, 64,
+
6371  64, 64, 64, 64, 64, 64, 64, 64,
+
6372  };
+
6373  if ((m_limit - m_cursor) < 5)
+
6374  {
+
6375  yyfill(); // LCOV_EXCL_LINE;
+
6376  }
+
6377  yych = *m_cursor;
+
6378  if (yych <= ':')
+
6379  {
+
6380  if (yych <= ' ')
+
6381  {
+
6382  if (yych <= '\n')
+
6383  {
+
6384  if (yych <= 0x00)
+
6385  {
+
6386  goto basic_json_parser_28;
+
6387  }
+
6388  if (yych <= 0x08)
+
6389  {
+
6390  goto basic_json_parser_30;
+
6391  }
+
6392  if (yych >= '\n')
+
6393  {
+
6394  goto basic_json_parser_4;
+
6395  }
+
6396  }
+
6397  else
+
6398  {
+
6399  if (yych == '\r')
+
6400  {
+
6401  goto basic_json_parser_2;
+
6402  }
+
6403  if (yych <= 0x1F)
+
6404  {
+
6405  goto basic_json_parser_30;
+
6406  }
+
6407  }
+
6408  }
+
6409  else
+
6410  {
+
6411  if (yych <= ',')
+
6412  {
+
6413  if (yych == '"')
+
6414  {
+
6415  goto basic_json_parser_27;
+
6416  }
+
6417  if (yych <= '+')
+
6418  {
+
6419  goto basic_json_parser_30;
+
6420  }
+
6421  goto basic_json_parser_16;
+
6422  }
+
6423  else
+
6424  {
+
6425  if (yych <= '/')
+
6426  {
+
6427  if (yych <= '-')
+
6428  {
+
6429  goto basic_json_parser_23;
+
6430  }
+
6431  goto basic_json_parser_30;
+
6432  }
+
6433  else
+
6434  {
+
6435  if (yych <= '0')
+
6436  {
+
6437  goto basic_json_parser_24;
+
6438  }
+
6439  if (yych <= '9')
+
6440  {
+
6441  goto basic_json_parser_26;
+
6442  }
+
6443  goto basic_json_parser_18;
+
6444  }
+
6445  }
+
6446  }
+
6447  }
+
6448  else
+
6449  {
+
6450  if (yych <= 'n')
+
6451  {
+
6452  if (yych <= ']')
+
6453  {
+
6454  if (yych == '[')
+
6455  {
+
6456  goto basic_json_parser_8;
+
6457  }
+
6458  if (yych <= '\\')
+
6459  {
+
6460  goto basic_json_parser_30;
+
6461  }
+
6462  goto basic_json_parser_10;
+
6463  }
+
6464  else
+
6465  {
+
6466  if (yych == 'f')
+
6467  {
+
6468  goto basic_json_parser_22;
+
6469  }
+
6470  if (yych <= 'm')
+
6471  {
+
6472  goto basic_json_parser_30;
+
6473  }
+
6474  goto basic_json_parser_20;
+
6475  }
+
6476  }
+
6477  else
+
6478  {
+
6479  if (yych <= '{')
+
6480  {
+
6481  if (yych == 't')
+
6482  {
+
6483  goto basic_json_parser_21;
+
6484  }
+
6485  if (yych <= 'z')
+
6486  {
+
6487  goto basic_json_parser_30;
+
6488  }
+
6489  goto basic_json_parser_12;
+
6490  }
+
6491  else
+
6492  {
+
6493  if (yych <= '}')
+
6494  {
+
6495  if (yych <= '|')
+
6496  {
+
6497  goto basic_json_parser_30;
+
6498  }
+
6499  goto basic_json_parser_14;
+
6500  }
+
6501  else
+
6502  {
+
6503  if (yych == 0xEF)
+
6504  {
+
6505  goto basic_json_parser_6;
+
6506  }
+
6507  goto basic_json_parser_30;
+
6508  }
+
6509  }
+
6510  }
+
6511  }
+
6512 basic_json_parser_2:
+
6513  ++m_cursor;
+
6514  yych = *m_cursor;
+
6515  goto basic_json_parser_5;
+
6516 basic_json_parser_3:
+
6517  {
+
6518  return scan();
+
6519  }
+
6520 basic_json_parser_4:
+
6521  ++m_cursor;
+
6522  if (m_limit <= m_cursor)
+
6523  {
+
6524  yyfill(); // LCOV_EXCL_LINE;
+
6525  }
+
6526  yych = *m_cursor;
+
6527 basic_json_parser_5:
+
6528  if (yybm[0 + yych] & 32)
+
6529  {
+
6530  goto basic_json_parser_4;
+
6531  }
+
6532  goto basic_json_parser_3;
+
6533 basic_json_parser_6:
+
6534  yyaccept = 0;
+
6535  yych = *(m_marker = ++m_cursor);
+
6536  if (yych == 0xBB)
6537  {
-
6538  return token_type::begin_array;
+
6538  goto basic_json_parser_64;
6539  }
-
6540 basic_json_parser_10:
-
6541  ++m_cursor;
-
6542  {
-
6543  return token_type::end_array;
-
6544  }
-
6545 basic_json_parser_12:
-
6546  ++m_cursor;
-
6547  {
-
6548  return token_type::begin_object;
-
6549  }
-
6550 basic_json_parser_14:
-
6551  ++m_cursor;
-
6552  {
-
6553  return token_type::end_object;
-
6554  }
-
6555 basic_json_parser_16:
-
6556  ++m_cursor;
-
6557  {
-
6558  return token_type::value_separator;
-
6559  }
-
6560 basic_json_parser_18:
-
6561  ++m_cursor;
-
6562  {
-
6563  return token_type::name_separator;
-
6564  }
-
6565 basic_json_parser_20:
-
6566  yyaccept = 0;
-
6567  yych = *(m_marker = ++m_cursor);
-
6568  if (yych == 'u')
-
6569  {
-
6570  goto basic_json_parser_60;
-
6571  }
-
6572  goto basic_json_parser_7;
-
6573 basic_json_parser_21:
-
6574  yyaccept = 0;
-
6575  yych = *(m_marker = ++m_cursor);
-
6576  if (yych == 'r')
-
6577  {
-
6578  goto basic_json_parser_56;
-
6579  }
-
6580  goto basic_json_parser_7;
-
6581 basic_json_parser_22:
-
6582  yyaccept = 0;
-
6583  yych = *(m_marker = ++m_cursor);
-
6584  if (yych == 'a')
-
6585  {
-
6586  goto basic_json_parser_51;
-
6587  }
-
6588  goto basic_json_parser_7;
-
6589 basic_json_parser_23:
-
6590  yych = *++m_cursor;
-
6591  if (yych <= '/')
-
6592  {
-
6593  goto basic_json_parser_7;
-
6594  }
-
6595  if (yych <= '0')
-
6596  {
-
6597  goto basic_json_parser_50;
-
6598  }
-
6599  if (yych <= '9')
-
6600  {
-
6601  goto basic_json_parser_41;
-
6602  }
-
6603  goto basic_json_parser_7;
-
6604 basic_json_parser_24:
-
6605  yyaccept = 1;
-
6606  yych = *(m_marker = ++m_cursor);
-
6607  if (yych <= 'D')
-
6608  {
-
6609  if (yych == '.')
-
6610  {
-
6611  goto basic_json_parser_43;
-
6612  }
-
6613  }
-
6614  else
-
6615  {
-
6616  if (yych <= 'E')
-
6617  {
-
6618  goto basic_json_parser_44;
-
6619  }
-
6620  if (yych == 'e')
-
6621  {
-
6622  goto basic_json_parser_44;
-
6623  }
-
6624  }
-
6625 basic_json_parser_25:
-
6626  {
-
6627  return token_type::value_number;
-
6628  }
-
6629 basic_json_parser_26:
-
6630  yyaccept = 1;
-
6631  yych = *(m_marker = ++m_cursor);
-
6632  goto basic_json_parser_42;
-
6633 basic_json_parser_27:
-
6634  yyaccept = 0;
-
6635  yych = *(m_marker = ++m_cursor);
-
6636  if (yych <= 0x0F)
-
6637  {
-
6638  goto basic_json_parser_7;
-
6639  }
-
6640  goto basic_json_parser_32;
-
6641 basic_json_parser_28:
-
6642  ++m_cursor;
-
6643  {
-
6644  return token_type::end_of_input;
-
6645  }
-
6646 basic_json_parser_30:
-
6647  yych = *++m_cursor;
-
6648  goto basic_json_parser_7;
-
6649 basic_json_parser_31:
-
6650  ++m_cursor;
-
6651  if (m_limit <= m_cursor)
+
6540 basic_json_parser_7:
+
6541  {
+
6542  return token_type::parse_error;
+
6543  }
+
6544 basic_json_parser_8:
+
6545  ++m_cursor;
+
6546  {
+
6547  return token_type::begin_array;
+
6548  }
+
6549 basic_json_parser_10:
+
6550  ++m_cursor;
+
6551  {
+
6552  return token_type::end_array;
+
6553  }
+
6554 basic_json_parser_12:
+
6555  ++m_cursor;
+
6556  {
+
6557  return token_type::begin_object;
+
6558  }
+
6559 basic_json_parser_14:
+
6560  ++m_cursor;
+
6561  {
+
6562  return token_type::end_object;
+
6563  }
+
6564 basic_json_parser_16:
+
6565  ++m_cursor;
+
6566  {
+
6567  return token_type::value_separator;
+
6568  }
+
6569 basic_json_parser_18:
+
6570  ++m_cursor;
+
6571  {
+
6572  return token_type::name_separator;
+
6573  }
+
6574 basic_json_parser_20:
+
6575  yyaccept = 0;
+
6576  yych = *(m_marker = ++m_cursor);
+
6577  if (yych == 'u')
+
6578  {
+
6579  goto basic_json_parser_60;
+
6580  }
+
6581  goto basic_json_parser_7;
+
6582 basic_json_parser_21:
+
6583  yyaccept = 0;
+
6584  yych = *(m_marker = ++m_cursor);
+
6585  if (yych == 'r')
+
6586  {
+
6587  goto basic_json_parser_56;
+
6588  }
+
6589  goto basic_json_parser_7;
+
6590 basic_json_parser_22:
+
6591  yyaccept = 0;
+
6592  yych = *(m_marker = ++m_cursor);
+
6593  if (yych == 'a')
+
6594  {
+
6595  goto basic_json_parser_51;
+
6596  }
+
6597  goto basic_json_parser_7;
+
6598 basic_json_parser_23:
+
6599  yych = *++m_cursor;
+
6600  if (yych <= '/')
+
6601  {
+
6602  goto basic_json_parser_7;
+
6603  }
+
6604  if (yych <= '0')
+
6605  {
+
6606  goto basic_json_parser_50;
+
6607  }
+
6608  if (yych <= '9')
+
6609  {
+
6610  goto basic_json_parser_41;
+
6611  }
+
6612  goto basic_json_parser_7;
+
6613 basic_json_parser_24:
+
6614  yyaccept = 1;
+
6615  yych = *(m_marker = ++m_cursor);
+
6616  if (yych <= 'D')
+
6617  {
+
6618  if (yych == '.')
+
6619  {
+
6620  goto basic_json_parser_43;
+
6621  }
+
6622  }
+
6623  else
+
6624  {
+
6625  if (yych <= 'E')
+
6626  {
+
6627  goto basic_json_parser_44;
+
6628  }
+
6629  if (yych == 'e')
+
6630  {
+
6631  goto basic_json_parser_44;
+
6632  }
+
6633  }
+
6634 basic_json_parser_25:
+
6635  {
+
6636  return token_type::value_number;
+
6637  }
+
6638 basic_json_parser_26:
+
6639  yyaccept = 1;
+
6640  yych = *(m_marker = ++m_cursor);
+
6641  goto basic_json_parser_42;
+
6642 basic_json_parser_27:
+
6643  yyaccept = 0;
+
6644  yych = *(m_marker = ++m_cursor);
+
6645  if (yych <= 0x0F)
+
6646  {
+
6647  goto basic_json_parser_7;
+
6648  }
+
6649  goto basic_json_parser_32;
+
6650 basic_json_parser_28:
+
6651  ++m_cursor;
6652  {
-
6653  yyfill(); // LCOV_EXCL_LINE;
+
6653  return token_type::end_of_input;
6654  }
-
6655  yych = *m_cursor;
-
6656 basic_json_parser_32:
-
6657  if (yybm[0 + yych] & 64)
-
6658  {
-
6659  goto basic_json_parser_31;
-
6660  }
-
6661  if (yych <= 0x0F)
-
6662  {
-
6663  goto basic_json_parser_33;
-
6664  }
-
6665  if (yych <= '"')
-
6666  {
-
6667  goto basic_json_parser_35;
-
6668  }
-
6669  goto basic_json_parser_34;
-
6670 basic_json_parser_33:
-
6671  m_cursor = m_marker;
-
6672  if (yyaccept == 0)
-
6673  {
-
6674  goto basic_json_parser_7;
-
6675  }
-
6676  else
-
6677  {
-
6678  goto basic_json_parser_25;
-
6679  }
-
6680 basic_json_parser_34:
-
6681  ++m_cursor;
-
6682  if (m_limit <= m_cursor)
-
6683  {
-
6684  yyfill(); // LCOV_EXCL_LINE;
-
6685  }
-
6686  yych = *m_cursor;
-
6687  if (yych <= 'e')
-
6688  {
-
6689  if (yych <= '/')
-
6690  {
-
6691  if (yych == '"')
-
6692  {
-
6693  goto basic_json_parser_31;
-
6694  }
-
6695  if (yych <= '.')
-
6696  {
-
6697  goto basic_json_parser_33;
-
6698  }
-
6699  goto basic_json_parser_31;
-
6700  }
-
6701  else
-
6702  {
-
6703  if (yych <= '\\')
-
6704  {
-
6705  if (yych <= '[')
-
6706  {
-
6707  goto basic_json_parser_33;
-
6708  }
-
6709  goto basic_json_parser_31;
-
6710  }
-
6711  else
-
6712  {
-
6713  if (yych == 'b')
-
6714  {
-
6715  goto basic_json_parser_31;
-
6716  }
-
6717  goto basic_json_parser_33;
-
6718  }
-
6719  }
-
6720  }
-
6721  else
-
6722  {
-
6723  if (yych <= 'q')
-
6724  {
-
6725  if (yych <= 'f')
-
6726  {
-
6727  goto basic_json_parser_31;
-
6728  }
-
6729  if (yych == 'n')
-
6730  {
-
6731  goto basic_json_parser_31;
-
6732  }
-
6733  goto basic_json_parser_33;
-
6734  }
-
6735  else
-
6736  {
-
6737  if (yych <= 's')
-
6738  {
-
6739  if (yych <= 'r')
-
6740  {
-
6741  goto basic_json_parser_31;
-
6742  }
-
6743  goto basic_json_parser_33;
-
6744  }
-
6745  else
-
6746  {
-
6747  if (yych <= 't')
-
6748  {
-
6749  goto basic_json_parser_31;
-
6750  }
-
6751  if (yych <= 'u')
-
6752  {
-
6753  goto basic_json_parser_37;
-
6754  }
-
6755  goto basic_json_parser_33;
-
6756  }
-
6757  }
-
6758  }
-
6759 basic_json_parser_35:
-
6760  ++m_cursor;
-
6761  {
-
6762  return token_type::value_string;
-
6763  }
-
6764 basic_json_parser_37:
-
6765  ++m_cursor;
-
6766  if (m_limit <= m_cursor)
-
6767  {
-
6768  yyfill(); // LCOV_EXCL_LINE;
-
6769  }
-
6770  yych = *m_cursor;
-
6771  if (yych <= '@')
-
6772  {
-
6773  if (yych <= '/')
-
6774  {
-
6775  goto basic_json_parser_33;
-
6776  }
-
6777  if (yych >= ':')
-
6778  {
-
6779  goto basic_json_parser_33;
-
6780  }
-
6781  }
-
6782  else
-
6783  {
-
6784  if (yych <= 'F')
-
6785  {
-
6786  goto basic_json_parser_38;
-
6787  }
-
6788  if (yych <= '`')
-
6789  {
-
6790  goto basic_json_parser_33;
-
6791  }
-
6792  if (yych >= 'g')
-
6793  {
-
6794  goto basic_json_parser_33;
-
6795  }
-
6796  }
-
6797 basic_json_parser_38:
-
6798  ++m_cursor;
-
6799  if (m_limit <= m_cursor)
-
6800  {
-
6801  yyfill(); // LCOV_EXCL_LINE;
-
6802  }
-
6803  yych = *m_cursor;
-
6804  if (yych <= '@')
-
6805  {
-
6806  if (yych <= '/')
-
6807  {
-
6808  goto basic_json_parser_33;
-
6809  }
-
6810  if (yych >= ':')
-
6811  {
-
6812  goto basic_json_parser_33;
-
6813  }
-
6814  }
-
6815  else
-
6816  {
-
6817  if (yych <= 'F')
-
6818  {
-
6819  goto basic_json_parser_39;
-
6820  }
-
6821  if (yych <= '`')
-
6822  {
-
6823  goto basic_json_parser_33;
-
6824  }
-
6825  if (yych >= 'g')
-
6826  {
-
6827  goto basic_json_parser_33;
-
6828  }
-
6829  }
-
6830 basic_json_parser_39:
-
6831  ++m_cursor;
-
6832  if (m_limit <= m_cursor)
-
6833  {
-
6834  yyfill(); // LCOV_EXCL_LINE;
-
6835  }
-
6836  yych = *m_cursor;
-
6837  if (yych <= '@')
-
6838  {
-
6839  if (yych <= '/')
-
6840  {
-
6841  goto basic_json_parser_33;
-
6842  }
-
6843  if (yych >= ':')
-
6844  {
-
6845  goto basic_json_parser_33;
-
6846  }
-
6847  }
-
6848  else
-
6849  {
-
6850  if (yych <= 'F')
-
6851  {
-
6852  goto basic_json_parser_40;
-
6853  }
-
6854  if (yych <= '`')
-
6855  {
-
6856  goto basic_json_parser_33;
-
6857  }
-
6858  if (yych >= 'g')
-
6859  {
-
6860  goto basic_json_parser_33;
-
6861  }
-
6862  }
-
6863 basic_json_parser_40:
-
6864  ++m_cursor;
-
6865  if (m_limit <= m_cursor)
-
6866  {
-
6867  yyfill(); // LCOV_EXCL_LINE;
-
6868  }
-
6869  yych = *m_cursor;
-
6870  if (yych <= '@')
-
6871  {
-
6872  if (yych <= '/')
-
6873  {
-
6874  goto basic_json_parser_33;
-
6875  }
-
6876  if (yych <= '9')
-
6877  {
-
6878  goto basic_json_parser_31;
-
6879  }
-
6880  goto basic_json_parser_33;
-
6881  }
-
6882  else
-
6883  {
-
6884  if (yych <= 'F')
-
6885  {
-
6886  goto basic_json_parser_31;
-
6887  }
-
6888  if (yych <= '`')
-
6889  {
-
6890  goto basic_json_parser_33;
-
6891  }
-
6892  if (yych <= 'f')
-
6893  {
-
6894  goto basic_json_parser_31;
-
6895  }
-
6896  goto basic_json_parser_33;
-
6897  }
-
6898 basic_json_parser_41:
-
6899  yyaccept = 1;
-
6900  m_marker = ++m_cursor;
-
6901  if ((m_limit - m_cursor) < 3)
-
6902  {
-
6903  yyfill(); // LCOV_EXCL_LINE;
-
6904  }
-
6905  yych = *m_cursor;
-
6906 basic_json_parser_42:
-
6907  if (yybm[0 + yych] & 128)
-
6908  {
-
6909  goto basic_json_parser_41;
-
6910  }
-
6911  if (yych <= 'D')
-
6912  {
-
6913  if (yych != '.')
-
6914  {
-
6915  goto basic_json_parser_25;
-
6916  }
-
6917  }
-
6918  else
-
6919  {
-
6920  if (yych <= 'E')
-
6921  {
-
6922  goto basic_json_parser_44;
-
6923  }
-
6924  if (yych == 'e')
-
6925  {
-
6926  goto basic_json_parser_44;
-
6927  }
-
6928  goto basic_json_parser_25;
-
6929  }
-
6930 basic_json_parser_43:
-
6931  yych = *++m_cursor;
-
6932  if (yych <= '/')
-
6933  {
-
6934  goto basic_json_parser_33;
-
6935  }
-
6936  if (yych <= '9')
-
6937  {
-
6938  goto basic_json_parser_48;
-
6939  }
-
6940  goto basic_json_parser_33;
-
6941 basic_json_parser_44:
-
6942  yych = *++m_cursor;
-
6943  if (yych <= ',')
-
6944  {
-
6945  if (yych != '+')
-
6946  {
-
6947  goto basic_json_parser_33;
-
6948  }
-
6949  }
-
6950  else
-
6951  {
-
6952  if (yych <= '-')
-
6953  {
-
6954  goto basic_json_parser_45;
-
6955  }
-
6956  if (yych <= '/')
-
6957  {
-
6958  goto basic_json_parser_33;
-
6959  }
-
6960  if (yych <= '9')
-
6961  {
-
6962  goto basic_json_parser_46;
-
6963  }
-
6964  goto basic_json_parser_33;
-
6965  }
-
6966 basic_json_parser_45:
-
6967  yych = *++m_cursor;
-
6968  if (yych <= '/')
-
6969  {
-
6970  goto basic_json_parser_33;
-
6971  }
-
6972  if (yych >= ':')
-
6973  {
-
6974  goto basic_json_parser_33;
-
6975  }
-
6976 basic_json_parser_46:
-
6977  ++m_cursor;
-
6978  if (m_limit <= m_cursor)
-
6979  {
-
6980  yyfill(); // LCOV_EXCL_LINE;
-
6981  }
-
6982  yych = *m_cursor;
-
6983  if (yych <= '/')
-
6984  {
-
6985  goto basic_json_parser_25;
-
6986  }
-
6987  if (yych <= '9')
+
6655 basic_json_parser_30:
+
6656  yych = *++m_cursor;
+
6657  goto basic_json_parser_7;
+
6658 basic_json_parser_31:
+
6659  ++m_cursor;
+
6660  if (m_limit <= m_cursor)
+
6661  {
+
6662  yyfill(); // LCOV_EXCL_LINE;
+
6663  }
+
6664  yych = *m_cursor;
+
6665 basic_json_parser_32:
+
6666  if (yybm[0 + yych] & 64)
+
6667  {
+
6668  goto basic_json_parser_31;
+
6669  }
+
6670  if (yych <= 0x0F)
+
6671  {
+
6672  goto basic_json_parser_33;
+
6673  }
+
6674  if (yych <= '"')
+
6675  {
+
6676  goto basic_json_parser_35;
+
6677  }
+
6678  goto basic_json_parser_34;
+
6679 basic_json_parser_33:
+
6680  m_cursor = m_marker;
+
6681  if (yyaccept == 0)
+
6682  {
+
6683  goto basic_json_parser_7;
+
6684  }
+
6685  else
+
6686  {
+
6687  goto basic_json_parser_25;
+
6688  }
+
6689 basic_json_parser_34:
+
6690  ++m_cursor;
+
6691  if (m_limit <= m_cursor)
+
6692  {
+
6693  yyfill(); // LCOV_EXCL_LINE;
+
6694  }
+
6695  yych = *m_cursor;
+
6696  if (yych <= 'e')
+
6697  {
+
6698  if (yych <= '/')
+
6699  {
+
6700  if (yych == '"')
+
6701  {
+
6702  goto basic_json_parser_31;
+
6703  }
+
6704  if (yych <= '.')
+
6705  {
+
6706  goto basic_json_parser_33;
+
6707  }
+
6708  goto basic_json_parser_31;
+
6709  }
+
6710  else
+
6711  {
+
6712  if (yych <= '\\')
+
6713  {
+
6714  if (yych <= '[')
+
6715  {
+
6716  goto basic_json_parser_33;
+
6717  }
+
6718  goto basic_json_parser_31;
+
6719  }
+
6720  else
+
6721  {
+
6722  if (yych == 'b')
+
6723  {
+
6724  goto basic_json_parser_31;
+
6725  }
+
6726  goto basic_json_parser_33;
+
6727  }
+
6728  }
+
6729  }
+
6730  else
+
6731  {
+
6732  if (yych <= 'q')
+
6733  {
+
6734  if (yych <= 'f')
+
6735  {
+
6736  goto basic_json_parser_31;
+
6737  }
+
6738  if (yych == 'n')
+
6739  {
+
6740  goto basic_json_parser_31;
+
6741  }
+
6742  goto basic_json_parser_33;
+
6743  }
+
6744  else
+
6745  {
+
6746  if (yych <= 's')
+
6747  {
+
6748  if (yych <= 'r')
+
6749  {
+
6750  goto basic_json_parser_31;
+
6751  }
+
6752  goto basic_json_parser_33;
+
6753  }
+
6754  else
+
6755  {
+
6756  if (yych <= 't')
+
6757  {
+
6758  goto basic_json_parser_31;
+
6759  }
+
6760  if (yych <= 'u')
+
6761  {
+
6762  goto basic_json_parser_37;
+
6763  }
+
6764  goto basic_json_parser_33;
+
6765  }
+
6766  }
+
6767  }
+
6768 basic_json_parser_35:
+
6769  ++m_cursor;
+
6770  {
+
6771  return token_type::value_string;
+
6772  }
+
6773 basic_json_parser_37:
+
6774  ++m_cursor;
+
6775  if (m_limit <= m_cursor)
+
6776  {
+
6777  yyfill(); // LCOV_EXCL_LINE;
+
6778  }
+
6779  yych = *m_cursor;
+
6780  if (yych <= '@')
+
6781  {
+
6782  if (yych <= '/')
+
6783  {
+
6784  goto basic_json_parser_33;
+
6785  }
+
6786  if (yych >= ':')
+
6787  {
+
6788  goto basic_json_parser_33;
+
6789  }
+
6790  }
+
6791  else
+
6792  {
+
6793  if (yych <= 'F')
+
6794  {
+
6795  goto basic_json_parser_38;
+
6796  }
+
6797  if (yych <= '`')
+
6798  {
+
6799  goto basic_json_parser_33;
+
6800  }
+
6801  if (yych >= 'g')
+
6802  {
+
6803  goto basic_json_parser_33;
+
6804  }
+
6805  }
+
6806 basic_json_parser_38:
+
6807  ++m_cursor;
+
6808  if (m_limit <= m_cursor)
+
6809  {
+
6810  yyfill(); // LCOV_EXCL_LINE;
+
6811  }
+
6812  yych = *m_cursor;
+
6813  if (yych <= '@')
+
6814  {
+
6815  if (yych <= '/')
+
6816  {
+
6817  goto basic_json_parser_33;
+
6818  }
+
6819  if (yych >= ':')
+
6820  {
+
6821  goto basic_json_parser_33;
+
6822  }
+
6823  }
+
6824  else
+
6825  {
+
6826  if (yych <= 'F')
+
6827  {
+
6828  goto basic_json_parser_39;
+
6829  }
+
6830  if (yych <= '`')
+
6831  {
+
6832  goto basic_json_parser_33;
+
6833  }
+
6834  if (yych >= 'g')
+
6835  {
+
6836  goto basic_json_parser_33;
+
6837  }
+
6838  }
+
6839 basic_json_parser_39:
+
6840  ++m_cursor;
+
6841  if (m_limit <= m_cursor)
+
6842  {
+
6843  yyfill(); // LCOV_EXCL_LINE;
+
6844  }
+
6845  yych = *m_cursor;
+
6846  if (yych <= '@')
+
6847  {
+
6848  if (yych <= '/')
+
6849  {
+
6850  goto basic_json_parser_33;
+
6851  }
+
6852  if (yych >= ':')
+
6853  {
+
6854  goto basic_json_parser_33;
+
6855  }
+
6856  }
+
6857  else
+
6858  {
+
6859  if (yych <= 'F')
+
6860  {
+
6861  goto basic_json_parser_40;
+
6862  }
+
6863  if (yych <= '`')
+
6864  {
+
6865  goto basic_json_parser_33;
+
6866  }
+
6867  if (yych >= 'g')
+
6868  {
+
6869  goto basic_json_parser_33;
+
6870  }
+
6871  }
+
6872 basic_json_parser_40:
+
6873  ++m_cursor;
+
6874  if (m_limit <= m_cursor)
+
6875  {
+
6876  yyfill(); // LCOV_EXCL_LINE;
+
6877  }
+
6878  yych = *m_cursor;
+
6879  if (yych <= '@')
+
6880  {
+
6881  if (yych <= '/')
+
6882  {
+
6883  goto basic_json_parser_33;
+
6884  }
+
6885  if (yych <= '9')
+
6886  {
+
6887  goto basic_json_parser_31;
+
6888  }
+
6889  goto basic_json_parser_33;
+
6890  }
+
6891  else
+
6892  {
+
6893  if (yych <= 'F')
+
6894  {
+
6895  goto basic_json_parser_31;
+
6896  }
+
6897  if (yych <= '`')
+
6898  {
+
6899  goto basic_json_parser_33;
+
6900  }
+
6901  if (yych <= 'f')
+
6902  {
+
6903  goto basic_json_parser_31;
+
6904  }
+
6905  goto basic_json_parser_33;
+
6906  }
+
6907 basic_json_parser_41:
+
6908  yyaccept = 1;
+
6909  m_marker = ++m_cursor;
+
6910  if ((m_limit - m_cursor) < 3)
+
6911  {
+
6912  yyfill(); // LCOV_EXCL_LINE;
+
6913  }
+
6914  yych = *m_cursor;
+
6915 basic_json_parser_42:
+
6916  if (yybm[0 + yych] & 128)
+
6917  {
+
6918  goto basic_json_parser_41;
+
6919  }
+
6920  if (yych <= 'D')
+
6921  {
+
6922  if (yych != '.')
+
6923  {
+
6924  goto basic_json_parser_25;
+
6925  }
+
6926  }
+
6927  else
+
6928  {
+
6929  if (yych <= 'E')
+
6930  {
+
6931  goto basic_json_parser_44;
+
6932  }
+
6933  if (yych == 'e')
+
6934  {
+
6935  goto basic_json_parser_44;
+
6936  }
+
6937  goto basic_json_parser_25;
+
6938  }
+
6939 basic_json_parser_43:
+
6940  yych = *++m_cursor;
+
6941  if (yych <= '/')
+
6942  {
+
6943  goto basic_json_parser_33;
+
6944  }
+
6945  if (yych <= '9')
+
6946  {
+
6947  goto basic_json_parser_48;
+
6948  }
+
6949  goto basic_json_parser_33;
+
6950 basic_json_parser_44:
+
6951  yych = *++m_cursor;
+
6952  if (yych <= ',')
+
6953  {
+
6954  if (yych != '+')
+
6955  {
+
6956  goto basic_json_parser_33;
+
6957  }
+
6958  }
+
6959  else
+
6960  {
+
6961  if (yych <= '-')
+
6962  {
+
6963  goto basic_json_parser_45;
+
6964  }
+
6965  if (yych <= '/')
+
6966  {
+
6967  goto basic_json_parser_33;
+
6968  }
+
6969  if (yych <= '9')
+
6970  {
+
6971  goto basic_json_parser_46;
+
6972  }
+
6973  goto basic_json_parser_33;
+
6974  }
+
6975 basic_json_parser_45:
+
6976  yych = *++m_cursor;
+
6977  if (yych <= '/')
+
6978  {
+
6979  goto basic_json_parser_33;
+
6980  }
+
6981  if (yych >= ':')
+
6982  {
+
6983  goto basic_json_parser_33;
+
6984  }
+
6985 basic_json_parser_46:
+
6986  ++m_cursor;
+
6987  if (m_limit <= m_cursor)
6988  {
-
6989  goto basic_json_parser_46;
+
6989  yyfill(); // LCOV_EXCL_LINE;
6990  }
-
6991  goto basic_json_parser_25;
-
6992 basic_json_parser_48:
-
6993  yyaccept = 1;
-
6994  m_marker = ++m_cursor;
-
6995  if ((m_limit - m_cursor) < 3)
-
6996  {
-
6997  yyfill(); // LCOV_EXCL_LINE;
-
6998  }
-
6999  yych = *m_cursor;
-
7000  if (yych <= 'D')
-
7001  {
-
7002  if (yych <= '/')
-
7003  {
-
7004  goto basic_json_parser_25;
-
7005  }
-
7006  if (yych <= '9')
-
7007  {
-
7008  goto basic_json_parser_48;
-
7009  }
-
7010  goto basic_json_parser_25;
-
7011  }
-
7012  else
-
7013  {
-
7014  if (yych <= 'E')
-
7015  {
-
7016  goto basic_json_parser_44;
-
7017  }
-
7018  if (yych == 'e')
-
7019  {
-
7020  goto basic_json_parser_44;
-
7021  }
-
7022  goto basic_json_parser_25;
-
7023  }
-
7024 basic_json_parser_50:
-
7025  yyaccept = 1;
-
7026  yych = *(m_marker = ++m_cursor);
-
7027  if (yych <= 'D')
-
7028  {
-
7029  if (yych == '.')
-
7030  {
-
7031  goto basic_json_parser_43;
-
7032  }
-
7033  goto basic_json_parser_25;
-
7034  }
-
7035  else
-
7036  {
-
7037  if (yych <= 'E')
-
7038  {
-
7039  goto basic_json_parser_44;
-
7040  }
-
7041  if (yych == 'e')
-
7042  {
-
7043  goto basic_json_parser_44;
-
7044  }
-
7045  goto basic_json_parser_25;
-
7046  }
-
7047 basic_json_parser_51:
-
7048  yych = *++m_cursor;
-
7049  if (yych != 'l')
-
7050  {
-
7051  goto basic_json_parser_33;
-
7052  }
-
7053  yych = *++m_cursor;
-
7054  if (yych != 's')
-
7055  {
-
7056  goto basic_json_parser_33;
-
7057  }
-
7058  yych = *++m_cursor;
-
7059  if (yych != 'e')
-
7060  {
-
7061  goto basic_json_parser_33;
-
7062  }
-
7063  ++m_cursor;
+
6991  yych = *m_cursor;
+
6992  if (yych <= '/')
+
6993  {
+
6994  goto basic_json_parser_25;
+
6995  }
+
6996  if (yych <= '9')
+
6997  {
+
6998  goto basic_json_parser_46;
+
6999  }
+
7000  goto basic_json_parser_25;
+
7001 basic_json_parser_48:
+
7002  yyaccept = 1;
+
7003  m_marker = ++m_cursor;
+
7004  if ((m_limit - m_cursor) < 3)
+
7005  {
+
7006  yyfill(); // LCOV_EXCL_LINE;
+
7007  }
+
7008  yych = *m_cursor;
+
7009  if (yych <= 'D')
+
7010  {
+
7011  if (yych <= '/')
+
7012  {
+
7013  goto basic_json_parser_25;
+
7014  }
+
7015  if (yych <= '9')
+
7016  {
+
7017  goto basic_json_parser_48;
+
7018  }
+
7019  goto basic_json_parser_25;
+
7020  }
+
7021  else
+
7022  {
+
7023  if (yych <= 'E')
+
7024  {
+
7025  goto basic_json_parser_44;
+
7026  }
+
7027  if (yych == 'e')
+
7028  {
+
7029  goto basic_json_parser_44;
+
7030  }
+
7031  goto basic_json_parser_25;
+
7032  }
+
7033 basic_json_parser_50:
+
7034  yyaccept = 1;
+
7035  yych = *(m_marker = ++m_cursor);
+
7036  if (yych <= 'D')
+
7037  {
+
7038  if (yych == '.')
+
7039  {
+
7040  goto basic_json_parser_43;
+
7041  }
+
7042  goto basic_json_parser_25;
+
7043  }
+
7044  else
+
7045  {
+
7046  if (yych <= 'E')
+
7047  {
+
7048  goto basic_json_parser_44;
+
7049  }
+
7050  if (yych == 'e')
+
7051  {
+
7052  goto basic_json_parser_44;
+
7053  }
+
7054  goto basic_json_parser_25;
+
7055  }
+
7056 basic_json_parser_51:
+
7057  yych = *++m_cursor;
+
7058  if (yych != 'l')
+
7059  {
+
7060  goto basic_json_parser_33;
+
7061  }
+
7062  yych = *++m_cursor;
+
7063  if (yych != 's')
7064  {
-
7065  return token_type::literal_false;
+
7065  goto basic_json_parser_33;
7066  }
-
7067 basic_json_parser_56:
-
7068  yych = *++m_cursor;
-
7069  if (yych != 'u')
-
7070  {
-
7071  goto basic_json_parser_33;
-
7072  }
-
7073  yych = *++m_cursor;
-
7074  if (yych != 'e')
-
7075  {
-
7076  goto basic_json_parser_33;
-
7077  }
-
7078  ++m_cursor;
+
7067  yych = *++m_cursor;
+
7068  if (yych != 'e')
+
7069  {
+
7070  goto basic_json_parser_33;
+
7071  }
+
7072  ++m_cursor;
+
7073  {
+
7074  return token_type::literal_false;
+
7075  }
+
7076 basic_json_parser_56:
+
7077  yych = *++m_cursor;
+
7078  if (yych != 'u')
7079  {
-
7080  return token_type::literal_true;
+
7080  goto basic_json_parser_33;
7081  }
-
7082 basic_json_parser_60:
-
7083  yych = *++m_cursor;
-
7084  if (yych != 'l')
-
7085  {
-
7086  goto basic_json_parser_33;
-
7087  }
-
7088  yych = *++m_cursor;
-
7089  if (yych != 'l')
-
7090  {
-
7091  goto basic_json_parser_33;
-
7092  }
-
7093  ++m_cursor;
+
7082  yych = *++m_cursor;
+
7083  if (yych != 'e')
+
7084  {
+
7085  goto basic_json_parser_33;
+
7086  }
+
7087  ++m_cursor;
+
7088  {
+
7089  return token_type::literal_true;
+
7090  }
+
7091 basic_json_parser_60:
+
7092  yych = *++m_cursor;
+
7093  if (yych != 'l')
7094  {
-
7095  return token_type::literal_null;
+
7095  goto basic_json_parser_33;
7096  }
-
7097 basic_json_parser_64:
-
7098  yych = *++m_cursor;
-
7099  if (yych != 0xBF)
-
7100  {
-
7101  goto basic_json_parser_33;
-
7102  }
-
7103  ++m_cursor;
-
7104  {
-
7105  return scan();
-
7106  }
-
7107  }
-
7108 
-
7109 
-
7110  }
-
7111 
-
7113  void yyfill() noexcept
-
7114  {
-
7115  if (not m_stream or not * m_stream)
-
7116  {
-
7117  return;
-
7118  }
-
7119 
-
7120  const ssize_t offset_start = m_start - m_content;
-
7121  const ssize_t offset_marker = m_marker - m_start;
-
7122  const ssize_t offset_cursor = m_cursor - m_start;
-
7123 
-
7124  m_buffer.erase(0, static_cast<size_t>(offset_start));
-
7125  std::string line;
-
7126  std::getline(*m_stream, line);
-
7127  m_buffer += "\n" + line; // add line with newline symbol
+
7097  yych = *++m_cursor;
+
7098  if (yych != 'l')
+
7099  {
+
7100  goto basic_json_parser_33;
+
7101  }
+
7102  ++m_cursor;
+
7103  {
+
7104  return token_type::literal_null;
+
7105  }
+
7106 basic_json_parser_64:
+
7107  yych = *++m_cursor;
+
7108  if (yych != 0xBF)
+
7109  {
+
7110  goto basic_json_parser_33;
+
7111  }
+
7112  ++m_cursor;
+
7113  {
+
7114  return scan();
+
7115  }
+
7116  }
+
7117 
+
7118 
+
7119  }
+
7120 
+
7122  void yyfill() noexcept
+
7123  {
+
7124  if (not m_stream or not * m_stream)
+
7125  {
+
7126  return;
+
7127  }
7128 
-
7129  m_content = reinterpret_cast<const lexer_char_t*>(m_buffer.c_str());
-
7130  m_start = m_content;
-
7131  m_marker = m_start + offset_marker;
-
7132  m_cursor = m_start + offset_cursor;
-
7133  m_limit = m_start + m_buffer.size() - 1;
-
7134  }
-
7135 
-
7137  string_t get_token() const noexcept
-
7138  {
-
7139  return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start),
-
7140  static_cast<size_t>(m_cursor - m_start));
-
7141  }
-
7142 
-
7164  string_t get_string() const
-
7165  {
-
7166  string_t result;
-
7167  result.reserve(static_cast<size_t>(m_cursor - m_start - 2));
-
7168 
-
7169  // iterate the result between the quotes
-
7170  for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i)
-
7171  {
-
7172  // process escaped characters
-
7173  if (*i == '\\')
-
7174  {
-
7175  // read next character
-
7176  ++i;
+
7129  const ssize_t offset_start = m_start - m_content;
+
7130  const ssize_t offset_marker = m_marker - m_start;
+
7131  const ssize_t offset_cursor = m_cursor - m_start;
+
7132 
+
7133  m_buffer.erase(0, static_cast<size_t>(offset_start));
+
7134  std::string line;
+
7135  std::getline(*m_stream, line);
+
7136  m_buffer += "\n" + line; // add line with newline symbol
+
7137 
+
7138  m_content = reinterpret_cast<const lexer_char_t*>(m_buffer.c_str());
+
7139  m_start = m_content;
+
7140  m_marker = m_start + offset_marker;
+
7141  m_cursor = m_start + offset_cursor;
+
7142  m_limit = m_start + m_buffer.size() - 1;
+
7143  }
+
7144 
+
7146  string_t get_token() const noexcept
+
7147  {
+
7148  return string_t(reinterpret_cast<typename string_t::const_pointer>(m_start),
+
7149  static_cast<size_t>(m_cursor - m_start));
+
7150  }
+
7151 
+
7173  string_t get_string() const
+
7174  {
+
7175  string_t result;
+
7176  result.reserve(static_cast<size_t>(m_cursor - m_start - 2));
7177 
-
7178  switch (*i)
-
7179  {
-
7180  // the default escapes
-
7181  case 't':
-
7182  {
-
7183  result += "\t";
-
7184  break;
-
7185  }
-
7186  case 'b':
-
7187  {
-
7188  result += "\b";
-
7189  break;
-
7190  }
-
7191  case 'f':
-
7192  {
-
7193  result += "\f";
-
7194  break;
-
7195  }
-
7196  case 'n':
-
7197  {
-
7198  result += "\n";
-
7199  break;
-
7200  }
-
7201  case 'r':
-
7202  {
-
7203  result += "\r";
-
7204  break;
-
7205  }
-
7206  case '\\':
-
7207  {
-
7208  result += "\\";
-
7209  break;
-
7210  }
-
7211  case '/':
-
7212  {
-
7213  result += "/";
-
7214  break;
-
7215  }
-
7216  case '"':
-
7217  {
-
7218  result += "\"";
-
7219  break;
-
7220  }
-
7221 
-
7222  // unicode
-
7223  case 'u':
-
7224  {
-
7225  // get code xxxx from uxxxx
-
7226  auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1),
-
7227  4).c_str(), nullptr, 16);
-
7228 
-
7229  // check if codepoint is a high surrogate
-
7230  if (codepoint >= 0xD800 and codepoint <= 0xDBFF)
-
7231  {
-
7232  // make sure there is a subsequent unicode
-
7233  if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u')
-
7234  {
-
7235  throw std::invalid_argument("missing low surrogate");
-
7236  }
+
7178  // iterate the result between the quotes
+
7179  for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i)
+
7180  {
+
7181  // process escaped characters
+
7182  if (*i == '\\')
+
7183  {
+
7184  // read next character
+
7185  ++i;
+
7186 
+
7187  switch (*i)
+
7188  {
+
7189  // the default escapes
+
7190  case 't':
+
7191  {
+
7192  result += "\t";
+
7193  break;
+
7194  }
+
7195  case 'b':
+
7196  {
+
7197  result += "\b";
+
7198  break;
+
7199  }
+
7200  case 'f':
+
7201  {
+
7202  result += "\f";
+
7203  break;
+
7204  }
+
7205  case 'n':
+
7206  {
+
7207  result += "\n";
+
7208  break;
+
7209  }
+
7210  case 'r':
+
7211  {
+
7212  result += "\r";
+
7213  break;
+
7214  }
+
7215  case '\\':
+
7216  {
+
7217  result += "\\";
+
7218  break;
+
7219  }
+
7220  case '/':
+
7221  {
+
7222  result += "/";
+
7223  break;
+
7224  }
+
7225  case '"':
+
7226  {
+
7227  result += "\"";
+
7228  break;
+
7229  }
+
7230 
+
7231  // unicode
+
7232  case 'u':
+
7233  {
+
7234  // get code xxxx from uxxxx
+
7235  auto codepoint = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>(i + 1),
+
7236  4).c_str(), nullptr, 16);
7237 
-
7238  // get code yyyy from uxxxx\uyyyy
-
7239  auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>
-
7240  (i + 7), 4).c_str(), nullptr, 16);
-
7241  result += to_unicode(codepoint, codepoint2);
-
7242  // skip the next 10 characters (xxxx\uyyyy)
-
7243  i += 10;
-
7244  }
-
7245  else
-
7246  {
-
7247  // add unicode character(s)
-
7248  result += to_unicode(codepoint);
-
7249  // skip the next four characters (xxxx)
-
7250  i += 4;
-
7251  }
-
7252  break;
-
7253  }
-
7254  }
-
7255  }
-
7256  else
-
7257  {
-
7258  // all other characters are just copied to the end of the
-
7259  // string
-
7260  result.append(1, static_cast<typename string_t::value_type>(*i));
-
7261  }
-
7262  }
-
7263 
-
7264  return result;
-
7265  }
-
7266 
-
7284  long double get_number() const
-
7285  {
-
7286  // conversion
-
7287  typename string_t::value_type* endptr;
-
7288  const auto float_val = std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start),
-
7289  &endptr);
-
7290 
-
7291  // return float_val if the whole number was translated and NAN
-
7292  // otherwise
-
7293  return (reinterpret_cast<lexer_char_t*>(endptr) == m_cursor) ? float_val : NAN;
-
7294  }
-
7295 
-
7296  private:
-
7298  std::istream* m_stream;
-
7300  string_t m_buffer;
-
7302  const lexer_char_t* m_content = nullptr;
-
7304  const lexer_char_t* m_start = nullptr;
-
7306  const lexer_char_t* m_marker = nullptr;
-
7308  const lexer_char_t* m_cursor = nullptr;
-
7310  const lexer_char_t* m_limit = nullptr;
-
7311  };
-
7312 
-
7318  class parser
-
7319  {
-
7320  public:
-
7322  parser(const string_t& s, parser_callback_t cb = nullptr)
-
7323  : callback(cb), m_lexer(s)
-
7324  {
-
7325  // read first token
-
7326  get_token();
-
7327  }
-
7328 
-
7330  parser(std::istream& _is, parser_callback_t cb = nullptr)
-
7331  : callback(cb), m_lexer(&_is)
-
7332  {
-
7333  // read first token
-
7334  get_token();
-
7335  }
-
7336 
-
7338  basic_json parse()
-
7339  {
-
7340  basic_json result = parse_internal(true);
-
7341 
-
7342  expect(lexer::token_type::end_of_input);
-
7343 
-
7344  // return parser result and replace it with null in case the
-
7345  // top-level value was discarded by the callback function
-
7346  return result.is_discarded() ? basic_json() : result;
-
7347  }
-
7348 
-
7349  private:
-
7351  basic_json parse_internal(bool keep)
-
7352  {
-
7353  auto result = basic_json(value_t::discarded);
-
7354 
-
7355  switch (last_token)
-
7356  {
-
7357  case lexer::token_type::begin_object:
-
7358  {
-
7359  if (keep and (not callback or (keep = callback(depth++, parse_event_t::object_start, result))))
-
7360  {
-
7361  // explicitly set result to object to cope with {}
-
7362  result.m_type = value_t::object;
-
7363  result.m_value = json_value(value_t::object);
-
7364  }
-
7365 
-
7366  // read next token
-
7367  get_token();
-
7368 
-
7369  // closing } -> we are done
-
7370  if (last_token == lexer::token_type::end_object)
-
7371  {
-
7372  get_token();
-
7373  if (keep and callback and not callback(--depth, parse_event_t::object_end, result))
-
7374  {
-
7375  result = basic_json(value_t::discarded);
-
7376  }
-
7377  return result;
-
7378  }
-
7379 
-
7380  // no comma is expected here
-
7381  unexpect(lexer::token_type::value_separator);
-
7382 
-
7383  // otherwise: parse key-value pairs
-
7384  do
-
7385  {
-
7386  // ugly, but could be fixed with loop reorganization
-
7387  if (last_token == lexer::token_type::value_separator)
-
7388  {
-
7389  get_token();
-
7390  }
+
7238  // check if codepoint is a high surrogate
+
7239  if (codepoint >= 0xD800 and codepoint <= 0xDBFF)
+
7240  {
+
7241  // make sure there is a subsequent unicode
+
7242  if ((i + 6 >= m_limit) or * (i + 5) != '\\' or * (i + 6) != 'u')
+
7243  {
+
7244  throw std::invalid_argument("missing low surrogate");
+
7245  }
+
7246 
+
7247  // get code yyyy from uxxxx\uyyyy
+
7248  auto codepoint2 = std::strtoul(std::string(reinterpret_cast<typename string_t::const_pointer>
+
7249  (i + 7), 4).c_str(), nullptr, 16);
+
7250  result += to_unicode(codepoint, codepoint2);
+
7251  // skip the next 10 characters (xxxx\uyyyy)
+
7252  i += 10;
+
7253  }
+
7254  else
+
7255  {
+
7256  // add unicode character(s)
+
7257  result += to_unicode(codepoint);
+
7258  // skip the next four characters (xxxx)
+
7259  i += 4;
+
7260  }
+
7261  break;
+
7262  }
+
7263  }
+
7264  }
+
7265  else
+
7266  {
+
7267  // all other characters are just copied to the end of the
+
7268  // string
+
7269  result.append(1, static_cast<typename string_t::value_type>(*i));
+
7270  }
+
7271  }
+
7272 
+
7273  return result;
+
7274  }
+
7275 
+
7293  long double get_number() const
+
7294  {
+
7295  // conversion
+
7296  typename string_t::value_type* endptr;
+
7297  const auto float_val = std::strtold(reinterpret_cast<typename string_t::const_pointer>(m_start),
+
7298  &endptr);
+
7299 
+
7300  // return float_val if the whole number was translated and NAN
+
7301  // otherwise
+
7302  return (reinterpret_cast<lexer_char_t*>(endptr) == m_cursor) ? float_val : NAN;
+
7303  }
+
7304 
+
7305  private:
+
7307  std::istream* m_stream;
+
7309  string_t m_buffer;
+
7311  const lexer_char_t* m_content = nullptr;
+
7313  const lexer_char_t* m_start = nullptr;
+
7315  const lexer_char_t* m_marker = nullptr;
+
7317  const lexer_char_t* m_cursor = nullptr;
+
7319  const lexer_char_t* m_limit = nullptr;
+
7320  };
+
7321 
+
7327  class parser
+
7328  {
+
7329  public:
+
7331  parser(const string_t& s, parser_callback_t cb = nullptr)
+
7332  : callback(cb), m_lexer(s)
+
7333  {
+
7334  // read first token
+
7335  get_token();
+
7336  }
+
7337 
+
7339  parser(std::istream& _is, parser_callback_t cb = nullptr)
+
7340  : callback(cb), m_lexer(&_is)
+
7341  {
+
7342  // read first token
+
7343  get_token();
+
7344  }
+
7345 
+
7347  basic_json parse()
+
7348  {
+
7349  basic_json result = parse_internal(true);
+
7350 
+
7351  expect(lexer::token_type::end_of_input);
+
7352 
+
7353  // return parser result and replace it with null in case the
+
7354  // top-level value was discarded by the callback function
+
7355  return result.is_discarded() ? basic_json() : result;
+
7356  }
+
7357 
+
7358  private:
+
7360  basic_json parse_internal(bool keep)
+
7361  {
+
7362  auto result = basic_json(value_t::discarded);
+
7363 
+
7364  switch (last_token)
+
7365  {
+
7366  case lexer::token_type::begin_object:
+
7367  {
+
7368  if (keep and (not callback or (keep = callback(depth++, parse_event_t::object_start, result))))
+
7369  {
+
7370  // explicitly set result to object to cope with {}
+
7371  result.m_type = value_t::object;
+
7372  result.m_value = json_value(value_t::object);
+
7373  }
+
7374 
+
7375  // read next token
+
7376  get_token();
+
7377 
+
7378  // closing } -> we are done
+
7379  if (last_token == lexer::token_type::end_object)
+
7380  {
+
7381  get_token();
+
7382  if (keep and callback and not callback(--depth, parse_event_t::object_end, result))
+
7383  {
+
7384  result = basic_json(value_t::discarded);
+
7385  }
+
7386  return result;
+
7387  }
+
7388 
+
7389  // no comma is expected here
+
7390  unexpect(lexer::token_type::value_separator);
7391 
-
7392  // store key
-
7393  expect(lexer::token_type::value_string);
-
7394  const auto key = m_lexer.get_string();
-
7395 
-
7396  bool keep_tag = false;
-
7397  if (keep)
-
7398  {
-
7399  if (callback)
-
7400  {
-
7401  basic_json k(key);
-
7402  keep_tag = callback(depth, parse_event_t::key, k);
-
7403  }
-
7404  else
-
7405  {
-
7406  keep_tag = true;
-
7407  }
-
7408  }
-
7409 
-
7410  // parse separator (:)
-
7411  get_token();
-
7412  expect(lexer::token_type::name_separator);
-
7413 
-
7414  // parse and add value
-
7415  get_token();
-
7416  auto value = parse_internal(keep);
-
7417  if (keep and keep_tag and not value.is_discarded())
-
7418  {
-
7419  result[key] = std::move(value);
-
7420  }
-
7421  }
-
7422  while (last_token == lexer::token_type::value_separator);
-
7423 
-
7424  // closing }
-
7425  expect(lexer::token_type::end_object);
-
7426  get_token();
-
7427  if (keep and callback and not callback(--depth, parse_event_t::object_end, result))
-
7428  {
-
7429  result = basic_json(value_t::discarded);
+
7392  // otherwise: parse key-value pairs
+
7393  do
+
7394  {
+
7395  // ugly, but could be fixed with loop reorganization
+
7396  if (last_token == lexer::token_type::value_separator)
+
7397  {
+
7398  get_token();
+
7399  }
+
7400 
+
7401  // store key
+
7402  expect(lexer::token_type::value_string);
+
7403  const auto key = m_lexer.get_string();
+
7404 
+
7405  bool keep_tag = false;
+
7406  if (keep)
+
7407  {
+
7408  if (callback)
+
7409  {
+
7410  basic_json k(key);
+
7411  keep_tag = callback(depth, parse_event_t::key, k);
+
7412  }
+
7413  else
+
7414  {
+
7415  keep_tag = true;
+
7416  }
+
7417  }
+
7418 
+
7419  // parse separator (:)
+
7420  get_token();
+
7421  expect(lexer::token_type::name_separator);
+
7422 
+
7423  // parse and add value
+
7424  get_token();
+
7425  auto value = parse_internal(keep);
+
7426  if (keep and keep_tag and not value.is_discarded())
+
7427  {
+
7428  result[key] = std::move(value);
+
7429  }
7430  }
-
7431 
-
7432  return result;
-
7433  }
-
7434 
-
7435  case lexer::token_type::begin_array:
-
7436  {
-
7437  if (keep and (not callback or (keep = callback(depth++, parse_event_t::array_start, result))))
-
7438  {
-
7439  // explicitly set result to object to cope with []
-
7440  result.m_type = value_t::array;
-
7441  result.m_value = json_value(value_t::array);
-
7442  }
+
7431  while (last_token == lexer::token_type::value_separator);
+
7432 
+
7433  // closing }
+
7434  expect(lexer::token_type::end_object);
+
7435  get_token();
+
7436  if (keep and callback and not callback(--depth, parse_event_t::object_end, result))
+
7437  {
+
7438  result = basic_json(value_t::discarded);
+
7439  }
+
7440 
+
7441  return result;
+
7442  }
7443 
-
7444  // read next token
-
7445  get_token();
-
7446 
-
7447  // closing ] -> we are done
-
7448  if (last_token == lexer::token_type::end_array)
-
7449  {
-
7450  get_token();
-
7451  if (callback and not callback(--depth, parse_event_t::array_end, result))
-
7452  {
-
7453  result = basic_json(value_t::discarded);
-
7454  }
-
7455  return result;
-
7456  }
-
7457 
-
7458  // no comma is expected here
-
7459  unexpect(lexer::token_type::value_separator);
-
7460 
-
7461  // otherwise: parse values
-
7462  do
-
7463  {
-
7464  // ugly, but could be fixed with loop reorganization
-
7465  if (last_token == lexer::token_type::value_separator)
-
7466  {
-
7467  get_token();
-
7468  }
+
7444  case lexer::token_type::begin_array:
+
7445  {
+
7446  if (keep and (not callback or (keep = callback(depth++, parse_event_t::array_start, result))))
+
7447  {
+
7448  // explicitly set result to object to cope with []
+
7449  result.m_type = value_t::array;
+
7450  result.m_value = json_value(value_t::array);
+
7451  }
+
7452 
+
7453  // read next token
+
7454  get_token();
+
7455 
+
7456  // closing ] -> we are done
+
7457  if (last_token == lexer::token_type::end_array)
+
7458  {
+
7459  get_token();
+
7460  if (callback and not callback(--depth, parse_event_t::array_end, result))
+
7461  {
+
7462  result = basic_json(value_t::discarded);
+
7463  }
+
7464  return result;
+
7465  }
+
7466 
+
7467  // no comma is expected here
+
7468  unexpect(lexer::token_type::value_separator);
7469 
-
7470  // parse value
-
7471  auto value = parse_internal(keep);
-
7472  if (keep and not value.is_discarded())
-
7473  {
-
7474  result.push_back(std::move(value));
-
7475  }
-
7476  }
-
7477  while (last_token == lexer::token_type::value_separator);
+
7470  // otherwise: parse values
+
7471  do
+
7472  {
+
7473  // ugly, but could be fixed with loop reorganization
+
7474  if (last_token == lexer::token_type::value_separator)
+
7475  {
+
7476  get_token();
+
7477  }
7478 
-
7479  // closing ]
-
7480  expect(lexer::token_type::end_array);
-
7481  get_token();
-
7482  if (keep and callback and not callback(--depth, parse_event_t::array_end, result))
-
7483  {
-
7484  result = basic_json(value_t::discarded);
+
7479  // parse value
+
7480  auto value = parse_internal(keep);
+
7481  if (keep and not value.is_discarded())
+
7482  {
+
7483  result.push_back(std::move(value));
+
7484  }
7485  }
-
7486 
-
7487  return result;
-
7488  }
-
7489 
-
7490  case lexer::token_type::literal_null:
-
7491  {
-
7492  get_token();
-
7493  result.m_type = value_t::null;
-
7494  break;
-
7495  }
-
7496 
-
7497  case lexer::token_type::value_string:
-
7498  {
-
7499  const auto s = m_lexer.get_string();
-
7500  get_token();
-
7501  result = basic_json(s);
-
7502  break;
-
7503  }
-
7504 
-
7505  case lexer::token_type::literal_true:
-
7506  {
-
7507  get_token();
-
7508  result.m_type = value_t::boolean;
-
7509  result.m_value = true;
-
7510  break;
-
7511  }
-
7512 
-
7513  case lexer::token_type::literal_false:
-
7514  {
-
7515  get_token();
-
7516  result.m_type = value_t::boolean;
-
7517  result.m_value = false;
-
7518  break;
-
7519  }
-
7520 
-
7521  case lexer::token_type::value_number:
-
7522  {
-
7523  auto float_val = m_lexer.get_number();
-
7524 
-
7525  // NAN is returned if token could not be translated
-
7526  // completely
-
7527  if (std::isnan(float_val))
-
7528  {
-
7529  throw std::invalid_argument(std::string("parse error - ") +
-
7530  m_lexer.get_token() + " is not a number");
-
7531  }
-
7532 
-
7533  get_token();
-
7534 
-
7535  // check if conversion loses precision
-
7536  const auto int_val = static_cast<number_integer_t>(float_val);
-
7537  if (approx(float_val, static_cast<long double>(int_val)))
-
7538  {
-
7539  // we would not lose precision -> return int
-
7540  result.m_type = value_t::number_integer;
-
7541  result.m_value = int_val;
-
7542  }
-
7543  else
-
7544  {
-
7545  // we would lose precision -> return float
-
7546  result.m_type = value_t::number_float;
-
7547  result.m_value = static_cast<number_float_t>(float_val);
-
7548  }
-
7549  break;
-
7550  }
-
7551 
-
7552  default:
-
7553  {
-
7554  // the last token was unexpected
-
7555  unexpect(last_token);
-
7556  }
-
7557  }
-
7558 
-
7559  if (keep and callback and not callback(depth, parse_event_t::value, result))
-
7560  {
-
7561  result = basic_json(value_t::discarded);
-
7562  }
-
7563  return result;
-
7564  }
-
7565 
-
7567  typename lexer::token_type get_token()
-
7568  {
-
7569  last_token = m_lexer.scan();
-
7570  return last_token;
-
7571  }
-
7572 
-
7573  void expect(typename lexer::token_type t) const
-
7574  {
-
7575  if (t != last_token)
-
7576  {
-
7577  std::string error_msg = "parse error - unexpected \'";
-
7578  error_msg += m_lexer.get_token();
-
7579  error_msg += "\' (" + lexer::token_type_name(last_token);
-
7580  error_msg += "); expected " + lexer::token_type_name(t);
-
7581  throw std::invalid_argument(error_msg);
-
7582  }
-
7583  }
-
7584 
-
7585  void unexpect(typename lexer::token_type t) const
-
7586  {
-
7587  if (t == last_token)
-
7588  {
-
7589  std::string error_msg = "parse error - unexpected \'";
-
7590  error_msg += m_lexer.get_token();
-
7591  error_msg += "\' (";
-
7592  error_msg += lexer::token_type_name(last_token) + ")";
-
7593  throw std::invalid_argument(error_msg);
-
7594  }
-
7595  }
-
7596 
-
7597  private:
-
7599  int depth = 0;
-
7601  parser_callback_t callback;
-
7603  typename lexer::token_type last_token = lexer::token_type::uninitialized;
-
7605  lexer m_lexer;
-
7606  };
-
7607 };
-
7608 
-
7609 
-
7611 // presets //
-
7613 
- -
7623 }
-
7624 
-
7625 
-
7627 // nonmember functions //
-
7629 
-
7630 // specialization of std::swap, and std::hash
-
7631 namespace std
-
7632 {
-
7638 template <>
-
7639 inline void swap(nlohmann::json& j1,
-
7640  nlohmann::json& j2) noexcept(
-
7641  is_nothrow_move_constructible<nlohmann::json>::value and
-
7642  is_nothrow_move_assignable<nlohmann::json>::value
-
7643  )
-
7644 {
-
7645  j1.swap(j2);
-
7646 }
-
7647 
-
7649 template <>
-
7650 struct hash<nlohmann::json>
-
7651 {
-
7657  std::size_t operator()(const nlohmann::json& j) const
-
7658  {
-
7659  // a naive hashing via the string representation
-
7660  const auto& h = hash<nlohmann::json::string_t>();
-
7661  return h(j.dump());
-
7662  }
-
7663 };
-
7664 }
-
7665 
-
7678 inline nlohmann::json operator "" _json(const char* s, std::size_t)
-
7679 {
-
7680  return nlohmann::json::parse(reinterpret_cast<nlohmann::json::string_t::value_type*>
-
7681  (const_cast<char*>(s)));
-
7682 }
-
7683 
-
7684 #endif
+
7486  while (last_token == lexer::token_type::value_separator);
+
7487 
+
7488  // closing ]
+
7489  expect(lexer::token_type::end_array);
+
7490  get_token();
+
7491  if (keep and callback and not callback(--depth, parse_event_t::array_end, result))
+
7492  {
+
7493  result = basic_json(value_t::discarded);
+
7494  }
+
7495 
+
7496  return result;
+
7497  }
+
7498 
+
7499  case lexer::token_type::literal_null:
+
7500  {
+
7501  get_token();
+
7502  result.m_type = value_t::null;
+
7503  break;
+
7504  }
+
7505 
+
7506  case lexer::token_type::value_string:
+
7507  {
+
7508  const auto s = m_lexer.get_string();
+
7509  get_token();
+
7510  result = basic_json(s);
+
7511  break;
+
7512  }
+
7513 
+
7514  case lexer::token_type::literal_true:
+
7515  {
+
7516  get_token();
+
7517  result.m_type = value_t::boolean;
+
7518  result.m_value = true;
+
7519  break;
+
7520  }
+
7521 
+
7522  case lexer::token_type::literal_false:
+
7523  {
+
7524  get_token();
+
7525  result.m_type = value_t::boolean;
+
7526  result.m_value = false;
+
7527  break;
+
7528  }
+
7529 
+
7530  case lexer::token_type::value_number:
+
7531  {
+
7532  auto float_val = m_lexer.get_number();
+
7533 
+
7534  // NAN is returned if token could not be translated
+
7535  // completely
+
7536  if (std::isnan(float_val))
+
7537  {
+
7538  throw std::invalid_argument(std::string("parse error - ") +
+
7539  m_lexer.get_token() + " is not a number");
+
7540  }
+
7541 
+
7542  get_token();
+
7543 
+
7544  // check if conversion loses precision
+
7545  const auto int_val = static_cast<number_integer_t>(float_val);
+
7546  if (approx(float_val, static_cast<long double>(int_val)))
+
7547  {
+
7548  // we would not lose precision -> return int
+
7549  result.m_type = value_t::number_integer;
+
7550  result.m_value = int_val;
+
7551  }
+
7552  else
+
7553  {
+
7554  // we would lose precision -> return float
+
7555  result.m_type = value_t::number_float;
+
7556  result.m_value = static_cast<number_float_t>(float_val);
+
7557  }
+
7558  break;
+
7559  }
+
7560 
+
7561  default:
+
7562  {
+
7563  // the last token was unexpected
+
7564  unexpect(last_token);
+
7565  }
+
7566  }
+
7567 
+
7568  if (keep and callback and not callback(depth, parse_event_t::value, result))
+
7569  {
+
7570  result = basic_json(value_t::discarded);
+
7571  }
+
7572  return result;
+
7573  }
+
7574 
+
7576  typename lexer::token_type get_token()
+
7577  {
+
7578  last_token = m_lexer.scan();
+
7579  return last_token;
+
7580  }
+
7581 
+
7582  void expect(typename lexer::token_type t) const
+
7583  {
+
7584  if (t != last_token)
+
7585  {
+
7586  std::string error_msg = "parse error - unexpected \'";
+
7587  error_msg += m_lexer.get_token();
+
7588  error_msg += "\' (" + lexer::token_type_name(last_token);
+
7589  error_msg += "); expected " + lexer::token_type_name(t);
+
7590  throw std::invalid_argument(error_msg);
+
7591  }
+
7592  }
+
7593 
+
7594  void unexpect(typename lexer::token_type t) const
+
7595  {
+
7596  if (t == last_token)
+
7597  {
+
7598  std::string error_msg = "parse error - unexpected \'";
+
7599  error_msg += m_lexer.get_token();
+
7600  error_msg += "\' (";
+
7601  error_msg += lexer::token_type_name(last_token) + ")";
+
7602  throw std::invalid_argument(error_msg);
+
7603  }
+
7604  }
+
7605 
+
7606  private:
+
7608  int depth = 0;
+
7610  parser_callback_t callback;
+
7612  typename lexer::token_type last_token = lexer::token_type::uninitialized;
+
7614  lexer m_lexer;
+
7615  };
+
7616 };
+
7617 
+
7618 
+
7620 // presets //
+
7622 
+ +
7632 }
+
7633 
+
7634 
+
7636 // nonmember functions //
+
7638 
+
7639 // specialization of std::swap, and std::hash
+
7640 namespace std
+
7641 {
+
7647 template <>
+
7648 inline void swap(nlohmann::json& j1,
+
7649  nlohmann::json& j2) noexcept(
+
7650  is_nothrow_move_constructible<nlohmann::json>::value and
+
7651  is_nothrow_move_assignable<nlohmann::json>::value
+
7652  )
+
7653 {
+
7654  j1.swap(j2);
+
7655 }
+
7656 
+
7658 template <>
+
7659 struct hash<nlohmann::json>
+
7660 {
+
7666  std::size_t operator()(const nlohmann::json& j) const
+
7667  {
+
7668  // a naive hashing via the string representation
+
7669  const auto& h = hash<nlohmann::json::string_t>();
+
7670  return h(j.dump());
+
7671  }
+
7672 };
+
7673 }
+
7674 
+
7687 inline nlohmann::json operator "" _json(const char* s, std::size_t)
+
7688 {
+
7689  return nlohmann::json::parse(reinterpret_cast<nlohmann::json::string_t::value_type*>
+
7690  (const_cast<char*>(s)));
+
7691 }
+
7692 
+
7693 #endif
json_reverse_iterator< typename basic_json::iterator > reverse_iterator
a reverse iterator for a basic_json container
Definition: json.hpp:239
-
iterator_wrapper(basic_json &cont)
construct iterator wrapper from a container
Definition: json.hpp:6118
-
bool operator!=(const const_iterator &other) const
comparison: not equal
Definition: json.hpp:5611
-
iterator insert(const_iterator pos, basic_json &&val)
inserts element
Definition: json.hpp:4087
-
iterator operator++(int)
post-increment (it++)
Definition: json.hpp:5848
-
friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
comparison: less than or equal
Definition: json.hpp:4636
+
iterator_wrapper(basic_json &cont)
construct iterator wrapper from a container
Definition: json.hpp:6122
+
bool operator!=(const const_iterator &other) const
comparison: not equal
Definition: json.hpp:5615
+
iterator insert(const_iterator pos, basic_json &&val)
inserts element
Definition: json.hpp:4091
+
iterator operator++(int)
post-increment (it++)
Definition: json.hpp:5852
+
friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
comparison: less than or equal
Definition: json.hpp:4640
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:6000
+
json_reverse_iterator operator-(difference_type i) const
subtract from iterator
Definition: json.hpp:6004
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:1506
-
const_reference operator[](size_type idx) const
access specified array element
Definition: json.hpp:2802
-
reference operator[](const T(&key)[n])
access specified object element
Definition: json.hpp:2890
-
typename basic_json::const_pointer pointer
defines a pointer to the type iterated over (value_type)
Definition: json.hpp:5313
-
const_iterator & operator--()
pre-decrement (–it)
Definition: json.hpp:5556
-
friend std::istream & operator>>(std::istream &i, basic_json &j)
deserialize from stream
Definition: json.hpp:4849
-
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:5378
-
typename basic_json::value_type value_type
the type of the values when the iterator is dereferenced
Definition: json.hpp:5309
+
const_reference operator[](size_type idx) const
access specified array element
Definition: json.hpp:2806
+
reference operator[](const T(&key)[n])
access specified object element
Definition: json.hpp:2894
+
typename basic_json::const_pointer pointer
defines a pointer to the type iterated over (value_type)
Definition: json.hpp:5317
+
const_iterator & operator--()
pre-decrement (–it)
Definition: json.hpp:5560
+
friend std::istream & operator>>(std::istream &i, basic_json &j)
deserialize from stream
Definition: json.hpp:4853
+
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:5382
+
typename basic_json::value_type value_type
the type of the values when the iterator is dereferenced
Definition: json.hpp:5313
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:1768
-
iterator insert(const_iterator pos, const_iterator first, const_iterator last)
inserts elements
Definition: json.hpp:4162
-
iterator insert(const_iterator pos, size_type cnt, const basic_json &val)
inserts elements
Definition: json.hpp:4114
-
json_reverse_iterator operator--(int)
post-decrement (it–)
Definition: json.hpp:5972
+
iterator insert(const_iterator pos, const_iterator first, const_iterator last)
inserts elements
Definition: json.hpp:4166
+
iterator insert(const_iterator pos, size_type cnt, const basic_json &val)
inserts elements
Definition: json.hpp:4118
+
json_reverse_iterator operator--(int)
post-decrement (it–)
Definition: json.hpp:5976
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:4012
+
void push_back(const typename object_t::value_type &val)
add an object to an object
Definition: json.hpp:4016
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:1466
-
iterator & operator++()
pre-increment (++it)
Definition: json.hpp:5856
-
friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
comparison: not equal
Definition: json.hpp:4514
+
iterator & operator++()
pre-increment (++it)
Definition: json.hpp:5860
+
friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
comparison: not equal
Definition: json.hpp:4518
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:5521
-
difference_type operator-(const json_reverse_iterator &other) const
return difference
Definition: json.hpp:6008
-
basic_json<> json
default JSON class
Definition: json.hpp:7622
-
reference front()
access the first element
Definition: json.hpp:3012
+
const_iterator & operator++()
pre-increment (++it)
Definition: json.hpp:5525
+
difference_type operator-(const json_reverse_iterator &other) const
return difference
Definition: json.hpp:6012
+
basic_json<> json
default JSON class
Definition: json.hpp:7631
+
reference front()
access the first element
Definition: json.hpp:3016
bool is_array() const noexcept
return whether value is an array
Definition: json.hpp:2081
-
const_iterator find(typename object_t::key_type key) const
find an element in a JSON object
Definition: json.hpp:3378
-
std::reverse_iterator< Base > base_iterator
shortcut to the reverse iterator adaptor
Definition: json.hpp:5947
-
json_reverse_iterator(const typename base_iterator::iterator_type &it)
create reverse iterator from iterator
Definition: json.hpp:5952
+
const_iterator find(typename object_t::key_type key) const
find an element in a JSON object
Definition: json.hpp:3382
+
std::reverse_iterator< Base > base_iterator
shortcut to the reverse iterator adaptor
Definition: json.hpp:5951
+
json_reverse_iterator(const typename base_iterator::iterator_type &it)
create reverse iterator from iterator
Definition: json.hpp:5956
a class to store JSON values
Definition: json.hpp:187
-
json_reverse_iterator & operator--()
pre-decrement (–it)
Definition: json.hpp:5978
+
json_reverse_iterator & operator--()
pre-decrement (–it)
Definition: json.hpp:5982
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:4493
-
void push_back(basic_json &&val)
add an object to an array
Definition: json.hpp:3928
-
const_iterator cbegin() const
returns a const iterator to the first element
Definition: json.hpp:3476
+
friend bool operator==(std::nullptr_t, const_reference v) noexcept
comparison: equal
Definition: json.hpp:4497
+
void push_back(basic_json &&val)
add an object to an array
Definition: json.hpp:3932
+
const_iterator cbegin() const
returns a const iterator to the first element
Definition: json.hpp:3480
bool is_string() const noexcept
return whether value is a string
Definition: json.hpp:2100
-
iterator & operator+=(difference_type i)
add to iterator
Definition: json.hpp:5878
+
iterator & operator+=(difference_type i)
add to iterator
Definition: json.hpp:5882
const PointerType get_ptr() const noexcept
get a pointer value (implicit)
Definition: json.hpp:2539
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:5807
-
reference operator+=(basic_json &&val)
add an object to an array
Definition: json.hpp:3953
+
const_iterator base_iterator
Definition: json.hpp:5811
+
reference operator+=(basic_json &&val)
add an object to an array
Definition: json.hpp:3957
basic_json(size_type cnt, const basic_json &val)
construct an array with count copies of given value
Definition: json.hpp:1530
-
a mutable random access iterator for the basic_json class
Definition: json.hpp:5804
-
iterator & operator-=(difference_type i)
subtract from iterator
Definition: json.hpp:5885
-
static basic_json parse(std::istream &&i, parser_callback_t cb=nullptr)
deserialize from stream
Definition: json.hpp:4811
-
reference operator[](const typename object_t::key_type &key)
access specified object element
Definition: json.hpp:2841
+
a mutable random access iterator for the basic_json class
Definition: json.hpp:5808
+
iterator & operator-=(difference_type i)
subtract from iterator
Definition: json.hpp:5889
+
static basic_json parse(std::istream &&i, parser_callback_t cb=nullptr)
deserialize from stream
Definition: json.hpp:4815
+
reference operator[](const typename object_t::key_type &key)
access specified object element
Definition: json.hpp:2845
STL namespace.
-
difference_type operator-(const iterator &other) const
Definition: json.hpp:5907
-
reference value() const
return the value of an iterator
Definition: json.hpp:5780
-
const_iterator end() const
returns a const iterator to one past the last element
Definition: json.hpp:3511
-
const_iterator(const const_iterator &other) noexcept
copy constructor
Definition: json.hpp:5373
-
reference at(const typename object_t::key_type &key)
access specified object element with bounds checking
Definition: json.hpp:2684
-
object_t::key_type key() const
return the key of an object iterator
Definition: json.hpp:5767
-
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3501
+
difference_type operator-(const iterator &other) const
Definition: json.hpp:5911
+
reference value() const
return the value of an iterator
Definition: json.hpp:5784
+
const_iterator end() const
returns a const iterator to one past the last element
Definition: json.hpp:3515
+
const_iterator(const const_iterator &other) noexcept
copy constructor
Definition: json.hpp:5377
+
reference at(const typename object_t::key_type &key)
access specified object element with bounds checking
Definition: json.hpp:2688
+
object_t::key_type key() const
return the key of an object iterator
Definition: json.hpp:5771
+
iterator end()
returns an iterator to one past the last element
Definition: json.hpp:3505
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:5836
-
reverse_iterator rend()
returns an iterator to the reverse-end
Definition: json.hpp:3590
+
reference operator*()
return a reference to the value pointed to by the iterator
Definition: json.hpp:5840
+
reverse_iterator rend()
returns an iterator to the reverse-end
Definition: json.hpp:3594
bool is_object() const noexcept
return whether value is an object
Definition: json.hpp:2062
-
const_iterator operator-(difference_type i)
subtract from iterator
Definition: json.hpp:5703
+
const_iterator operator-(difference_type i)
subtract from iterator
Definition: json.hpp:5707
bool is_discarded() const noexcept
return whether value is discarded
Definition: json.hpp:2124
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:5315
-
const_reverse_iterator rend() const
returns a const reverse iterator to one before the first
Definition: json.hpp:3598
-
size_type erase(const typename object_t::key_type &key)
remove element from a JSON object given a key
Definition: json.hpp:3292
+
typename basic_json::const_reference reference
defines a reference to the type iterated over (value_type)
Definition: json.hpp:5319
+
const_reverse_iterator rend() const
returns a const reverse iterator to one before the first
Definition: json.hpp:3602
+
size_type erase(const typename object_t::key_type &key)
remove element from a JSON object given a key
Definition: json.hpp:3296
bool is_boolean() const noexcept
return whether value is a boolean
Definition: json.hpp:1973
-
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3442
-
const_reference at(const typename object_t::key_type &key) const
access specified object element with bounds checking
Definition: json.hpp:2722
-
reference operator+=(const basic_json &val)
add an object to an array
Definition: json.hpp:3986
+
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3446
+
const_reference at(const typename object_t::key_type &key) const
access specified object element with bounds checking
Definition: json.hpp:2726
+
reference operator+=(const basic_json &val)
add an object to an array
Definition: json.hpp:3990
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:2020
-
iterator operator+(difference_type i)
add to iterator
Definition: json.hpp:5892
+
iterator operator+(difference_type i)
add to iterator
Definition: json.hpp:5896
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:3362
+
iterator find(typename object_t::key_type key)
find an element in a JSON object
Definition: json.hpp:3366
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:4680
-
iterator & operator--()
pre-decrement (–it)
Definition: json.hpp:5871
-
friend bool operator<(const_reference lhs, const_reference rhs) noexcept
comparison: less than
Definition: json.hpp:4575
-
pointer operator->() const
dereference the iterator
Definition: json.hpp:5484
+
friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
comparison: greater than or equal
Definition: json.hpp:4684
+
iterator & operator--()
pre-decrement (–it)
Definition: json.hpp:5875
+
friend bool operator<(const_reference lhs, const_reference rhs) noexcept
comparison: less than
Definition: json.hpp:4579
+
pointer operator->() const
dereference the iterator
Definition: json.hpp:5488
discarded by the the parser callback function
-
const_iterator cend() const
returns a const iterator to one past the last element
Definition: json.hpp:3535
-
typename Base::reference reference
the reference type for the pointed-to element
Definition: json.hpp:5949
-
size_type size() const noexcept
returns the number of elements
Definition: json.hpp:3745
+
const_iterator cend() const
returns a const iterator to one past the last element
Definition: json.hpp:3539
+
typename Base::reference reference
the reference type for the pointed-to element
Definition: json.hpp:5953
+
size_type size() const noexcept
returns the number of elements
Definition: json.hpp:3749
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:2612
+
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:2616
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:5956
-
iterator_wrapper_internal end()
return iterator end (needed for range-based for)
Definition: json.hpp:6129
+
json_reverse_iterator(const base_iterator &it)
create reverse iterator from base class
Definition: json.hpp:5960
+
iterator_wrapper_internal end()
return iterator end (needed for range-based for)
Definition: json.hpp:6133
value_t type() const noexcept
return the type of the JSON value (explicit)
Definition: json.hpp:1894
-
friend std::ostream & operator>>(const basic_json &j, std::ostream &o)
serialize to stream
Definition: json.hpp:4735
-
ValueType value(const typename object_t::key_type &key, ValueType default_value) const
access specified object element with default value
Definition: json.hpp:2961
-
object_t::key_type key() const
return the key of an object iterator
Definition: json.hpp:6020
+
friend std::ostream & operator>>(const basic_json &j, std::ostream &o)
serialize to stream
Definition: json.hpp:4739
+
ValueType value(const typename object_t::key_type &key, ValueType default_value) const
access specified object element with default value
Definition: json.hpp:2965
+
object_t::key_type key() const
return the key of an object iterator
Definition: json.hpp:6024
bool is_structured() const noexcept
return whether type is structured
Definition: json.hpp:1935
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:5311
-
void swap(array_t &other)
exchanges the values
Definition: json.hpp:4283
-
reverse_iterator rbegin()
returns an iterator to the reverse-beginning
Definition: json.hpp:3559
-
reference operator+=(const typename object_t::value_type &val)
add an object to an object
Definition: json.hpp:4035
+
typename basic_json::difference_type difference_type
a type to represent differences between iterators
Definition: json.hpp:5315
+
void swap(array_t &other)
exchanges the values
Definition: json.hpp:4287
+
reverse_iterator rbegin()
returns an iterator to the reverse-beginning
Definition: json.hpp:3563
+
reference operator+=(const typename object_t::value_type &val)
add an object to an object
Definition: json.hpp:4039
-
iterator_wrapper_internal begin()
return iterator begin (needed for range-based for)
Definition: json.hpp:6123
-
reference operator[](difference_type n) const
access to successor
Definition: json.hpp:5913
+
iterator_wrapper_internal begin()
return iterator begin (needed for range-based for)
Definition: json.hpp:6127
+
reference operator[](difference_type n) const
access to successor
Definition: json.hpp:5917
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:3567
+
const_reverse_iterator rbegin() const
returns a const reverse iterator to the last element
Definition: json.hpp:3571
~basic_json()
destructor
Definition: json.hpp:1794
basic_json(const basic_json &other)
copy constructor
Definition: json.hpp:1672
-
const_iterator operator+(difference_type i)
add to iterator
Definition: json.hpp:5695
+
const_iterator operator+(difference_type i)
add to iterator
Definition: json.hpp:5699
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:1954
-
void swap(string_t &other)
exchanges the values
Definition: json.hpp:4347
-
reference value() const
return the value of an iterator
Definition: json.hpp:5919
-
const_iterator operator--(int)
post-decrement (it–)
Definition: json.hpp:5548
-
void erase(const size_type idx)
remove element from a JSON array given an index
Definition: json.hpp:3327
-
void clear() noexcept
clears the contents
Definition: json.hpp:3862
-
pointer operator->()
dereference the iterator
Definition: json.hpp:5842
+
void swap(string_t &other)
exchanges the values
Definition: json.hpp:4351
+
reference value() const
return the value of an iterator
Definition: json.hpp:5923
+
const_iterator operator--(int)
post-decrement (it–)
Definition: json.hpp:5552
+
void erase(const size_type idx)
remove element from a JSON array given an index
Definition: json.hpp:3331
+
void clear() noexcept
clears the contents
Definition: json.hpp:3866
+
pointer operator->()
dereference the iterator
Definition: json.hpp:5846
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:3020
-
bool operator>=(const const_iterator &other) const
comparison: greater than or equal
Definition: json.hpp:5657
-
iterator insert(const_iterator pos, std::initializer_list< basic_json > ilist)
inserts elements
Definition: json.hpp:4216
+
const_reference front() const
access the first element
Definition: json.hpp:3024
+
bool operator>=(const const_iterator &other) const
comparison: greater than or equal
Definition: json.hpp:5661
+
iterator insert(const_iterator pos, std::initializer_list< basic_json > ilist)
inserts elements
Definition: json.hpp:4220
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:5663
+
const_iterator & operator+=(difference_type i)
add to iterator
Definition: json.hpp:5667
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:1376
-
difference_type operator-(const const_iterator &other) const
return difference
Definition: json.hpp:5711
-
friend bool operator==(const_reference lhs, const_reference rhs) noexcept
comparison: equal
Definition: json.hpp:4426
+
difference_type operator-(const const_iterator &other) const
return difference
Definition: json.hpp:5715
+
friend bool operator==(const_reference lhs, const_reference rhs) noexcept
comparison: equal
Definition: json.hpp:4430
bool is_number() const noexcept
return whether value is a number
Definition: json.hpp:1997
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:3644
+
const_reverse_iterator crend() const
returns a const reverse iterator to one before the first
Definition: json.hpp:3648
basic_json() noexcept=default
create a null object (implicitly)
the parser read a key of a value in an object
-
bool empty() const noexcept
checks whether the container is empty
Definition: json.hpp:3688
-
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:2987
-
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:4253
+
bool empty() const noexcept
checks whether the container is empty
Definition: json.hpp:3692
+
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:2991
+
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:4257
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:3621
-
reference value() const
return the value of an iterator
Definition: json.hpp:6027
+
const_reverse_iterator crbegin() const
returns a const reverse iterator to the last element
Definition: json.hpp:3625
+
reference value() const
return the value of an iterator
Definition: json.hpp:6031
-
const_iterator(pointer object)
constructor for a given JSON instance
Definition: json.hpp:5323
-
friend bool operator<(const value_t lhs, const value_t rhs)
comparison operator for JSON types
Definition: json.hpp:4380
-
iterator(pointer object) noexcept
constructor for a given JSON instance
Definition: json.hpp:5815
-
bool operator<(const const_iterator &other) const
comparison: smaller
Definition: json.hpp:5617
+
const_iterator(pointer object)
constructor for a given JSON instance
Definition: json.hpp:5327
+
friend bool operator<(const value_t lhs, const value_t rhs)
comparison operator for JSON types
Definition: json.hpp:4384
+
iterator(pointer object) noexcept
constructor for a given JSON instance
Definition: json.hpp:5819
+
bool operator<(const const_iterator &other) const
comparison: smaller
Definition: json.hpp:5621
string_t dump(const int indent=-1) const
serialization
Definition: json.hpp:1863
-
friend bool operator!=(const_reference v, std::nullptr_t) noexcept
comparison: not equal
Definition: json.hpp:4537
-
const_iterator & operator-=(difference_type i)
subtract from iterator
Definition: json.hpp:5689
+
friend bool operator!=(const_reference v, std::nullptr_t) noexcept
comparison: not equal
Definition: json.hpp:4541
+
const_iterator & operator-=(difference_type i)
subtract from iterator
Definition: json.hpp:5693
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:4774
-
InteratorType erase(InteratorType first, InteratorType last)
remove elements given an iterator range
Definition: json.hpp:3212
-
json_reverse_iterator operator++(int)
post-increment (it++)
Definition: json.hpp:5959
+
static basic_json parse(const string_t &s, parser_callback_t cb=nullptr)
deserialize from string
Definition: json.hpp:4778
+
InteratorType erase(InteratorType first, InteratorType last)
remove elements given an iterator range
Definition: json.hpp:3216
+
json_reverse_iterator operator++(int)
post-increment (it++)
Definition: json.hpp:5963
PointerType get_ptr() noexcept
get a pointer value (implicit)
Definition: json.hpp:2524
-
const_iterator(const iterator &other)
copy constructor given a nonconst iterator
Definition: json.hpp:5348
-
friend bool operator!=(std::nullptr_t, const_reference v) noexcept
comparison: not equal
Definition: json.hpp:4546
-
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:3111
-
bool operator<=(const const_iterator &other) const
comparison: less than or equal
Definition: json.hpp:5645
+
const_iterator(const iterator &other)
copy constructor given a nonconst iterator
Definition: json.hpp:5352
+
friend bool operator!=(std::nullptr_t, const_reference v) noexcept
comparison: not equal
Definition: json.hpp:4550
+
InteratorType erase(InteratorType pos)
remove element given an iterator
Definition: json.hpp:3115
+
bool operator<=(const const_iterator &other) const
comparison: less than or equal
Definition: json.hpp:5649
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:3046
+
reference back()
access the last element
Definition: json.hpp:3050
bool is_number_float() const noexcept
return whether value is a floating-point number
Definition: json.hpp:2043
the parser read { and started to process a JSON object
-
const_iterator operator++(int)
post-increment (it++)
Definition: json.hpp:5513
+
const_iterator operator++(int)
post-increment (it++)
Definition: json.hpp:5517
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:5819
-
const_reference back() const
access the last element
Definition: json.hpp:3056
+
iterator(const iterator &other) noexcept
copy constructor
Definition: json.hpp:5823
+
const_reference back() const
access the last element
Definition: json.hpp:3060
basic_json(InputIT first, InputIT last)
construct a JSON container given an iterator range
Definition: json.hpp:1574
-
static basic_json parse(std::istream &i, parser_callback_t cb=nullptr)
deserialize from stream
Definition: json.hpp:4803
-
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:3408
-
size_type max_size() const noexcept
returns the maximum possible number of elements
Definition: json.hpp:3805
-
void push_back(const basic_json &val)
add an object to an array
Definition: json.hpp:3963
-
bool operator==(const const_iterator &other) const
comparison: equal
Definition: json.hpp:5583
-
json_reverse_iterator & operator++()
pre-increment (++it)
Definition: json.hpp:5965
-
bool operator>(const const_iterator &other) const
comparison: greater than
Definition: json.hpp:5651
-
friend bool operator>(const_reference lhs, const_reference rhs) noexcept
comparison: greater than
Definition: json.hpp:4658
+
static basic_json parse(std::istream &i, parser_callback_t cb=nullptr)
deserialize from stream
Definition: json.hpp:4807
+
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:3412
+
size_type max_size() const noexcept
returns the maximum possible number of elements
Definition: json.hpp:3809
+
void push_back(const basic_json &val)
add an object to an array
Definition: json.hpp:3967
+
bool operator==(const const_iterator &other) const
comparison: equal
Definition: json.hpp:5587
+
json_reverse_iterator & operator++()
pre-increment (++it)
Definition: json.hpp:5969
+
bool operator>(const const_iterator &other) const
comparison: greater than
Definition: json.hpp:5655
+
friend bool operator>(const_reference lhs, const_reference rhs) noexcept
comparison: greater than
Definition: json.hpp:4662
basic_json(basic_json &&other) noexcept
move constructor
Definition: json.hpp:1738
-
const_iterator begin() const
returns a const iterator to the first element
Definition: json.hpp:3452
-
const_reference at(size_type idx) const
access specified array element with bounds checking
Definition: json.hpp:2646
-
json_reverse_iterator & operator+=(difference_type i)
add to iterator
Definition: json.hpp:5985
-
a const random access iterator for the basic_json class
Definition: json.hpp:5302
+
const_iterator begin() const
returns a const iterator to the first element
Definition: json.hpp:3456
+
const_reference at(size_type idx) const
access specified array element with bounds checking
Definition: json.hpp:2650
+
json_reverse_iterator & operator+=(difference_type i)
add to iterator
Definition: json.hpp:5989
+
a const random access iterator for the basic_json class
Definition: json.hpp:5306
a template for a reverse iterator class
Definition: json.hpp:232
-
void swap(object_t &other)
exchanges the values
Definition: json.hpp:4315
-
std::bidirectional_iterator_tag iterator_category
the category of the iterator
Definition: json.hpp:5317
+
void swap(object_t &other)
exchanges the values
Definition: json.hpp:4319
+
std::bidirectional_iterator_tag iterator_category
the category of the iterator
Definition: json.hpp:5321
bool is_primitive() const noexcept
return whether type is primitive
Definition: json.hpp:1915
-
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4061
-
friend bool operator==(const_reference v, std::nullptr_t) noexcept
comparison: equal
Definition: json.hpp:4484
+
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4065
+
friend bool operator==(const_reference v, std::nullptr_t) noexcept
comparison: equal
Definition: json.hpp:4488
-
reference operator[](difference_type n) const
access to successor
Definition: json.hpp:6014
+
reference operator[](difference_type n) const
access to successor
Definition: json.hpp:6018
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:5733
-
reference operator*() const
return a reference to the value pointed to by the iterator
Definition: json.hpp:5450
+
reference operator[](difference_type n) const
access to successor
Definition: json.hpp:5737
+
reference operator*() const
return a reference to the value pointed to by the iterator
Definition: json.hpp:5454
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:4839
+
friend std::istream & operator<<(basic_json &j, std::istream &i)
deserialize from stream
Definition: json.hpp:4843
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:7657
-
friend std::ostream & operator<<(std::ostream &o, const basic_json &j)
serialize to stream
Definition: json.hpp:4717
-
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:5824
+
std::size_t operator()(const nlohmann::json &j) const
return a hash value for a JSON object
Definition: json.hpp:7666
+
friend std::ostream & operator<<(std::ostream &o, const basic_json &j)
serialize to stream
Definition: json.hpp:4721
+
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:5828
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:2759
-
iterator operator--(int)
post-decrement (it–)
Definition: json.hpp:5863
-
json_reverse_iterator operator+(difference_type i) const
add to iterator
Definition: json.hpp:5992
+
reference operator[](size_type idx)
access specified array element
Definition: json.hpp:2763
+
iterator operator--(int)
post-decrement (it–)
Definition: json.hpp:5867
+
json_reverse_iterator operator+(difference_type i) const
add to iterator
Definition: json.hpp:5996
parse_event_t
JSON callback events.
Definition: json.hpp:754
-
iterator operator-(difference_type i)
subtract from iterator
Definition: json.hpp:5900
-
wrapper to access iterator member functions in range-based for
Definition: json.hpp:6041
+
iterator operator-(difference_type i)
subtract from iterator
Definition: json.hpp:5904
+
wrapper to access iterator member functions in range-based for
Definition: json.hpp:6045
diff --git a/namespacemembers.html b/namespacemembers.html index d09d4482a..4e8653d34 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 56a358746..c492e9768 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 8ebbd69fe..6c95436a3 100644 --- a/namespacenlohmann.html +++ b/namespacenlohmann.html @@ -116,7 +116,7 @@ Typedefs diff --git a/namespacenlohmann_1_1anonymous__namespace_02json_8hpp_03.html b/namespacenlohmann_1_1anonymous__namespace_02json_8hpp_03.html index be5776b03..61ea27c78 100644 --- a/namespacenlohmann_1_1anonymous__namespace_02json_8hpp_03.html +++ b/namespacenlohmann_1_1anonymous__namespace_02json_8hpp_03.html @@ -105,7 +105,7 @@ Classes diff --git a/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html b/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html index 640c7362b..cdf33a4c2 100644 --- a/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html +++ b/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html @@ -101,7 +101,7 @@ 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
-

Definition at line 7622 of file json.hpp.

+

Definition at line 7631 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 d4d65a30d..9f116f5c9 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');
@@ -250,7 +250,7 @@ template<typename ValueType , typename std::enable_if<

Implict type conversion between the JSON value and a compatible value. The call is realized by calling get() const.

Template Parameters
- +
ValueTypenon-pointer type compatible to the JSON value, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays
ValueTypenon-pointer type compatible to the JSON value, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. The character type of string_t as well as an initializer list of this type is excluded to avoid ambiguities as these types implicitly convert to std::string.
@@ -327,7 +327,7 @@ 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
-

Definition at line 2575 of file json.hpp.

+

Definition at line 2579 of file json.hpp.

@@ -337,7 +337,7 @@ array: [1,2,3,4,5] diff --git a/classnlohmann_1_1basic__json_af74581d177dafc38df5a126ccd358999.html b/classnlohmann_1_1basic__json_af74581d177dafc38df5a126ccd358999.html index 7e8d6eb81..ea4b3b683 100644 --- a/classnlohmann_1_1basic__json_af74581d177dafc38df5a126ccd358999.html +++ b/classnlohmann_1_1basic__json_af74581d177dafc38df5a126ccd358999.html @@ -319,7 +319,7 @@ template<template< typename U, typename V, typename...Args > class Obje value() for access by value with a default value
Since
version 1.0
-

Definition at line 2841 of file json.hpp.

+

Definition at line 2845 of file json.hpp.

@@ -329,7 +329,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 248dae1d0..561542e53 100644 --- a/classnlohmann_1_1basic__json_af7d0adc984d04fc70c3d29fcd63e096a.html +++ b/classnlohmann_1_1basic__json_af7d0adc984d04fc70c3d29fcd63e096a.html @@ -290,15 +290,15 @@ template<template< typename U, typename V, typename...Args > class Obje
15  std::cout << v << '\n';
16 }
a class to store JSON values
Definition: json.hpp:187
-
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3442
+
iterator begin()
returns an iterator to the first element
Definition: json.hpp:3446
namespace for Niels Lohmann
Definition: json.hpp:78
-
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4061
+
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:4065
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
-

Definition at line 4061 of file json.hpp.

+

Definition at line 4065 of file json.hpp.

@@ -308,7 +308,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 db0e6d035..e532c2367 100644 --- a/classnlohmann_1_1basic__json_afc4223b5ad03b1b76e925374a8fff98e.html +++ b/classnlohmann_1_1basic__json_afc4223b5ad03b1b76e925374a8fff98e.html @@ -301,7 +301,7 @@ template<template< typename U, typename V, typename...Args > class Obje diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 667a394c6..7145effee 100644 --- a/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -92,7 +92,7 @@ Files
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 7404905cd..92222d1f5 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 7650 of file json.hpp.

+

Definition at line 7659 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 a185c36d5..0247010db 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 @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Since
version 1.0
-

Definition at line 7657 of file json.hpp.

+

Definition at line 7666 of file json.hpp.

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