Files
CocoaTweet/help/html/json_8hpp_source.html
T

17067 lines
2.9 MiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>CocoaTweet: build/_deps/json-src/include/nlohmann/json.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">CocoaTweet
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_4fef79e7177ba769987a8da36c892c5f.html">build</a></li><li class="navelem"><a class="el" href="dir_a57a94e38c03835eed49274b75b0176d.html">_deps</a></li><li class="navelem"><a class="el" href="dir_06bf8d3e2008620d16ac418f1dde3e85.html">json-src</a></li><li class="navelem"><a class="el" href="dir_7b204e709373ad92a397cb8b8f7260f0.html">include</a></li><li class="navelem"><a class="el" href="dir_0c442c3451b59b63dfe09a0379a94178.html">nlohmann</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">json.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="json_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> __ _____ _____ _____</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> __| | __| | | | JSON for Modern C++</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">| | |__ | | | | | | version 3.7.3</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">|_____|_____|_____|_|___| https://github.com/nlohmann/json</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">Licensed under the MIT License &lt;http://opensource.org/licenses/MIT&gt;.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">SPDX-License-Identifier: MIT</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">Copyright (c) 2013-2019 Niels Lohmann &lt;http://nlohmann.me&gt;.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">in the Software without restriction, including without limitation the rights</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">copies of the Software, and to permit persons to whom the Software is</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">The above copyright notice and this permission notice shall be included in all</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">copies or substantial portions of the Software.</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">SOFTWARE.</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef INCLUDE_NLOHMANN_JSON_HPP_</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define INCLUDE_NLOHMANN_JSON_HPP_</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="json_8hpp.html#a7c94253db90041af11dd946a49f0f8a4"> 33</a></span>&#160;<span class="preprocessor">#define NLOHMANN_JSON_VERSION_MAJOR 3</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="json_8hpp.html#ab5ca1e164894d78d3276d2e5fe58c5e3"> 34</a></span>&#160;<span class="preprocessor">#define NLOHMANN_JSON_VERSION_MINOR 7</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="json_8hpp.html#a307e0238ebc35e99ea45c68823eb83eb"> 35</a></span>&#160;<span class="preprocessor">#define NLOHMANN_JSON_VERSION_PATCH 3</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span> <span class="comment">// all_of, find, for_each</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span> <span class="comment">// assert</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;ciso646&gt;</span> <span class="comment">// and, not, or</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// nullptr_t, ptrdiff_t, size_t</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span> <span class="comment">// hash, less</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;initializer_list&gt;</span> <span class="comment">// initializer_list</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;iosfwd&gt;</span> <span class="comment">// istream, ostream</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// random_access_iterator_tag</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span> <span class="comment">// unique_ptr</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;numeric&gt;</span> <span class="comment">// accumulate</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string, stoi, to_string</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// declval, forward, move, pair, swap</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span> <span class="comment">// vector</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">// #include &lt;nlohmann/adl_serializer.hpp&gt;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/conversions/from_json.hpp&gt;</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span> <span class="comment">// transform</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span> <span class="comment">// array</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &lt;ciso646&gt;</span> <span class="comment">// and, not</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &lt;forward_list&gt;</span> <span class="comment">// forward_list</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// inserter, front_inserter, end</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span> <span class="comment">// map</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#include &lt;tuple&gt;</span> <span class="comment">// tuple, make_tuple</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span> <span class="comment">// is_arithmetic, is_same, is_enum, underlying_type, is_convertible</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#include &lt;unordered_map&gt;</span> <span class="comment">// unordered_map</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// pair, declval</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#include &lt;valarray&gt;</span> <span class="comment">// valarray</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/exceptions.hpp&gt;</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#include &lt;exception&gt;</span> <span class="comment">// exception</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#include &lt;stdexcept&gt;</span> <span class="comment">// runtime_error</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// to_string</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/position_t.hpp&gt;</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// size_t</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespacenlohmann.html"> 84</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html"> 86</a></span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;{</div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1position__t.html"> 89</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;{</div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1position__t.html#a94cf85cd91d478c20ae143eba906ea1a"> 92</a></span>&#160; std::size_t <a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a94cf85cd91d478c20ae143eba906ea1a">chars_read_total</a> = 0;</div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1position__t.html#a74df94563dd32102152ceb8c6d9041d8"> 94</a></span>&#160; std::size_t <a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a74df94563dd32102152ceb8c6d9041d8">chars_read_current_line</a> = 0;</div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1position__t.html#a4bbad8bc2c0d17c1b61c3ce729908b71"> 96</a></span>&#160; std::size_t <a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a4bbad8bc2c0d17c1b61c3ce729908b71">lines_read</a> = 0;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1position__t.html#ac9ad1e0f143f162e2e0c979cd678d683"> 99</a></span>&#160; constexpr <span class="keyword">operator</span> size_t()<span class="keyword"> const</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a94cf85cd91d478c20ae143eba906ea1a">chars_read_total</a>;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;};</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// pair</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">// #include &lt;nlohmann/thirdparty/hedley/hedley.hpp&gt;</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">/* Hedley - https://nemequ.github.io/hedley</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> * Created by Evan Nemerson &lt;evan@nemerson.com&gt;</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> * To the extent possible under law, the author(s) have dedicated all</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> * copyright and related and neighboring rights to this software to</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * the public domain worldwide. This software is distributed without</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> * any warranty.</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> * For details, see &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> * SPDX-License-Identifier: CC0-1.0</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor">#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION &lt; 11)</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_VERSION)</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_VERSION</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae4654024695783bdf7cbd900f0e0634a"> 129</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_VERSION 11</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_STRINGIFY_EX)</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_STRINGIFY_EX</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8b50e69690eed3a7e11797b1122b4302"> 134</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_STRINGIFY_EX(x) #x</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_STRINGIFY)</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_STRINGIFY</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="json_8hpp.html#a9b2aefadecfe77306599a08b0d8147ca"> 139</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x)</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CONCAT_EX)</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CONCAT_EX</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="json_8hpp.html#aee52531ff30270c04958309efa66a5da"> 144</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_CONCAT_EX(a,b) a##b</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CONCAT)</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CONCAT</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="json_8hpp.html#a4ec16c2642fdc5876d8dbeab3445b313"> 149</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b)</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_VERSION_ENCODE)</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_VERSION_ENCODE</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="json_8hpp.html#aa1da535c59b21f70e5967b66473543f0"> 154</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision))</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR)</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_VERSION_DECODE_MAJOR</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="json_8hpp.html#a50f81c80525d6fbce743d5d28b53ff73"> 159</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000)</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR)</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_VERSION_DECODE_MINOR</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae55f01749c4cc564b20b0f2650f10519"> 164</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000)</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION)</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_VERSION_DECODE_REVISION</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2d04cc47c899e9addd019e0e7d1ebdbb"> 169</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000)</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_VERSION)</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GNUC_VERSION</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor">#if defined(__GNUC__) &amp;&amp; defined(__GNUC_PATCHLEVEL__)</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="preprocessor">#elif defined(__GNUC__)</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0)</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK)</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GNUC_VERSION_CHECK</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_VERSION)</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="json_8hpp.html#a074e795380699252f28c9526ca83e586"> 186</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_MSVC_VERSION)</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_MSVC_VERSION</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor">#if defined(_MSC_FULL_VER) &amp;&amp; (_MSC_FULL_VER &gt;= 140000000)</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100)</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="preprocessor">#elif defined(_MSC_FULL_VER)</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10)</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor">#elif defined(_MSC_VER)</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0)</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK)</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_MSVC_VERSION_CHECK</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor">#if !defined(_MSC_VER)</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="json_8hpp.html#ac3dc0b5b04f307fc875f9470c0cc841f"> 204</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor">#elif defined(_MSC_VER) &amp;&amp; (_MSC_VER &gt;= 1400)</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER &gt;= ((major * 10000000) + (minor * 100000) + (patch)))</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor">#elif defined(_MSC_VER) &amp;&amp; (_MSC_VER &gt;= 1200)</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER &gt;= ((major * 1000000) + (minor * 10000) + (patch)))</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER &gt;= ((major * 100) + (minor)))</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_INTEL_VERSION)</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_INTEL_VERSION</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="preprocessor">#if defined(__INTEL_COMPILER) &amp;&amp; defined(__INTEL_COMPILER_UPDATE)</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE)</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor">#elif defined(__INTEL_COMPILER)</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0)</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK)</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_INTEL_VERSION_CHECK</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_INTEL_VERSION)</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae51b1abb6876168df25d3f36fa335c94"> 228</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PGI_VERSION)</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_PGI_VERSION</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="preprocessor">#if defined(__PGI) &amp;&amp; defined(__PGIC__) &amp;&amp; defined(__PGIC_MINOR__) &amp;&amp; defined(__PGIC_PATCHLEVEL__)</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__)</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PGI_VERSION_CHECK)</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_PGI_VERSION_CHECK</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PGI_VERSION)</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="json_8hpp.html#a009a77cb8a9fd33aafff173bb945128d"> 244</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_SUNPRO_VERSION)</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_SUNPRO_VERSION</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor">#if defined(__SUNPRO_C) &amp;&amp; (__SUNPRO_C &gt; 0x1000)</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C &gt;&gt; 16) &amp; 0xf) * 10) + ((__SUNPRO_C &gt;&gt; 12) &amp; 0xf), (((__SUNPRO_C &gt;&gt; 8) &amp; 0xf) * 10) + ((__SUNPRO_C &gt;&gt; 4) &amp; 0xf), (__SUNPRO_C &amp; 0xf) * 10)</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="preprocessor">#elif defined(__SUNPRO_C)</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C &gt;&gt; 8) &amp; 0xf, (__SUNPRO_C &gt;&gt; 4) &amp; 0xf, (__SUNPRO_C) &amp; 0xf)</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="preprocessor">#elif defined(__SUNPRO_CC) &amp;&amp; (__SUNPRO_CC &gt; 0x1000)</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC &gt;&gt; 16) &amp; 0xf) * 10) + ((__SUNPRO_CC &gt;&gt; 12) &amp; 0xf), (((__SUNPRO_CC &gt;&gt; 8) &amp; 0xf) * 10) + ((__SUNPRO_CC &gt;&gt; 4) &amp; 0xf), (__SUNPRO_CC &amp; 0xf) * 10)</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor">#elif defined(__SUNPRO_CC)</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC &gt;&gt; 8) &amp; 0xf, (__SUNPRO_CC &gt;&gt; 4) &amp; 0xf, (__SUNPRO_CC) &amp; 0xf)</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK)</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_SUNPRO_VERSION)</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="json_8hpp.html#a4b6d318de76d6d23850ec1a588bdeffa"> 266</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; </div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION)</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_EMSCRIPTEN_VERSION</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor">#if defined(__EMSCRIPTEN__)</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__)</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; </div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK)</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION)</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="json_8hpp.html#a472a0656b154bb30cf6e8fb8a31b9209"> 282</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; </div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_ARM_VERSION)</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_ARM_VERSION</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="preprocessor">#if defined(__CC_ARM) &amp;&amp; defined(__ARMCOMPILER_VERSION)</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100)</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="preprocessor">#elif defined(__CC_ARM) &amp;&amp; defined(__ARMCC_VERSION)</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100)</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; </div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_ARM_VERSION_CHECK)</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_ARM_VERSION_CHECK</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_ARM_VERSION)</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="json_8hpp.html#aec1d1b1e286d1610ff11dbb29bf3e8cf"> 300</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; </div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_IBM_VERSION)</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_IBM_VERSION</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="preprocessor">#if defined(__ibmxl__)</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__)</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor">#elif defined(__xlC__) &amp;&amp; defined(__xlC_ver__)</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ &gt;&gt; 8, __xlC__ &amp; 0xff, (__xlC_ver__ &gt;&gt; 8) &amp; 0xff)</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor">#elif defined(__xlC__)</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ &gt;&gt; 8, __xlC__ &amp; 0xff, 0)</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; </div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_IBM_VERSION_CHECK)</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_IBM_VERSION_CHECK</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_IBM_VERSION)</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="json_8hpp.html#a66ec7d7c320280d6e75cb3634048cd49"> 320</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; </div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_TI_VERSION)</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_TI_VERSION</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="preprocessor">#if defined(__TI_COMPILER_VERSION__)</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_TI_VERSION_CHECK)</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_TI_VERSION_CHECK</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_TI_VERSION)</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="json_8hpp.html#a3d620ef5f95be933b3d8e24d4fc5b6d5"> 336</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CRAY_VERSION)</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CRAY_VERSION</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="preprocessor">#if defined(_CRAYC)</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="preprocessor"> #if defined(_RELEASE_PATCHLEVEL)</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL)</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0)</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; </div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK)</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CRAY_VERSION_CHECK</span></div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CRAY_VERSION)</span></div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="json_8hpp.html#a5d9ed879aa65e4db12a81ee95529c3e4"> 356</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; </div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_IAR_VERSION)</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_IAR_VERSION</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="preprocessor">#if defined(__IAR_SYSTEMS_ICC__)</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="preprocessor"> #if __VER__ &gt; 1000</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000))</span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(VER / 100, __VER__ % 100, 0)</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; </div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_IAR_VERSION_CHECK)</span></div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_IAR_VERSION_CHECK</span></div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_IAR_VERSION)</span></div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8788394855e9b5a1cc32327db5a613cb"> 376</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; </div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_TINYC_VERSION)</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_TINYC_VERSION</span></div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="preprocessor">#if defined(__TINYC__)</span></div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100)</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; </div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK)</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_TINYC_VERSION_CHECK</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_TINYC_VERSION)</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="json_8hpp.html#a38192f48e8c6ee0018a988d54e97cacf"> 392</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DMC_VERSION)</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DMC_VERSION</span></div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="preprocessor">#if defined(__DMC__)</span></div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ &gt;&gt; 8, (__DMC__ &gt;&gt; 4) &amp; 0xf, __DMC__ &amp; 0xf)</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; </div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DMC_VERSION_CHECK)</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DMC_VERSION_CHECK</span></div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DMC_VERSION)</span></div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="json_8hpp.html#af21c5dbd9df3b2e245ae547e2d940adc"> 408</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; </div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_COMPCERT_VERSION)</span></div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_COMPCERT_VERSION</span></div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="preprocessor">#if defined(__COMPCERT_VERSION__)</span></div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100)</span></div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; </div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK)</span></div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK</span></div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_COMPCERT_VERSION)</span></div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="json_8hpp.html#ad8f9aee7d709155d6745cb3f77c6ff0c"> 424</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; </div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PELLES_VERSION)</span></div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_PELLES_VERSION</span></div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="preprocessor">#if defined(__POCC__)</span></div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0)</span></div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; </div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK)</span></div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_PELLES_VERSION_CHECK</span></div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PELLES_VERSION)</span></div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="json_8hpp.html#a21937c8e7c79a1bef6695691c733e29f"> 440</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; </div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_VERSION)</span></div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GCC_VERSION</span></div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<span class="preprocessor"> defined(JSON_HEDLEY_GNUC_VERSION) &amp;&amp; \</span></div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="preprocessor"> !defined(__clang__) &amp;&amp; \</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="preprocessor"> !defined(JSON_HEDLEY_INTEL_VERSION) &amp;&amp; \</span></div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="preprocessor"> !defined(JSON_HEDLEY_PGI_VERSION) &amp;&amp; \</span></div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="preprocessor"> !defined(JSON_HEDLEY_ARM_VERSION) &amp;&amp; \</span></div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="preprocessor"> !defined(JSON_HEDLEY_TI_VERSION) &amp;&amp; \</span></div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="preprocessor"> !defined(__COMPCERT__)</span></div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION</span></div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; </div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_VERSION_CHECK)</span></div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GCC_VERSION_CHECK</span></div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_VERSION)</span></div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION &gt;= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="json_8hpp.html#aaf82a065634719d57994ef5876e208ff"> 463</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; </div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_HAS_ATTRIBUTE)</span></div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_HAS_ATTRIBUTE</span></div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor">#if defined(__has_attribute)</span></div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute)</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00472"></a><span class="lineno"><a class="line" href="json_8hpp.html#af41dc3300eaa6e5e6a976730d160a268"> 472</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0)</span></div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; </div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE)</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE</span></div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="preprocessor">#if defined(__has_attribute)</span></div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) __has_attribute(attribute)</span></div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00481"></a><span class="lineno"><a class="line" href="json_8hpp.html#afdf01f41465021815bb6fc4d8c1839fd"> 481</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; </div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE)</span></div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE</span></div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="preprocessor">#if defined(__has_attribute)</span></div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) __has_attribute(attribute)</span></div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00490"></a><span class="lineno"><a class="line" href="json_8hpp.html#af33c67f65300eb91494f25bf583f5bd7"> 490</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; </div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE)</span></div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE</span></div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="preprocessor"> defined(__has_cpp_attribute) &amp;&amp; \</span></div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="preprocessor"> defined(__cplusplus) &amp;&amp; \</span></div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="preprocessor"> (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0))</span></div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute)</span></div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2c4e6a04293aaf333a31698dea661b3b"> 502</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0)</span></div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; </div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS)</span></div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS</span></div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="preprocessor">#if !defined(__cplusplus) || !defined(__has_cpp_attribute)</span></div>
<div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="json_8hpp.html#ad5b94be3095ea0549561c1bc951c5998"> 509</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)</span></div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="preprocessor"> !defined(JSON_HEDLEY_PGI_VERSION) &amp;&amp; \</span></div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="preprocessor"> (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) &amp;&amp; \</span></div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="preprocessor"> (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0))</span></div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute)</span></div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)</span></div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; </div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE)</span></div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE</span></div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor">#if defined(__has_cpp_attribute) &amp;&amp; defined(__cplusplus)</span></div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00525"></a><span class="lineno"><a class="line" href="json_8hpp.html#a938dadb6cadaaaccf72990d09be5dc0a"> 525</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; </div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE)</span></div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE</span></div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="preprocessor">#if defined(__has_cpp_attribute) &amp;&amp; defined(__cplusplus)</span></div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)</span></div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="json_8hpp.html#aaa3c748298e83bf6a67b583b83233c11"> 534</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; </div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_HAS_BUILTIN)</span></div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_HAS_BUILTIN</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="preprocessor">#if defined(__has_builtin)</span></div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin)</span></div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="json_8hpp.html#acf8ab10ce06ffe6f54840b555b15121c"> 543</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0)</span></div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; </div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN)</span></div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_BUILTIN</span></div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="preprocessor">#if defined(__has_builtin)</span></div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)</span></div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="json_8hpp.html#a92764b738f44272e1b18c3ef1403c894"> 552</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; </div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN)</span></div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_BUILTIN</span></div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<span class="preprocessor">#if defined(__has_builtin)</span></div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)</span></div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="json_8hpp.html#aa210655ec7cc8387bef8ade74c3af647"> 561</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; </div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_HAS_FEATURE)</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_HAS_FEATURE</span></div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="preprocessor">#if defined(__has_feature)</span></div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature)</span></div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="json_8hpp.html#a752eb648bbfc7bcd8a4624c43f520412"> 570</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_FEATURE(feature) (0)</span></div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; </div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE)</span></div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_FEATURE</span></div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;<span class="preprocessor">#if defined(__has_feature)</span></div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)</span></div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="json_8hpp.html#ad5dab327c783036962c7d921a4144676"> 579</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; </div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_FEATURE)</span></div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_FEATURE</span></div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="preprocessor">#if defined(__has_feature)</span></div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)</span></div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae9f353e2ea047111e419855144b06ab7"> 588</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; </div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_HAS_EXTENSION)</span></div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_HAS_EXTENSION</span></div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="preprocessor">#if defined(__has_extension)</span></div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension)</span></div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="json_8hpp.html#a320bfe79028a67cd5873f917bc5418dd"> 597</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_EXTENSION(extension) (0)</span></div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION)</span></div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_EXTENSION</span></div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="preprocessor">#if defined(__has_extension)</span></div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)</span></div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2417cc05952936574c0a6ed96d73d8e2"> 606</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; </div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION)</span></div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_EXTENSION</span></div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="preprocessor">#if defined(__has_extension)</span></div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)</span></div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="json_8hpp.html#af488159969a8b7154820cffe04bb4917"> 615</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; </div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE)</span></div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="preprocessor">#if defined(__has_declspec_attribute)</span></div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute)</span></div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="json_8hpp.html#ac256365345e803d24cbd9651d3cb0274"> 624</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0)</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; </div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE)</span></div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE</span></div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;<span class="preprocessor">#if defined(__has_declspec_attribute)</span></div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)</span></div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="json_8hpp.html#a005d6f0dbab6f7152e43fb85fc4f4990"> 633</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; </div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE)</span></div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE</span></div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;<span class="preprocessor">#if defined(__has_declspec_attribute)</span></div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)</span></div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00642"></a><span class="lineno"><a class="line" href="json_8hpp.html#a164e098f308804c3bada63613ad75dab"> 642</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; </div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_HAS_WARNING)</span></div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_HAS_WARNING</span></div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="preprocessor">#if defined(__has_warning)</span></div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning)</span></div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="json_8hpp.html#a472922971d1cd7308a4402042bdafe34"> 651</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_HAS_WARNING(warning) (0)</span></div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; </div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_WARNING)</span></div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_WARNING</span></div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="preprocessor">#if defined(__has_warning)</span></div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)</span></div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00660"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8afa30449fac8b5069e62f26421d4148"> 660</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; </div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_WARNING)</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_WARNING</span></div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="preprocessor">#if defined(__has_warning)</span></div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)</span></div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00669"></a><span class="lineno"><a class="line" href="json_8hpp.html#ab45544391bc41507efde58d48331dfc2"> 669</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; </div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="comment">/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for</span></div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="comment"> HEDLEY INTERNAL USE ONLY. API subject to change without notice. */</span></div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_)</span></div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_</span></div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="preprocessor">#if defined(__cplusplus) &amp;&amp; JSON_HEDLEY_HAS_WARNING(&quot;-Wc++98-compat&quot;)</span></div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \</span></div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="preprocessor"> _Pragma(&quot;clang diagnostic ignored \&quot;-Wc++98-compat\&quot;&quot;) \</span></div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<span class="preprocessor"> xpr \</span></div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00684"></a><span class="lineno"><a class="line" href="json_8hpp.html#a543a78d9931a92663e3b3fc552a390a4"> 684</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x</span></div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; </div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="preprocessor"> (defined(__STDC_VERSION__) &amp;&amp; (__STDC_VERSION__ &gt;= 199901L)) || \</span></div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="preprocessor"> defined(__clang__) || \</span></div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \</span></div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;<span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \</span></div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) || \</span></div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="preprocessor"> JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \</span></div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) &amp;&amp; defined(__C99_PRAGMA_OPERATOR))</span></div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value)</span></div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)</span></div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRAGMA(value) __pragma(value)</span></div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00704"></a><span class="lineno"><a class="line" href="json_8hpp.html#aeb6e382f24fc5453621ae258b72e8775"> 704</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRAGMA(value)</span></div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; </div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH)</span></div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_PUSH</span></div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_POP)</span></div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma(&quot;clang diagnostic push&quot;)</span></div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma(&quot;clang diagnostic pop&quot;)</span></div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma(&quot;warning(push)&quot;)</span></div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma(&quot;warning(pop)&quot;)</span></div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0)</span></div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma(&quot;GCC diagnostic push&quot;)</span></div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma(&quot;GCC diagnostic pop&quot;)</span></div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)</span></div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push))</span></div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop))</span></div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0)</span></div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma(&quot;push&quot;)</span></div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma(&quot;pop&quot;)</span></div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(8,1,0)</span></div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma(&quot;diag_push&quot;)</span></div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma(&quot;diag_pop&quot;)</span></div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0)</span></div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma(&quot;warning(push)&quot;)</span></div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma(&quot;warning(pop)&quot;)</span></div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00735"></a><span class="lineno"><a class="line" href="json_8hpp.html#a1850f57fcda72becebc7033a2e10e77b"> 735</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH</span></div>
<div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="json_8hpp.html#aeedd50a52e1ea565ceab84bb596ec07f"> 736</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; </div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED)</span></div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED</span></div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING(&quot;-Wdeprecated-declarations&quot;)</span></div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma(&quot;clang diagnostic ignored \&quot;-Wdeprecated-declarations\&quot;&quot;)</span></div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma(&quot;warning(disable:1478 1786)&quot;)</span></div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma(&quot;diag_suppress 1215,1444&quot;)</span></div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0)</span></div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma(&quot;GCC diagnostic ignored \&quot;-Wdeprecated-declarations\&quot;&quot;)</span></div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)</span></div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996))</span></div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma(&quot;diag_suppress 1291,1718&quot;)</span></div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) &amp;&amp; !defined(__cplusplus)</span></div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma(&quot;error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)&quot;)</span></div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) &amp;&amp; defined(__cplusplus)</span></div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma(&quot;error_messages(off,symdeprecated,symdeprecated2)&quot;)</span></div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma(&quot;diag_suppress=Pe1444,Pe1215&quot;)</span></div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0)</span></div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma(&quot;warn(disable:2241)&quot;)</span></div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00763"></a><span class="lineno"><a class="line" href="json_8hpp.html#afe5855242129fa5d1adf55227669a337"> 763</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED</span></div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; </div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS)</span></div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS</span></div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING(&quot;-Wunknown-pragmas&quot;)</span></div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma(&quot;clang diagnostic ignored \&quot;-Wunknown-pragmas\&quot;&quot;)</span></div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma(&quot;warning(disable:161)&quot;)</span></div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma(&quot;diag_suppress 1675&quot;)</span></div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0)</span></div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma(&quot;GCC diagnostic ignored \&quot;-Wunknown-pragmas\&quot;&quot;)</span></div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)</span></div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068))</span></div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma(&quot;diag_suppress 163&quot;)</span></div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma(&quot;diag_suppress=Pe161&quot;)</span></div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00784"></a><span class="lineno"><a class="line" href="json_8hpp.html#ab67745ae0065d536d8e67969db68d564"> 784</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS</span></div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; </div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES)</span></div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES</span></div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING(&quot;-Wunknown-attributes&quot;)</span></div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma(&quot;clang diagnostic ignored \&quot;-Wunknown-attributes\&quot;&quot;)</span></div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0)</span></div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma(&quot;GCC diagnostic ignored \&quot;-Wdeprecated-declarations\&quot;&quot;)</span></div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0)</span></div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma(&quot;warning(disable:1292)&quot;)</span></div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0)</span></div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030))</span></div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma(&quot;diag_suppress 1097&quot;)</span></div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) &amp;&amp; defined(__cplusplus)</span></div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma(&quot;error_messages(off,attrskipunsup)&quot;)</span></div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma(&quot;diag_suppress 1173&quot;)</span></div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="json_8hpp.html#ab6e5abd7e400c9a725278206ece33e16"> 805</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES</span></div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; </div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL)</span></div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL</span></div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING(&quot;-Wcast-qual&quot;)</span></div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma(&quot;clang diagnostic ignored \&quot;-Wcast-qual\&quot;&quot;)</span></div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma(&quot;warning(disable:2203 2331)&quot;)</span></div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0)</span></div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma(&quot;GCC diagnostic ignored \&quot;-Wcast-qual\&quot;&quot;)</span></div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8d412aa5d441b533afa439a89aa4a754"> 818</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL</span></div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; </div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DEPRECATED)</span></div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DEPRECATED</span></div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_DEPRECATED_FOR)</span></div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_DEPRECATED_FOR</span></div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;<span class="preprocessor">#if defined(__cplusplus) &amp;&amp; (__cplusplus &gt;= 201402L)</span></div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated(&quot;Since &quot; #since)]])</span></div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated(&quot;Since &quot; #since &quot;; use &quot; #replacement)]])</span></div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) || \</span></div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \</span></div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \</span></div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;<span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \</span></div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;<span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \</span></div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,3,0)</span></div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__(&quot;Since &quot; #since)))</span></div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__(&quot;Since &quot; #since &quot;; use &quot; #replacement)))</span></div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \</span></div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \</span></div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) &amp;&amp; defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__))</span></div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__))</span></div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0)</span></div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated(&quot;Since &quot; # since))</span></div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated(&quot;Since &quot; #since &quot;; use &quot; #replacement))</span></div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160;<span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \</span></div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;<span class="preprocessor"> JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0)</span></div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated)</span></div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated)</span></div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) _Pragma(&quot;deprecated&quot;)</span></div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma(&quot;deprecated&quot;)</span></div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00860"></a><span class="lineno"><a class="line" href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c"> 860</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since)</span></div>
<div class="line"><a name="l00861"></a><span class="lineno"><a class="line" href="json_8hpp.html#af0469b867b0ec3a1c4b229ce9d087620"> 861</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement)</span></div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; </div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_UNAVAILABLE)</span></div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_UNAVAILABLE</span></div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \</span></div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \</span></div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__(&quot;Not available until &quot; #available_since)))</span></div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00873"></a><span class="lineno"><a class="line" href="json_8hpp.html#a681fd0533fbc24394f3322b6f4a60c4f"> 873</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNAVAILABLE(available_since)</span></div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; </div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT)</span></div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_WARN_UNUSED_RESULT</span></div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;<span class="preprocessor">#if defined(__cplusplus) &amp;&amp; (__cplusplus &gt;= 201703L)</span></div>
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])</span></div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \</span></div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \</span></div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) &amp;&amp; defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \</span></div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) &amp;&amp; defined(__cplusplus)) || \</span></div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;<span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))</span></div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;<span class="preprocessor">#elif defined(_Check_return_) </span><span class="comment">/* SAL */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_</span></div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00893"></a><span class="lineno"><a class="line" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03"> 893</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_WARN_UNUSED_RESULT</span></div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; </div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_SENTINEL)</span></div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_SENTINEL</span></div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \</span></div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \</span></div>
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0)</span></div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position)))</span></div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="json_8hpp.html#afe58497d56cda5e4cbf2d33be1bdd91e"> 906</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_SENTINEL(position)</span></div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; </div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_NO_RETURN)</span></div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_NO_RETURN</span></div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __noreturn</span></div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__))</span></div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;<span class="preprocessor">#elif defined(__STDC_VERSION__) &amp;&amp; __STDC_VERSION__ &gt;= 201112L</span></div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN _Noreturn</span></div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;<span class="preprocessor">#elif defined(__cplusplus) &amp;&amp; (__cplusplus &gt;= 201103L)</span></div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]])</span></div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \</span></div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \</span></div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;<span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(18,0,0) || \</span></div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(17,3,0) &amp;&amp; defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__))</span></div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)</span></div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN _Pragma(&quot;does_not_return&quot;)</span></div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)</span></div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __declspec(noreturn)</span></div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) &amp;&amp; defined(__cplusplus)</span></div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN _Pragma(&quot;FUNC_NEVER_RETURNS;&quot;)</span></div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)</span></div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __attribute((noreturn))</span></div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0)</span></div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __declspec(noreturn)</span></div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00940"></a><span class="lineno"><a class="line" href="json_8hpp.html#a82747e7a15c5cecf1223dbc4eb7a1c6b"> 940</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN</span></div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; </div>
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_NO_ESCAPE)</span></div>
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_NO_ESCAPE</span></div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape)</span></div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__))</span></div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="json_8hpp.html#a9a8fe3009f53d14ac4b48600a2606fc1"> 949</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_ESCAPE</span></div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; </div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_UNREACHABLE)</span></div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_UNREACHABLE</span></div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_UNREACHABLE_RETURN)</span></div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_UNREACHABLE_RETURN</span></div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) &amp;&amp; (!defined(JSON_HEDLEY_ARM_VERSION))) || \</span></div>
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \</span></div>
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5)</span></div>
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable()</span></div>
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)</span></div>
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE() __assume(0)</span></div>
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0)</span></div>
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;<span class="preprocessor"> #if defined(__cplusplus)</span></div>
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE() std::_nassert(0)</span></div>
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE() _nassert(0)</span></div>
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return value</span></div>
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;<span class="preprocessor">#elif defined(EXIT_FAILURE)</span></div>
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE() abort()</span></div>
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00976"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2d5705bd7bd14855c3ef5b98305c5fb4"> 976</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE()</span></div>
<div class="line"><a name="l00977"></a><span class="lineno"><a class="line" href="json_8hpp.html#a06401b258ef03263f2aec48029dc8b03"> 977</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return value</span></div>
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;<span class="preprocessor">#if !defined(JSON_HEDLEY_UNREACHABLE_RETURN)</span></div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE()</span></div>
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; </div>
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_ASSUME)</span></div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_ASSUME</span></div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;<span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \</span></div>
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) __assume(expr)</span></div>
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume)</span></div>
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr)</span></div>
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0)</span></div>
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;<span class="preprocessor"> #if defined(__cplusplus)</span></div>
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr)</span></div>
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) _nassert(expr)</span></div>
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) &amp;&amp; !defined(JSON_HEDLEY_ARM_VERSION)) || \</span></div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \</span></div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5)</span></div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) ((void) ((expr) ? 1 : (__builtin_unreachable(), 1)))</span></div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01005"></a><span class="lineno"><a class="line" href="json_8hpp.html#a70d7244eea52c8bb5716545e54050bb5"> 1005</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) ((void) (expr))</span></div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; </div>
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;<a class="code" href="json_8hpp.html#a1850f57fcda72becebc7033a2e10e77b">JSON_HEDLEY_DIAGNOSTIC_PUSH</a></div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING(&quot;-Wpedantic&quot;)</span></div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;<span class="preprocessor"> #pragma clang diagnostic ignored &quot;-Wpedantic&quot;</span></div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING(&quot;-Wc++98-compat-pedantic&quot;) &amp;&amp; defined(__cplusplus)</span></div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="preprocessor"> #pragma clang diagnostic ignored &quot;-Wc++98-compat-pedantic&quot;</span></div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_GCC_HAS_WARNING(&quot;-Wvariadic-macros&quot;,4,0,0)</span></div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;<span class="preprocessor"> #if defined(__clang__)</span></div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;<span class="preprocessor"> #pragma clang diagnostic ignored &quot;-Wvariadic-macros&quot;</span></div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;<span class="preprocessor"> #elif defined(JSON_HEDLEY_GCC_VERSION)</span></div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;<span class="preprocessor"> #pragma GCC diagnostic ignored &quot;-Wvariadic-macros&quot;</span></div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_NON_NULL)</span></div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_NON_NULL</span></div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \</span></div>
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \</span></div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0)</span></div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__)))</span></div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01032"></a><span class="lineno"><a class="line" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344"> 1032</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NON_NULL(...)</span></div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;<a class="code" href="json_8hpp.html#aeedd50a52e1ea565ceab84bb596ec07f">JSON_HEDLEY_DIAGNOSTIC_POP</a></div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; </div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PRINTF_FORMAT)</span></div>
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_PRINTF_FORMAT</span></div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;<span class="preprocessor">#if defined(__MINGW32__) &amp;&amp; JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) &amp;&amp; !defined(__USE_MINGW_ANSI_STDIO)</span></div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check)))</span></div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;<span class="preprocessor">#elif defined(__MINGW32__) &amp;&amp; JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) &amp;&amp; defined(__USE_MINGW_ANSI_STDIO)</span></div>
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check)))</span></div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(format) || \</span></div>
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \</span></div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \</span></div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) &amp;&amp; defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check)))</span></div>
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0)</span></div>
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check))</span></div>
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01055"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2e17831d69746d3ee8ad4796e96975a2"> 1055</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check)</span></div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; </div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CONSTEXPR)</span></div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CONSTEXPR</span></div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;<span class="preprocessor">#if defined(__cplusplus)</span></div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<span class="preprocessor"> #if __cplusplus &gt;= 201103L</span></div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr)</span></div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;<span class="preprocessor">#if !defined(JSON_HEDLEY_CONSTEXPR)</span></div>
<div class="line"><a name="l01067"></a><span class="lineno"><a class="line" href="json_8hpp.html#ac317a48664e4099c22d33d8132bef97e"> 1067</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CONSTEXPR</span></div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; </div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PREDICT)</span></div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_PREDICT</span></div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_LIKELY)</span></div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_LIKELY</span></div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_UNLIKELY)</span></div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_UNLIKELY</span></div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_UNPREDICTABLE)</span></div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_UNPREDICTABLE</span></div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable)</span></div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable(!!(expr))</span></div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) || \</span></div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0)</span></div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability(expr, value, probability)</span></div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1, probability)</span></div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0, probability)</span></div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1)</span></div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0)</span></div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;<span class="preprocessor">#if !defined(JSON_HEDLEY_BUILTIN_UNPREDICTABLE)</span></div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_BUILTIN_UNPREDICTABLE(expr) __builtin_expect_with_probability(!!(expr), 1, 0.5)</span></div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) || \</span></div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \</span></div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) &amp;&amp; defined(__cplusplus)) || \</span></div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(6,1,0) || \</span></div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27)</span></div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_PREDICT(expr, expected, probability) \</span></div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;<span class="preprocessor"> (((probability) &gt;= 0.9) ? __builtin_expect(!!(expr), (expected)) : (((void) (expected)), !!(expr)))</span></div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \</span></div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;<span class="preprocessor"> (__extension__ ({ \</span></div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;<span class="preprocessor"> JSON_HEDLEY_CONSTEXPR double hedley_probability_ = (probability); \</span></div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;<span class="preprocessor"> ((hedley_probability_ &gt;= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ &lt;= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \</span></div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;<span class="preprocessor"> }))</span></div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \</span></div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;<span class="preprocessor"> (__extension__ ({ \</span></div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="preprocessor"> JSON_HEDLEY_CONSTEXPR double hedley_probability_ = (probability); \</span></div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;<span class="preprocessor"> ((hedley_probability_ &gt;= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ &lt;= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \</span></div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="preprocessor"> }))</span></div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1)</span></div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0)</span></div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01120"></a><span class="lineno"><a class="line" href="json_8hpp.html#a34846d0797b38c1971baee08736dae69"> 1120</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_PREDICT(expr, expected, probability) (((void) (expected)), !!(expr))</span></div>
<div class="line"><a name="l01121"></a><span class="lineno"><a class="line" href="json_8hpp.html#adb569cea2c5a17c33734f27e8fef2473"> 1121</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr))</span></div>
<div class="line"><a name="l01122"></a><span class="lineno"><a class="line" href="json_8hpp.html#aec5597506417346f8f1c4d1f08c7719f"> 1122</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr))</span></div>
<div class="line"><a name="l01123"></a><span class="lineno"><a class="line" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0"> 1123</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_LIKELY(expr) (!!(expr))</span></div>
<div class="line"><a name="l01124"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd"> 1124</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_UNLIKELY(expr) (!!(expr))</span></div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;<span class="preprocessor">#if !defined(JSON_HEDLEY_UNPREDICTABLE)</span></div>
<div class="line"><a name="l01127"></a><span class="lineno"><a class="line" href="json_8hpp.html#a26967eb7395562701e450cec045dda15"> 1127</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5)</span></div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; </div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_MALLOC)</span></div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_MALLOC</span></div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \</span></div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \</span></div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;<span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \</span></div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) &amp;&amp; defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MALLOC __attribute__((__malloc__))</span></div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)</span></div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MALLOC _Pragma(&quot;returns_new_memory&quot;)</span></div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(14, 0, 0)</span></div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MALLOC __declspec(restrict)</span></div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01148"></a><span class="lineno"><a class="line" href="json_8hpp.html#a521367b4e81907450a7ea0bf28028b01"> 1148</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_MALLOC</span></div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; </div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PURE)</span></div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_PURE</span></div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \</span></div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \</span></div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;<span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) &amp;&amp; defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \</span></div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;<span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PURE __attribute__((__pure__))</span></div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)</span></div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PURE _Pragma(&quot;does_not_write_global_data&quot;)</span></div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) &amp;&amp; defined(__cplusplus)</span></div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PURE _Pragma(&quot;FUNC_IS_PURE;&quot;)</span></div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01170"></a><span class="lineno"><a class="line" href="json_8hpp.html#af5c84b7d1a43361bdc14cc6941078000"> 1170</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PURE</span></div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; </div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CONST)</span></div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CONST</span></div>
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(const) || \</span></div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \</span></div>
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;<span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) &amp;&amp; defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \</span></div>
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CONST __attribute__((__const__))</span></div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;<span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)</span></div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CONST _Pragma(&quot;no_side_effect&quot;)</span></div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01191"></a><span class="lineno"><a class="line" href="json_8hpp.html#a0d17bf1a54fc45a04ced6d3aa86a96e3"> 1191</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE</span></div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; </div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_RESTRICT)</span></div>
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_RESTRICT</span></div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="preprocessor">#if defined(__STDC_VERSION__) &amp;&amp; (__STDC_VERSION__ &gt;= 199901L) &amp;&amp; !defined(__cplusplus)</span></div>
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_RESTRICT restrict</span></div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \</span></div>
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \</span></div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;<span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \</span></div>
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) &amp;&amp; defined(__cplusplus)) || \</span></div>
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="preprocessor"> defined(__clang__)</span></div>
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_RESTRICT __restrict</span></div>
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) &amp;&amp; !defined(__cplusplus)</span></div>
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_RESTRICT _Restrict</span></div>
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01214"></a><span class="lineno"><a class="line" href="json_8hpp.html#ad4979e5bc2f252ff6e367fc254ab4e85"> 1214</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_RESTRICT</span></div>
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; </div>
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_INLINE)</span></div>
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_INLINE</span></div>
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;<span class="preprocessor"> (defined(__STDC_VERSION__) &amp;&amp; (__STDC_VERSION__ &gt;= 199901L)) || \</span></div>
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;<span class="preprocessor"> (defined(__cplusplus) &amp;&amp; (__cplusplus &gt;= 199711L))</span></div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_INLINE inline</span></div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;<span class="preprocessor"> defined(JSON_HEDLEY_GCC_VERSION) || \</span></div>
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0)</span></div>
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_INLINE __inline__</span></div>
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;<span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \</span></div>
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_INLINE __inline</span></div>
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01234"></a><span class="lineno"><a class="line" href="json_8hpp.html#af943d68414c7fe0fdfab7e772fa628a8"> 1234</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_INLINE</span></div>
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; </div>
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_ALWAYS_INLINE)</span></div>
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_ALWAYS_INLINE</span></div>
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \</span></div>
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \</span></div>
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;<span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) &amp;&amp; defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE</span></div>
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0)</span></div>
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ALWAYS_INLINE __forceinline</span></div>
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(7,0,0) &amp;&amp; defined(__cplusplus)</span></div>
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ALWAYS_INLINE _Pragma(&quot;FUNC_ALWAYS_INLINE;&quot;)</span></div>
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ALWAYS_INLINE _Pragma(&quot;inline=forced&quot;)</span></div>
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01257"></a><span class="lineno"><a class="line" href="json_8hpp.html#aa8811aa2a21030baad33c103cb04d322"> 1257</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE</span></div>
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; </div>
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_NEVER_INLINE)</span></div>
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_NEVER_INLINE</span></div>
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \</span></div>
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \</span></div>
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;<span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) &amp;&amp; defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__))</span></div>
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)</span></div>
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline)</span></div>
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0)</span></div>
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE _Pragma(&quot;noinline&quot;)</span></div>
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) &amp;&amp; defined(__cplusplus)</span></div>
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE _Pragma(&quot;FUNC_CANNOT_INLINE;&quot;)</span></div>
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE _Pragma(&quot;inline=never&quot;)</span></div>
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)</span></div>
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline))</span></div>
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0)</span></div>
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline)</span></div>
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01286"></a><span class="lineno"><a class="line" href="json_8hpp.html#aa400dd54d50fd20d7e931e2f08ee6374"> 1286</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE</span></div>
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; </div>
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PRIVATE)</span></div>
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_PRIVATE</span></div>
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_PUBLIC)</span></div>
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_PUBLIC</span></div>
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_IMPORT)</span></div>
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_IMPORT</span></div>
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="preprocessor">#if defined(_WIN32) || defined(__CYGWIN__)</span></div>
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRIVATE</span></div>
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PUBLIC __declspec(dllexport)</span></div>
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IMPORT __declspec(dllimport)</span></div>
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="preprocessor"> #if \</span></div>
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \</span></div>
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \</span></div>
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;<span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \</span></div>
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) &amp;&amp; defined(__TI_EABI__) &amp;&amp; defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRIVATE __attribute__((__visibility__(&quot;hidden&quot;)))</span></div>
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PUBLIC __attribute__((__visibility__(&quot;default&quot;)))</span></div>
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l01315"></a><span class="lineno"><a class="line" href="json_8hpp.html#a034c879888858092ec101e8d02be67c2"> 1315</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PRIVATE</span></div>
<div class="line"><a name="l01316"></a><span class="lineno"><a class="line" href="json_8hpp.html#aa1588f4ea4e7819b5b6e66f07865737f"> 1316</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_PUBLIC</span></div>
<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l01318"></a><span class="lineno"><a class="line" href="json_8hpp.html#a29c62e19dfa10fb48bf3aa877c4af21c"> 1318</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IMPORT extern</span></div>
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; </div>
<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_NO_THROW)</span></div>
<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_NO_THROW</span></div>
<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \</span></div>
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \</span></div>
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__))</span></div>
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;<span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \</span></div>
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0)</span></div>
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_THROW __declspec(nothrow)</span></div>
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01334"></a><span class="lineno"><a class="line" href="json_8hpp.html#a99bb53bea18285e3d2ae4385c6c75434"> 1334</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NO_THROW</span></div>
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; </div>
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_FALL_THROUGH)</span></div>
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_FALL_THROUGH</span></div>
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(fallthrough,7,0,0) &amp;&amp; !defined(JSON_HEDLEY_PGI_VERSION)</span></div>
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__))</span></div>
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough)</span></div>
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]])</span></div>
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough)</span></div>
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]])</span></div>
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;<span class="preprocessor">#elif defined(__fallthrough) </span><span class="comment">/* SAL */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_FALL_THROUGH __fallthrough</span></div>
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01349"></a><span class="lineno"><a class="line" href="json_8hpp.html#a7056c44a5787e78720407fc97aefbd0f"> 1349</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_FALL_THROUGH</span></div>
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; </div>
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_RETURNS_NON_NULL)</span></div>
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_RETURNS_NON_NULL</span></div>
<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \</span></div>
<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0)</span></div>
<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__))</span></div>
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;<span class="preprocessor">#elif defined(_Ret_notnull_) </span><span class="comment">/* SAL */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_</span></div>
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01362"></a><span class="lineno"><a class="line" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1"> 1362</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_RETURNS_NON_NULL</span></div>
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; </div>
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_ARRAY_PARAM)</span></div>
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_ARRAY_PARAM</span></div>
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;<span class="preprocessor"> defined(__STDC_VERSION__) &amp;&amp; (__STDC_VERSION__ &gt;= 199901L) &amp;&amp; \</span></div>
<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;<span class="preprocessor"> !defined(__STDC_NO_VLA__) &amp;&amp; \</span></div>
<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;<span class="preprocessor"> !defined(__cplusplus) &amp;&amp; \</span></div>
<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;<span class="preprocessor"> !defined(JSON_HEDLEY_PGI_VERSION) &amp;&amp; \</span></div>
<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;<span class="preprocessor"> !defined(JSON_HEDLEY_TINYC_VERSION)</span></div>
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ARRAY_PARAM(name) (name)</span></div>
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01376"></a><span class="lineno"><a class="line" href="json_8hpp.html#a81c7e3b5b6811abfd89146ad33a93d8f"> 1376</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_ARRAY_PARAM(name)</span></div>
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; </div>
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_IS_CONSTANT)</span></div>
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_IS_CONSTANT</span></div>
<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR)</span></div>
<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_REQUIRE_CONSTEXPR</span></div>
<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;<span class="comment">/* JSON_HEDLEY_IS_CONSTEXPR_ is for</span></div>
<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;<span class="comment"> HEDLEY INTERNAL USE ONLY. API subject to change without notice. */</span></div>
<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_IS_CONSTEXPR_)</span></div>
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_IS_CONSTEXPR_</span></div>
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \</span></div>
<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \</span></div>
<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \</span></div>
<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \</span></div>
<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(6,1,0) || \</span></div>
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;<span class="preprocessor"> (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) &amp;&amp; !defined(__cplusplus)) || \</span></div>
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;<span class="preprocessor"> JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0)</span></div>
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr)</span></div>
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;<span class="preprocessor">#if !defined(__cplusplus)</span></div>
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;<span class="preprocessor"># if \</span></div>
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \</span></div>
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \</span></div>
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \</span></div>
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;<span class="preprocessor"> JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \</span></div>
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \</span></div>
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;<span class="preprocessor"> JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24)</span></div>
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;<span class="preprocessor">#if defined(__INTPTR_TYPE__)</span></div>
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*)</span></div>
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;<span class="preprocessor"> #include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*)</span></div>
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;<span class="preprocessor"># elif \</span></div>
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;<span class="preprocessor"> (defined(__STDC_VERSION__) &amp;&amp; (__STDC_VERSION__ &gt;= 201112L) &amp;&amp; !defined(JSON_HEDLEY_SUNPRO_VERSION) &amp;&amp; !defined(JSON_HEDLEY_PGI_VERSION)) || \</span></div>
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) || \</span></div>
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \</span></div>
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \</span></div>
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;<span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \</span></div>
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;<span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0)</span></div>
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;<span class="preprocessor">#if defined(__INTPTR_TYPE__)</span></div>
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0)</span></div>
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;<span class="preprocessor"> #include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0)</span></div>
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;<span class="preprocessor"># elif \</span></div>
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;<span class="preprocessor"> defined(JSON_HEDLEY_GCC_VERSION) || \</span></div>
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;<span class="preprocessor"> defined(JSON_HEDLEY_INTEL_VERSION) || \</span></div>
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;<span class="preprocessor"> defined(JSON_HEDLEY_TINYC_VERSION) || \</span></div>
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;<span class="preprocessor"> defined(JSON_HEDLEY_TI_VERSION) || \</span></div>
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;<span class="preprocessor"> defined(__clang__)</span></div>
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \</span></div>
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;<span class="preprocessor"> sizeof(void) != \</span></div>
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;<span class="preprocessor"> sizeof(*( \</span></div>
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;<span class="preprocessor"> 1 ? \</span></div>
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;<span class="preprocessor"> ((void*) ((expr) * 0L) ) : \</span></div>
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;<span class="preprocessor">((struct { char v[sizeof(void) * 2]; } *) 1) \</span></div>
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;<span class="preprocessor"> ) \</span></div>
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;<span class="preprocessor"> ) \</span></div>
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;<span class="preprocessor"> )</span></div>
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_IS_CONSTEXPR_)</span></div>
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;<span class="preprocessor"> #if !defined(JSON_HEDLEY_IS_CONSTANT)</span></div>
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr)</span></div>
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1))</span></div>
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;<span class="preprocessor"> #if !defined(JSON_HEDLEY_IS_CONSTANT)</span></div>
<div class="line"><a name="l01454"></a><span class="lineno"><a class="line" href="json_8hpp.html#a37617841d58aa4d88d0efee4db57ee18"> 1454</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTANT(expr) (0)</span></div>
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l01456"></a><span class="lineno"><a class="line" href="json_8hpp.html#a1136ab0d872379bb18d0839893bede67"> 1456</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr)</span></div>
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; </div>
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_BEGIN_C_DECLS)</span></div>
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_BEGIN_C_DECLS</span></div>
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_END_C_DECLS)</span></div>
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_END_C_DECLS</span></div>
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_C_DECL)</span></div>
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_C_DECL</span></div>
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;<span class="preprocessor">#if defined(__cplusplus)</span></div>
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_BEGIN_C_DECLS extern &quot;C&quot; {</span></div>
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_END_C_DECLS }</span></div>
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_C_DECL extern &quot;C&quot;</span></div>
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01473"></a><span class="lineno"><a class="line" href="json_8hpp.html#ad43f9ae10083194afdfe88516ad876e7"> 1473</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_BEGIN_C_DECLS</span></div>
<div class="line"><a name="l01474"></a><span class="lineno"><a class="line" href="json_8hpp.html#aca2fc4b765ac5739d680153895b673fb"> 1474</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_END_C_DECLS</span></div>
<div class="line"><a name="l01475"></a><span class="lineno"><a class="line" href="json_8hpp.html#a378be9b66feb11153979c282c669b12e"> 1475</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_C_DECL</span></div>
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; </div>
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_STATIC_ASSERT)</span></div>
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_STATIC_ASSERT</span></div>
<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;<span class="preprocessor">#if \</span></div>
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;<span class="preprocessor"> !defined(__cplusplus) &amp;&amp; ( \</span></div>
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;<span class="preprocessor"> (defined(__STDC_VERSION__) &amp;&amp; (__STDC_VERSION__ &gt;= 201112L)) || \</span></div>
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_FEATURE(c_static_assert) || \</span></div>
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \</span></div>
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;<span class="preprocessor"> defined(_Static_assert) \</span></div>
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;<span class="preprocessor"> )</span></div>
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)</span></div>
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;<span class="preprocessor"> (defined(__cplusplus) &amp;&amp; (__cplusplus &gt;= 201103L)) || \</span></div>
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;<span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \</span></div>
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;<span class="preprocessor"> (defined(__cplusplus) &amp;&amp; JSON_HEDLEY_TI_VERSION_CHECK(8,3,0))</span></div>
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message))</span></div>
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01496"></a><span class="lineno"><a class="line" href="json_8hpp.html#a04269935c66fe5a9b6c33fa36037d215"> 1496</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_STATIC_ASSERT(expr, message)</span></div>
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; </div>
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CONST_CAST)</span></div>
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CONST_CAST</span></div>
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;<span class="preprocessor">#if defined(__cplusplus)</span></div>
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast&lt;T&gt;(expr))</span></div>
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;<span class="preprocessor"> JSON_HEDLEY_HAS_WARNING(&quot;-Wcast-qual&quot;) || \</span></div>
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \</span></div>
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \</span></div>
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \</span></div>
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;<span class="preprocessor"> ((T) (expr)); \</span></div>
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP \</span></div>
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;<span class="preprocessor"> }))</span></div>
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01515"></a><span class="lineno"><a class="line" href="json_8hpp.html#ab849ba88a6f410da5a46a86f8565b381"> 1515</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr))</span></div>
<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; </div>
<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_REINTERPRET_CAST)</span></div>
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_REINTERPRET_CAST</span></div>
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;<span class="preprocessor">#if defined(__cplusplus)</span></div>
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast&lt;T&gt;(expr))</span></div>
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01524"></a><span class="lineno"><a class="line" href="json_8hpp.html#a86dd11af75e3f25f5be26cf3c779ba79"> 1524</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (*((T*) &amp;(expr)))</span></div>
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; </div>
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_STATIC_CAST)</span></div>
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_STATIC_CAST</span></div>
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;<span class="preprocessor">#if defined(__cplusplus)</span></div>
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast&lt;T&gt;(expr))</span></div>
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01533"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2edb8d037ad5cbac818c86aca317226a"> 1533</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr))</span></div>
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; </div>
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CPP_CAST)</span></div>
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CPP_CAST</span></div>
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;<span class="preprocessor">#if defined(__cplusplus)</span></div>
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CPP_CAST(T, expr) static_cast&lt;T&gt;(expr)</span></div>
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01542"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8c790866b16f58cbe0b3286a7a6238c3"> 1542</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_CPP_CAST(T, expr) (expr)</span></div>
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; </div>
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_NULL)</span></div>
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_NULL</span></div>
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;<span class="preprocessor">#if defined(__cplusplus)</span></div>
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;<span class="preprocessor"> #if __cplusplus &gt;= 201103L</span></div>
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr)</span></div>
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;<span class="preprocessor"> #elif defined(NULL)</span></div>
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NULL NULL</span></div>
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;<span class="preprocessor"> #else</span></div>
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0)</span></div>
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;<span class="preprocessor">#elif defined(NULL)</span></div>
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NULL NULL</span></div>
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01559"></a><span class="lineno"><a class="line" href="json_8hpp.html#a06449cfb74f25f075a8ea334542f1c65"> 1559</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_NULL ((void*) 0)</span></div>
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; </div>
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_MESSAGE)</span></div>
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_MESSAGE</span></div>
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING(&quot;-Wunknown-pragmas&quot;)</span></div>
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg) \</span></div>
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \</span></div>
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;<span class="preprocessor"> JSON_HEDLEY_PRAGMA(message msg) \</span></div>
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \</span></div>
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;<span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg)</span></div>
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0)</span></div>
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg)</span></div>
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg))</span></div>
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0)</span></div>
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg))</span></div>
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01582"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8419c2b65d28686932087c587eb19157"> 1582</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg)</span></div>
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; </div>
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_WARNING)</span></div>
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_WARNING</span></div>
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING(&quot;-Wunknown-pragmas&quot;)</span></div>
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_WARNING(msg) \</span></div>
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \</span></div>
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;<span class="preprocessor"> JSON_HEDLEY_PRAGMA(clang warning msg) \</span></div>
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;<span class="preprocessor">#elif \</span></div>
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;<span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \</span></div>
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;<span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0)</span></div>
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg)</span></div>
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;<span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)</span></div>
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg))</span></div>
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01601"></a><span class="lineno"><a class="line" href="json_8hpp.html#a5563e5b0fbc2a9b525830081404d9208"> 1601</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg)</span></div>
<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; </div>
<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_REQUIRE)</span></div>
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_REQUIRE</span></div>
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_REQUIRE_MSG)</span></div>
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_REQUIRE_MSG</span></div>
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if)</span></div>
<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;<span class="preprocessor"># if JSON_HEDLEY_HAS_WARNING(&quot;-Wgcc-compat&quot;)</span></div>
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_REQUIRE(expr) \</span></div>
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;<span class="preprocessor"> _Pragma(&quot;clang diagnostic ignored \&quot;-Wgcc-compat\&quot;&quot;) \</span></div>
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;<span class="preprocessor"> __attribute__((diagnose_if(!(expr), #expr, &quot;error&quot;))) \</span></div>
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \</span></div>
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;<span class="preprocessor"> _Pragma(&quot;clang diagnostic ignored \&quot;-Wgcc-compat\&quot;&quot;) \</span></div>
<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;<span class="preprocessor"> __attribute__((diagnose_if(!(expr), msg, &quot;error&quot;))) \</span></div>
<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;<span class="preprocessor"># else</span></div>
<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, &quot;error&quot;)))</span></div>
<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, &quot;error&quot;)))</span></div>
<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01627"></a><span class="lineno"><a class="line" href="json_8hpp.html#acbc72fa9390d5e8b7592a81384dfabf3"> 1627</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_REQUIRE(expr)</span></div>
<div class="line"><a name="l01628"></a><span class="lineno"><a class="line" href="json_8hpp.html#a7106fb230747163b5b16121eb6a42b23"> 1628</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_REQUIRE_MSG(expr,msg)</span></div>
<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; </div>
<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_FLAGS)</span></div>
<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_FLAGS</span></div>
<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum)</span></div>
<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__))</span></div>
<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; </div>
<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_FLAGS_CAST)</span></div>
<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_FLAGS_CAST</span></div>
<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0)</span></div>
<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;<span class="preprocessor"># define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \</span></div>
<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;<span class="preprocessor"> _Pragma(&quot;warning(disable:188)&quot;) \</span></div>
<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;<span class="preprocessor"> ((T) (expr)); \</span></div>
<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;<span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP \</span></div>
<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;<span class="preprocessor"> }))</span></div>
<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01649"></a><span class="lineno"><a class="line" href="json_8hpp.html#a701eddd8e14dbe617a9ca81b095e88fb"> 1649</a></span>&#160;<span class="preprocessor"># define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr)</span></div>
<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; </div>
<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_EMPTY_BASES)</span></div>
<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_EMPTY_BASES</span></div>
<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;<span class="preprocessor">#if JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) &amp;&amp; !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)</span></div>
<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases)</span></div>
<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01658"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae7a983344e78f37697c2688f1885f9e1"> 1658</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_EMPTY_BASES</span></div>
<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; </div>
<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;<span class="comment">/* Remaining macros are deprecated. */</span></div>
<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; </div>
<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK)</span></div>
<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK</span></div>
<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0)</span></div>
<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01669"></a><span class="lineno"><a class="line" href="json_8hpp.html#af3737b675cbb70bcdfdaca78c2bc7d4a"> 1669</a></span>&#160;<span class="preprocessor"> #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; </div>
<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE)</span></div>
<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE</span></div>
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01675"></a><span class="lineno"><a class="line" href="json_8hpp.html#a940783ca9410ed9dbe4f7abf44a29394"> 1675</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute)</span></div>
<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; </div>
<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE)</span></div>
<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE</span></div>
<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01680"></a><span class="lineno"><a class="line" href="json_8hpp.html#a3ce7b30717e453922113c4f62e645e13"> 1680</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)</span></div>
<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; </div>
<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN)</span></div>
<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_BUILTIN</span></div>
<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01685"></a><span class="lineno"><a class="line" href="json_8hpp.html#a4500e349152e53a3a6f0ab95c6a4a840"> 1685</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin)</span></div>
<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; </div>
<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE)</span></div>
<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_FEATURE</span></div>
<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01690"></a><span class="lineno"><a class="line" href="json_8hpp.html#a096be2083232d3a3ea9f3aeb25885f60"> 1690</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature)</span></div>
<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; </div>
<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION)</span></div>
<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_EXTENSION</span></div>
<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01695"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8fcc2d27e828fbd8d5ef88ba341e56c0"> 1695</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension)</span></div>
<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; </div>
<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE)</span></div>
<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE</span></div>
<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01700"></a><span class="lineno"><a class="line" href="json_8hpp.html#afb4bf1280cd8738877e1f0f681a5d96d"> 1700</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)</span></div>
<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; </div>
<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;<span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_WARNING)</span></div>
<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;<span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_WARNING</span></div>
<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01705"></a><span class="lineno"><a class="line" href="json_8hpp.html#a6125ffd318b2d6698faad4175a6e7c56"> 1705</a></span>&#160;<span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning)</span></div>
<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; </div>
<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION &lt; X) */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; </div>
<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; </div>
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;<span class="comment">// This file contains all internal macro definitions</span></div>
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;<span class="comment">// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them</span></div>
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; </div>
<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;<span class="comment">// exclude unsupported compilers</span></div>
<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;<span class="preprocessor">#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK)</span></div>
<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;<span class="preprocessor"> #if defined(__clang__)</span></div>
<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;<span class="preprocessor"> #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) &lt; 30400</span></div>
<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;<span class="preprocessor"> #error &quot;unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers&quot;</span></div>
<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;<span class="preprocessor"> #elif defined(__GNUC__) &amp;&amp; !(defined(__ICC) || defined(__INTEL_COMPILER))</span></div>
<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;<span class="preprocessor"> #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) &lt; 40800</span></div>
<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;<span class="preprocessor"> #error &quot;unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers&quot;</span></div>
<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;<span class="preprocessor"> #endif</span></div>
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; </div>
<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;<span class="comment">// C++ language standard detection</span></div>
<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;<span class="preprocessor">#if (defined(__cplusplus) &amp;&amp; __cplusplus &gt;= 201703L) || (defined(_HAS_CXX17) &amp;&amp; _HAS_CXX17 == 1) // fix for issue #464</span></div>
<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;<span class="preprocessor"> #define JSON_HAS_CPP_17</span></div>
<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;<span class="preprocessor"> #define JSON_HAS_CPP_14</span></div>
<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;<span class="preprocessor">#elif (defined(__cplusplus) &amp;&amp; __cplusplus &gt;= 201402L) || (defined(_HAS_CXX14) &amp;&amp; _HAS_CXX14 == 1)</span></div>
<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;<span class="preprocessor"> #define JSON_HAS_CPP_14</span></div>
<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; </div>
<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;<span class="comment">// disable float-equal warnings on GCC/clang</span></div>
<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;<span class="preprocessor">#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)</span></div>
<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;<span class="preprocessor"> #pragma GCC diagnostic push</span></div>
<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;<span class="preprocessor"> #pragma GCC diagnostic ignored &quot;-Wfloat-equal&quot;</span></div>
<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; </div>
<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;<span class="comment">// disable documentation warnings on clang</span></div>
<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;<span class="preprocessor"> #pragma GCC diagnostic push</span></div>
<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;<span class="preprocessor"> #pragma GCC diagnostic ignored &quot;-Wdocumentation&quot;</span></div>
<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; </div>
<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;<span class="comment">// allow to disable exceptions</span></div>
<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;<span class="preprocessor">#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) &amp;&amp; !defined(JSON_NOEXCEPTION)</span></div>
<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;<span class="preprocessor"> #define JSON_THROW(exception) throw exception</span></div>
<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;<span class="preprocessor"> #define JSON_TRY try</span></div>
<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;<span class="preprocessor"> #define JSON_CATCH(exception) catch(exception)</span></div>
<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;<span class="preprocessor"> #define JSON_INTERNAL_CATCH(exception) catch(exception)</span></div>
<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;<span class="preprocessor"> #include &lt;cstdlib&gt;</span></div>
<div class="line"><a name="l01754"></a><span class="lineno"><a class="line" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f"> 1754</a></span>&#160;<span class="preprocessor"> #define JSON_THROW(exception) std::abort()</span></div>
<div class="line"><a name="l01755"></a><span class="lineno"><a class="line" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9"> 1755</a></span>&#160;<span class="preprocessor"> #define JSON_TRY if(true)</span></div>
<div class="line"><a name="l01756"></a><span class="lineno"><a class="line" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a"> 1756</a></span>&#160;<span class="preprocessor"> #define JSON_CATCH(exception) if(false)</span></div>
<div class="line"><a name="l01757"></a><span class="lineno"><a class="line" href="json_8hpp.html#a5478b7564e65634cc69432ed3cb6490e"> 1757</a></span>&#160;<span class="preprocessor"> #define JSON_INTERNAL_CATCH(exception) if(false)</span></div>
<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; </div>
<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;<span class="comment">// override exception macros</span></div>
<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;<span class="preprocessor">#if defined(JSON_THROW_USER)</span></div>
<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;<span class="preprocessor"> #undef JSON_THROW</span></div>
<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;<span class="preprocessor"> #define JSON_THROW JSON_THROW_USER</span></div>
<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;<span class="preprocessor">#if defined(JSON_TRY_USER)</span></div>
<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;<span class="preprocessor"> #undef JSON_TRY</span></div>
<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;<span class="preprocessor"> #define JSON_TRY JSON_TRY_USER</span></div>
<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;<span class="preprocessor">#if defined(JSON_CATCH_USER)</span></div>
<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;<span class="preprocessor"> #undef JSON_CATCH</span></div>
<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;<span class="preprocessor"> #define JSON_CATCH JSON_CATCH_USER</span></div>
<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;<span class="preprocessor"> #undef JSON_INTERNAL_CATCH</span></div>
<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;<span class="preprocessor"> #define JSON_INTERNAL_CATCH JSON_CATCH_USER</span></div>
<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;<span class="preprocessor">#if defined(JSON_INTERNAL_CATCH_USER)</span></div>
<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;<span class="preprocessor"> #undef JSON_INTERNAL_CATCH</span></div>
<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;<span class="preprocessor"> #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER</span></div>
<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; </div>
<div class="line"><a name="l01785"></a><span class="lineno"><a class="line" href="json_8hpp.html#a4c5d399dfa9252e70f876756f3f49084"> 1785</a></span>&#160;<span class="preprocessor">#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \</span></div>
<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;<span class="preprocessor"> template&lt;typename BasicJsonType&gt; \</span></div>
<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;<span class="preprocessor"> inline void to_json(BasicJsonType&amp; j, const ENUM_TYPE&amp; e) \</span></div>
<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;<span class="preprocessor"> static_assert(std::is_enum&lt;ENUM_TYPE&gt;::value, #ENUM_TYPE &quot; must be an enum!&quot;); \</span></div>
<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;<span class="preprocessor"> static const std::pair&lt;ENUM_TYPE, BasicJsonType&gt; m[] = __VA_ARGS__; \</span></div>
<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;<span class="preprocessor"> auto it = std::find_if(std::begin(m), std::end(m), \</span></div>
<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;<span class="preprocessor"> [e](const std::pair&lt;ENUM_TYPE, BasicJsonType&gt;&amp; ej_pair) -&gt; bool \</span></div>
<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;<span class="preprocessor"> return ej_pair.first == e; \</span></div>
<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;<span class="preprocessor"> }); \</span></div>
<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;<span class="preprocessor"> j = ((it != std::end(m)) ? it : std::begin(m))-&gt;second; \</span></div>
<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;<span class="preprocessor"> template&lt;typename BasicJsonType&gt; \</span></div>
<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;<span class="preprocessor"> inline void from_json(const BasicJsonType&amp; j, ENUM_TYPE&amp; e) \</span></div>
<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;<span class="preprocessor"> static_assert(std::is_enum&lt;ENUM_TYPE&gt;::value, #ENUM_TYPE &quot; must be an enum!&quot;); \</span></div>
<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;<span class="preprocessor"> static const std::pair&lt;ENUM_TYPE, BasicJsonType&gt; m[] = __VA_ARGS__; \</span></div>
<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;<span class="preprocessor"> auto it = std::find_if(std::begin(m), std::end(m), \</span></div>
<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;<span class="preprocessor"> [&amp;j](const std::pair&lt;ENUM_TYPE, BasicJsonType&gt;&amp; ej_pair) -&gt; bool \</span></div>
<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;<span class="preprocessor"> return ej_pair.second == j; \</span></div>
<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;<span class="preprocessor"> }); \</span></div>
<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;<span class="preprocessor"> e = ((it != std::end(m)) ? it : std::begin(m))-&gt;first; \</span></div>
<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;<span class="preprocessor"> }</span></div>
<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; </div>
<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;<span class="comment">// Ugly macros to avoid uglier copy-paste when specializing basic_json. They</span></div>
<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;<span class="comment">// may be removed in the future once the class is split.</span></div>
<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; </div>
<div class="line"><a name="l01814"></a><span class="lineno"><a class="line" href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f"> 1814</a></span>&#160;<span class="preprocessor">#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \</span></div>
<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;<span class="preprocessor"> template&lt;template&lt;typename, typename, typename...&gt; class ObjectType, \</span></div>
<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;<span class="preprocessor"> template&lt;typename, typename...&gt; class ArrayType, \</span></div>
<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;<span class="preprocessor"> class StringType, class BooleanType, class NumberIntegerType, \</span></div>
<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;<span class="preprocessor"> class NumberUnsignedType, class NumberFloatType, \</span></div>
<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;<span class="preprocessor"> template&lt;typename&gt; class AllocatorType, \</span></div>
<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;<span class="preprocessor"> template&lt;typename, typename = void&gt; class JSONSerializer&gt;</span></div>
<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; </div>
<div class="line"><a name="l01822"></a><span class="lineno"><a class="line" href="json_8hpp.html#a80b7254e63f199a1f656f07ae551f632"> 1822</a></span>&#160;<span class="preprocessor">#define NLOHMANN_BASIC_JSON_TPL \</span></div>
<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;<span class="preprocessor"> basic_json&lt;ObjectType, ArrayType, StringType, BooleanType, \</span></div>
<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;<span class="preprocessor"> NumberIntegerType, NumberUnsignedType, NumberFloatType, \</span></div>
<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;<span class="preprocessor"> AllocatorType, JSONSerializer&gt;</span></div>
<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; </div>
<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; </div>
<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;{</div>
<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;{</div>
<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;<span class="comment">// exceptions //</span></div>
<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l01864"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1exception.html"> 1864</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a> : <span class="keyword">public</span> std::exception</div>
<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;{</div>
<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
<div class="line"><a name="l01869"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1exception.html#a11fe48748e811531614c84883b00ccd5"> 1869</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classnlohmann_1_1detail_1_1exception.html#a11fe48748e811531614c84883b00ccd5">what</a>() const noexcept<span class="keyword"> override</span></div>
<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; <span class="keywordflow">return</span> m.what();</div>
<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; }</div>
<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; </div>
<div class="line"><a name="l01875"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1exception.html#a0d4589a3fb54e81646d986c05efa3b9a"> 1875</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html#a0d4589a3fb54e81646d986c05efa3b9a">id</a>;</div>
<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; </div>
<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
<div class="line"><a name="l01879"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1exception.html#ae323ad0d53bc724414c2233164e65657"> 1879</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(<span class="keywordtype">int</span> id_, const <span class="keywordtype">char</span>* what_arg) : <span class="keywordtype">id</span>(id_), m(what_arg) {}</div>
<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; </div>
<div class="line"><a name="l01881"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278"> 1881</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">name</a>(<span class="keyword">const</span> std::string&amp; ename, <span class="keywordtype">int</span> id_)</div>
<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; {</div>
<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;[json.exception.&quot;</span> + ename + <span class="stringliteral">&quot;.&quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(id_) + <span class="stringliteral">&quot;] &quot;</span>;</div>
<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; }</div>
<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; </div>
<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; std::runtime_error m;</div>
<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;};</div>
<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; </div>
<div class="line"><a name="l01935"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parse__error.html"> 1935</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a></div>
<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;{</div>
<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l01947"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d"> 1947</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">create</a>(<span class="keywordtype">int</span> id_, <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a>&amp; pos, <span class="keyword">const</span> std::string&amp; what_arg)</div>
<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; {</div>
<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">&quot;parse_error&quot;</span>, id_) + <span class="stringliteral">&quot;parse error&quot;</span> +</div>
<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; position_string(pos) + <span class="stringliteral">&quot;: &quot;</span> + what_arg;</div>
<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a>(id_, pos.<a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a94cf85cd91d478c20ae143eba906ea1a">chars_read_total</a>, w.c_str());</div>
<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; }</div>
<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; </div>
<div class="line"><a name="l01954"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parse__error.html#a9fd60ad6bce80fd99686ad332faefd37"> 1954</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a9fd60ad6bce80fd99686ad332faefd37">create</a>(<span class="keywordtype">int</span> id_, std::size_t byte_, <span class="keyword">const</span> std::string&amp; what_arg)</div>
<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; {</div>
<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">&quot;parse_error&quot;</span>, id_) + <span class="stringliteral">&quot;parse error&quot;</span> +</div>
<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; (byte_ != 0 ? (<span class="stringliteral">&quot; at byte &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(byte_)) : <span class="stringliteral">&quot;&quot;</span>) +</div>
<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; <span class="stringliteral">&quot;: &quot;</span> + what_arg;</div>
<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a>(id_, byte_, w.c_str());</div>
<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; }</div>
<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; </div>
<div class="line"><a name="l01971"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parse__error.html#a9505aaa1ca943be927eec7cc579592ff"> 1971</a></span>&#160; <span class="keyword">const</span> std::size_t <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a9505aaa1ca943be927eec7cc579592ff">byte</a>;</div>
<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; </div>
<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a>(<span class="keywordtype">int</span> id_, std::size_t byte_, <span class="keyword">const</span> <span class="keywordtype">char</span>* what_arg)</div>
<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; : <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(id_, what_arg), <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a9505aaa1ca943be927eec7cc579592ff">byte</a>(byte_) {}</div>
<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; </div>
<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; <span class="keyword">static</span> std::string position_string(<span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a>&amp; pos)</div>
<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; {</div>
<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot; at line &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(pos.<a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a4bbad8bc2c0d17c1b61c3ce729908b71">lines_read</a> + 1) +</div>
<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; <span class="stringliteral">&quot;, column &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(pos.<a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a74df94563dd32102152ceb8c6d9041d8">chars_read_current_line</a>);</div>
<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; }</div>
<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;};</div>
<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; </div>
<div class="line"><a name="l02021"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1invalid__iterator.html"> 2021</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">invalid_iterator</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a></div>
<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;{</div>
<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l02024"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09"> 2024</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">invalid_iterator</a> <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">create</a>(<span class="keywordtype">int</span> id_, <span class="keyword">const</span> std::string&amp; what_arg)</div>
<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; {</div>
<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">&quot;invalid_iterator&quot;</span>, id_) + what_arg;</div>
<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">invalid_iterator</a>(id_, w.c_str());</div>
<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; }</div>
<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; </div>
<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">invalid_iterator</a>(<span class="keywordtype">int</span> id_, const <span class="keywordtype">char</span>* what_arg)</div>
<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; : <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(id_, what_arg) {}</div>
<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;};</div>
<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; </div>
<div class="line"><a name="l02075"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1type__error.html"> 2075</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1type__error.html">type_error</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a></div>
<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;{</div>
<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l02078"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f"> 2078</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1type__error.html">type_error</a> <a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">create</a>(<span class="keywordtype">int</span> id_, <span class="keyword">const</span> std::string&amp; what_arg)</div>
<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; {</div>
<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">&quot;type_error&quot;</span>, id_) + what_arg;</div>
<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1type__error.html">type_error</a>(id_, w.c_str());</div>
<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; }</div>
<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; </div>
<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1type__error.html">type_error</a>(<span class="keywordtype">int</span> id_, const <span class="keywordtype">char</span>* what_arg) : <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(id_, what_arg) {}</div>
<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;};</div>
<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160; </div>
<div class="line"><a name="l02122"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1out__of__range.html"> 2122</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a></div>
<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;{</div>
<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l02125"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073"> 2125</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a> <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">create</a>(<span class="keywordtype">int</span> id_, <span class="keyword">const</span> std::string&amp; what_arg)</div>
<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; {</div>
<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">&quot;out_of_range&quot;</span>, id_) + what_arg;</div>
<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a>(id_, w.c_str());</div>
<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; }</div>
<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; </div>
<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a>(<span class="keywordtype">int</span> id_, const <span class="keywordtype">char</span>* what_arg) : <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(id_, what_arg) {}</div>
<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;};</div>
<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; </div>
<div class="line"><a name="l02160"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1other__error.html"> 2160</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1other__error.html">other_error</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a></div>
<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;{</div>
<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l02163"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1other__error.html#a87e8ab894e8c85c0d97a0919782d3683"> 2163</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1other__error.html">other_error</a> <a class="code" href="classnlohmann_1_1detail_1_1other__error.html#a87e8ab894e8c85c0d97a0919782d3683">create</a>(<span class="keywordtype">int</span> id_, <span class="keyword">const</span> std::string&amp; what_arg)</div>
<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; {</div>
<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">&quot;other_error&quot;</span>, id_) + what_arg;</div>
<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1other__error.html">other_error</a>(id_, w.c_str());</div>
<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; }</div>
<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; </div>
<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1other__error.html">other_error</a>(<span class="keywordtype">int</span> id_, const <span class="keywordtype">char</span>* what_arg) : <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(id_, what_arg) {}</div>
<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;};</div>
<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; </div>
<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; </div>
<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/cpp_future.hpp&gt;</span></div>
<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; </div>
<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; </div>
<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;<span class="preprocessor">#include &lt;ciso646&gt;</span> <span class="comment">// not</span></div>
<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// size_t</span></div>
<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span> <span class="comment">// conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type</span></div>
<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; </div>
<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;{</div>
<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;{</div>
<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;<span class="comment">// alias templates to reduce boilerplate</span></div>
<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">bool</span> B, <span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02191"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c"> 2191</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> = <span class="keyword">typename</span> std::enable_if&lt;B, T&gt;::type;</div>
<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; </div>
<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02194"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a53a082eedad9f4729fcd8fed552a21f7"> 2194</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a53a082eedad9f4729fcd8fed552a21f7">uncvref_t</a> = <span class="keyword">typename</span> std::remove_cv&lt;typename std::remove_reference&lt;T&gt;::type&gt;::type;</div>
<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; </div>
<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;<span class="comment">// implementation of C++14 index_sequence and affiliates</span></div>
<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;<span class="comment">// source: https://stackoverflow.com/a/32223343</span></div>
<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;<span class="keyword">template</span>&lt;std::size_t... Ints&gt;</div>
<div class="line"><a name="l02199"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1index__sequence.html"> 2199</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a></div>
<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;{</div>
<div class="line"><a name="l02201"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1index__sequence.html#a3c14c4ab277de72b166806193ff4fa10"> 2201</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">type</a> = <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a>;</div>
<div class="line"><a name="l02202"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1index__sequence.html#a2eca43d08fc1eb68bd5fa75b6714d21d"> 2202</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html#a2eca43d08fc1eb68bd5fa75b6714d21d">value_type</a> = std::size_t;</div>
<div class="line"><a name="l02203"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1index__sequence.html#a7ac529419787d775f52408135304b337"> 2203</a></span>&#160; <span class="keyword">static</span> constexpr std::size_t <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html#a7ac529419787d775f52408135304b337">size</a>() noexcept</div>
<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; {</div>
<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; <span class="keywordflow">return</span> <span class="keyword">sizeof</span>...(Ints);</div>
<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160; }</div>
<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160;};</div>
<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; </div>
<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Sequence1, <span class="keyword">class</span> Sequence2&gt;</div>
<div class="line"><a name="l02210"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1merge__and__renumber.html"> 2210</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1merge__and__renumber.html">merge_and_renumber</a>;</div>
<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; </div>
<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;<span class="keyword">template</span>&lt;std::size_t... I1, std::size_t... I2&gt;</div>
<div class="line"><a name="l02213"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde4885d6f1d93a04f25932afbd429c4793.html"> 2213</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1merge__and__renumber.html">merge_and_renumber</a>&lt;<a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a>&lt;I1...&gt;, <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a>&lt;I2...&gt;&gt;</div>
<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a> &lt; I1..., (sizeof...(I1) + I2)... &gt; {};</div>
<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160; </div>
<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;<span class="keyword">template</span>&lt;std::<span class="keywordtype">size_t</span> N&gt;</div>
<div class="line"><a name="l02217"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1make__index__sequence.html"> 2217</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">make_index_sequence</a></div>
<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1merge__and__renumber.html">merge_and_renumber</a> &lt; typename make_index_sequence &lt; N / 2 &gt;::type,</div>
<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160; typename make_index_sequence &lt; N - N / 2 &gt;::type &gt; {};</div>
<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160; </div>
<div class="line"><a name="l02221"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4.html"> 2221</a></span>&#160;<span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">make_index_sequence</a>&lt;0&gt; : <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a>&lt;&gt; {};</div>
<div class="line"><a name="l02222"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4.html"> 2222</a></span>&#160;<span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">make_index_sequence</a>&lt;1&gt; : <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a>&lt;0&gt; {};</div>
<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160; </div>
<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span>... Ts&gt;</div>
<div class="line"><a name="l02225"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a24800493c6ec02ce033dcbb47b7fd28e"> 2225</a></span>&#160;<span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">index_sequence_for</a> = <a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">make_index_sequence</a>&lt;<span class="keyword">sizeof</span>...(Ts)&gt;;</div>
<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160; </div>
<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;<span class="comment">// dispatch utility (taken from ranges-v3)</span></div>
<div class="line"><a name="l02228"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1priority__tag.html"> 2228</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> N&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag</a> : <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag</a> &lt; N - 1 &gt; {};</div>
<div class="line"><a name="l02229"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1priority__tag_3_010_01_4.html"> 2229</a></span>&#160;<span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag</a>&lt;0&gt; {};</div>
<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; </div>
<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160;<span class="comment">// taken from ranges-v3</span></div>
<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02233"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1static__const.html"> 2233</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1static__const.html">static_const</a></div>
<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;{</div>
<div class="line"><a name="l02235"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e"> 2235</a></span>&#160; <span class="keyword">static</span> constexpr T <a class="code" href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e">value</a>{};</div>
<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;};</div>
<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160; </div>
<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160;constexpr T <a class="code" href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e">static_const&lt;T&gt;::value</a>;</div>
<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; </div>
<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/type_traits.hpp&gt;</span></div>
<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160; </div>
<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160; </div>
<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;<span class="preprocessor">#include &lt;ciso646&gt;</span> <span class="comment">// not</span></div>
<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span> <span class="comment">// numeric_limits</span></div>
<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span> <span class="comment">// false_type, is_constructible, is_integral, is_same, true_type</span></div>
<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// declval</span></div>
<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160; </div>
<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/iterator_traits.hpp&gt;</span></div>
<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160; </div>
<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160; </div>
<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// random_access_iterator_tag</span></div>
<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160; </div>
<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/void_t.hpp&gt;</span></div>
<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160; </div>
<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160; </div>
<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;{</div>
<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160;{</div>
<div class="line"><a name="l02263"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1make__void.html"> 2263</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ...Ts&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1make__void.html">make_void</a></div>
<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;{</div>
<div class="line"><a name="l02265"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1make__void.html#a8961e24ae3b2cb65ec47d1ce805d94e4"> 2265</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1make__void.html#a8961e24ae3b2cb65ec47d1ce805d94e4">type</a> = <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>;</div>
<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;};</div>
<div class="line"><a name="l02267"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5"> 2267</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ...Ts&gt; <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5">void_t</a> = <span class="keyword">typename</span> <a class="code" href="structnlohmann_1_1detail_1_1make__void.html">make_void</a>&lt;Ts...&gt;::type;</div>
<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160; </div>
<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/cpp_future.hpp&gt;</span></div>
<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160; </div>
<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160; </div>
<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160;{</div>
<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160;{</div>
<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> It, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02279"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types.html"> 2279</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1iterator__types.html">iterator_types</a> {};</div>
<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160; </div>
<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> It&gt;</div>
<div class="line"><a name="l02282"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html"> 2282</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1iterator__types.html">iterator_types</a> &lt;</div>
<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160; It,</div>
<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5">void_t</a>&lt;typename It::<a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a1ce16c1c8c1d6a195f5a3d3ad31820f0">difference_type</a>, typename It::value_type, typename It::pointer,</div>
<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160; typename It::reference, typename It::iterator_category &gt;&gt;</div>
<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160;{</div>
<div class="line"><a name="l02287"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a1ce16c1c8c1d6a195f5a3d3ad31820f0"> 2287</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a1ce16c1c8c1d6a195f5a3d3ad31820f0">difference_type</a> = <span class="keyword">typename</span> It::difference_type;</div>
<div class="line"><a name="l02288"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#ac70fcab4cacd8b386c3f2b056885e15e"> 2288</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#ac70fcab4cacd8b386c3f2b056885e15e">value_type</a> = <span class="keyword">typename</span> It::value_type;</div>
<div class="line"><a name="l02289"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aacaf73dc959b7c2119c15e53b5ce00a3"> 2289</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aacaf73dc959b7c2119c15e53b5ce00a3">pointer</a> = <span class="keyword">typename</span> It::pointer;</div>
<div class="line"><a name="l02290"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a5e82d2d8dabd022b8ff916f2e83a82f2"> 2290</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a5e82d2d8dabd022b8ff916f2e83a82f2">reference</a> = <span class="keyword">typename</span> It::reference;</div>
<div class="line"><a name="l02291"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aaaafbcd0573ec9cfc5d19411950dc1ac"> 2291</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aaaafbcd0573ec9cfc5d19411950dc1ac">iterator_category</a> = <span class="keyword">typename</span> It::iterator_category;</div>
<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;};</div>
<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160; </div>
<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;<span class="comment">// This is required as some compilers implement std::iterator_traits in a way that</span></div>
<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;<span class="comment">// doesn&#39;t work with SFINAE. See https://github.com/nlohmann/json/issues/1341.</span></div>
<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02297"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits.html"> 2297</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits</a></div>
<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160;{</div>
<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160;};</div>
<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160; </div>
<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02302"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_3_01T_01_4_1_1value_01_4_01_4.html"> 2302</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits</a> &lt; T, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> &lt; !<a class="code" href="namespacestd.html">std</a>::is_pointer&lt;T&gt;::value &gt;&gt;</div>
<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1iterator__types.html">iterator_types</a>&lt;T&gt;</div>
<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;{</div>
<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;};</div>
<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; </div>
<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02308"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html"> 2308</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits</a>&lt;T*, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t&lt;std::is_object&lt;T&gt;::value</a>&gt;&gt;</div>
<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160;{</div>
<div class="line"><a name="l02310"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a9b043cfe0fdfb3e9665428fb2be9cea1"> 2310</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a9b043cfe0fdfb3e9665428fb2be9cea1">iterator_category</a> = std::random_access_iterator_tag;</div>
<div class="line"><a name="l02311"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a443e6a62f5fb2c545fc71c751b98ca8d"> 2311</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a443e6a62f5fb2c545fc71c751b98ca8d">value_type</a> = T;</div>
<div class="line"><a name="l02312"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#ae7be99eb434f5b5f34692874c272b759"> 2312</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#ae7be99eb434f5b5f34692874c272b759">difference_type</a> = ptrdiff_t;</div>
<div class="line"><a name="l02313"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a33ee9a1beb8ee099f989fd4af15178a5"> 2313</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a33ee9a1beb8ee099f989fd4af15178a5">pointer</a> = T*;</div>
<div class="line"><a name="l02314"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a0809c5949d22f08a993231d2fdf285f0"> 2314</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a0809c5949d22f08a993231d2fdf285f0">reference</a> = T&amp;;</div>
<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;};</div>
<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; </div>
<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; </div>
<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/cpp_future.hpp&gt;</span></div>
<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160; </div>
<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/detected.hpp&gt;</span></div>
<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; </div>
<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; </div>
<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160; </div>
<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/void_t.hpp&gt;</span></div>
<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; </div>
<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; </div>
<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;<span class="comment">// http://en.cppreference.com/w/cpp/experimental/is_detected</span></div>
<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;{</div>
<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160;{</div>
<div class="line"><a name="l02336"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1nonesuch.html"> 2336</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a></div>
<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;{</div>
<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#a6fe87da966856c6cb06617940d90f010">nonesuch</a>() = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#a7b1119845860e548b67f1644a2084373">~nonesuch</a>() = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#a6fe87da966856c6cb06617940d90f010">nonesuch</a>(<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#a6fe87da966856c6cb06617940d90f010">nonesuch</a>(<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a> <span class="keyword">const</span>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160; <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#add6ef84c52a851e391cef514c85f2ffe">operator=</a>(<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#add6ef84c52a851e391cef514c85f2ffe">operator=</a>(<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;};</div>
<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160; </div>
<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class </span>Default,</div>
<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160; <span class="keyword">class </span>AlwaysVoid,</div>
<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span>...&gt; <span class="keyword">class </span>Op,</div>
<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; <span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a name="l02350"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector.html"> 2350</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1detector.html">detector</a></div>
<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;{</div>
<div class="line"><a name="l02352"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector.html#a5a132aab543d1706e2439268faf8d487"> 2352</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html#a5a132aab543d1706e2439268faf8d487">value_t</a> = std::false_type;</div>
<div class="line"><a name="l02353"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector.html#a0cd69423587748bf3d3d702cc7b7c2ce"> 2353</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html#a0cd69423587748bf3d3d702cc7b7c2ce">type</a> = Default;</div>
<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;};</div>
<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; </div>
<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class </span>Default, <span class="keyword">template</span> &lt;<span class="keyword">class</span>...&gt; <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a name="l02357"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html"> 2357</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1detector.html">detector</a>&lt;Default, <a class="code" href="namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5">void_t</a>&lt;Op&lt;Args...&gt;&gt;, Op, Args...&gt;</div>
<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;{</div>
<div class="line"><a name="l02359"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#ab748f9f00bb31bee4978a033589f8c85"> 2359</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#ab748f9f00bb31bee4978a033589f8c85">value_t</a> = std::true_type;</div>
<div class="line"><a name="l02360"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#a5afd6a40e94dde21d120ac646468c495"> 2360</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#a5afd6a40e94dde21d120ac646468c495">type</a> = Op&lt;Args...&gt;;</div>
<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;};</div>
<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; </div>
<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">template</span> &lt;<span class="keyword">class</span>...&gt; <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a name="l02364"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44"> 2364</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a> = <span class="keyword">typename</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html">detector</a>&lt;<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a>, <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>, Op, Args...&gt;<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">::value_t</a>;</div>
<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160; </div>
<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">template</span> &lt;<span class="keyword">class</span>...&gt; <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a name="l02367"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d"> 2367</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d">detected_t</a> = <span class="keyword">typename</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html">detector</a>&lt;<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a>, <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>, Op, Args...&gt;::type;</div>
<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160; </div>
<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class </span>Default, <span class="keyword">template</span> &lt;<span class="keyword">class</span>...&gt; <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a name="l02370"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a240ce21919ab08e8a6cb3a5cfa412bce"> 2370</a></span>&#160;<span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html">detected_or</a> = <a class="code" href="structnlohmann_1_1detail_1_1detector.html">detector</a>&lt;Default, <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>, Op, Args...&gt;;</div>
<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160; </div>
<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class </span>Default, <span class="keyword">template</span> &lt;<span class="keyword">class</span>...&gt; <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a name="l02373"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7ac5b8ef0363101275a2827b3b117dcf"> 2373</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a7ac5b8ef0363101275a2827b3b117dcf">detected_or_t</a> = <span class="keyword">typename</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html">detected_or</a>&lt;Default, Op, Args...&gt;::type;</div>
<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; </div>
<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class </span>Expected, <span class="keyword">template</span> &lt;<span class="keyword">class</span>...&gt; <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a name="l02376"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def"> 2376</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a> = std::is_same&lt;Expected, <a class="code" href="namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d">detected_t</a>&lt;Op, Args...&gt;&gt;;</div>
<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; </div>
<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class </span>To, <span class="keyword">template</span> &lt;<span class="keyword">class</span>...&gt; <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5262e531c46e357b33007060f294673b">is_detected_convertible</a> =</div>
<div class="line"><a name="l02380"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5262e531c46e357b33007060f294673b"> 2380</a></span>&#160; std::is_convertible&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d">detected_t</a>&lt;Op, Args...&gt;, To&gt;;</div>
<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; </div>
<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160;<span class="comment">// #include &lt;nlohmann/json_fwd.hpp&gt;</span></div>
<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;<span class="preprocessor">#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_</span></div>
<div class="line"><a name="l02386"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae7fdc438c6d6cb1f17c4373bce5a802d"> 2386</a></span>&#160;<span class="preprocessor">#define INCLUDE_NLOHMANN_JSON_FWD_HPP_</span></div>
<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; </div>
<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span> <span class="comment">// int64_t, uint64_t</span></div>
<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span> <span class="comment">// map</span></div>
<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span> <span class="comment">// allocator</span></div>
<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string</span></div>
<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span> <span class="comment">// vector</span></div>
<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160; </div>
<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160;{</div>
<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T = <span class="keywordtype">void</span>, <span class="keyword">typename</span> SFINAE = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02409"></a><span class="lineno"><a class="line" href="structnlohmann_1_1adl__serializer.html"> 2409</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1adl__serializer.html">adl_serializer</a>;</div>
<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; </div>
<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> U, <span class="keyword">typename</span> V, <span class="keyword">typename</span>... Args&gt; <span class="keyword">class </span>ObjectType =</div>
<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; std::map,</div>
<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> U, <span class="keyword">typename</span>... Args&gt; <span class="keyword">class </span>ArrayType = std::vector,</div>
<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160; <span class="keyword">class </span>StringType = std::string, <span class="keyword">class </span>BooleanType = bool,</div>
<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; <span class="keyword">class </span>NumberIntegerType = std::int64_t,</div>
<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; <span class="keyword">class </span>NumberUnsignedType = std::uint64_t,</div>
<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; <span class="keyword">class </span>NumberFloatType = double,</div>
<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> U&gt; <span class="keyword">class </span>AllocatorType = std::allocator,</div>
<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> SFINAE = <span class="keywordtype">void</span>&gt; <span class="keyword">class </span>JSONSerializer =</div>
<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; <a class="code" href="structnlohmann_1_1adl__serializer.html">adl_serializer</a>&gt;</div>
<div class="line"><a name="l02421"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html"> 2421</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>;</div>
<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160; </div>
<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l02435"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html"> 2435</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>;</div>
<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; </div>
<div class="line"><a name="l02445"></a><span class="lineno"><a class="line" href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc"> 2445</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html">json</a> = <a class="code" href="classnlohmann_1_1basic__json.html">basic_json&lt;&gt;</a>;</div>
<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160; </div>
<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160;<span class="preprocessor">#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_</span></div>
<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; </div>
<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; </div>
<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;{</div>
<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160;{</div>
<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160;<span class="comment">// helpers //</span></div>
<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;<span class="comment">// Note to maintainers:</span></div>
<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;<span class="comment">// Every trait in this file expects a non CV-qualified type.</span></div>
<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;<span class="comment">// The only exceptions are in the &#39;aliases for detected&#39; section</span></div>
<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;<span class="comment">// (i.e. those of the form: decltype(T::member_function(std::declval&lt;T&gt;())))</span></div>
<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;<span class="comment">// In this case, T has to be properly CV-qualified to constraint the function arguments</span></div>
<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;<span class="comment">// (e.g. to_json(BasicJsonType&amp;, const T&amp;))</span></div>
<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160; </div>
<div class="line"><a name="l02476"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__basic__json.html"> 2476</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span>&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a> : std::false_type {};</div>
<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160; </div>
<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160;<a class="code" href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f">NLOHMANN_BASIC_JSON_TPL_DECLARATION</a></div>
<div class="line"><a name="l02479"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4.html"> 2479</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a>&lt;<a class="code" href="json_8hpp.html#a80b7254e63f199a1f656f07ae551f632">NLOHMANN_BASIC_JSON_TPL</a>&gt; : std::true_type {};</div>
<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; </div>
<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160;<span class="comment">// aliases for detected //</span></div>
<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02486"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364"> 2486</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364">mapped_type_t</a> = <span class="keyword">typename</span> T::mapped_type;</div>
<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160; </div>
<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02489"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a66dfe39f03b05d6b7265a0ff748d64ef"> 2489</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a66dfe39f03b05d6b7265a0ff748d64ef">key_type_t</a> = <span class="keyword">typename</span> T::key_type;</div>
<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; </div>
<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02492"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc"> 2492</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc">value_type_t</a> = <span class="keyword">typename</span> T::value_type;</div>
<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; </div>
<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02495"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a3603b59a17d1c5e15050743b847992f2"> 2495</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a3603b59a17d1c5e15050743b847992f2">difference_type_t</a> = <span class="keyword">typename</span> T::difference_type;</div>
<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; </div>
<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02498"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a26dc71e2dd9336587e56062178f9abce"> 2498</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a26dc71e2dd9336587e56062178f9abce">pointer_t</a> = <span class="keyword">typename</span> T::pointer;</div>
<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; </div>
<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02501"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a082bdafd3b4c61d9d1e92b35b8f75ee3"> 2501</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a082bdafd3b4c61d9d1e92b35b8f75ee3">reference_t</a> = <span class="keyword">typename</span> T::reference;</div>
<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; </div>
<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02504"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ad22d2aa3aab018050ae519f6754366e1"> 2504</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#ad22d2aa3aab018050ae519f6754366e1">iterator_category_t</a> = <span class="keyword">typename</span> T::iterator_category;</div>
<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160; </div>
<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02507"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a9ff93db146174305bce1bc4c54703e11"> 2507</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9ff93db146174305bce1bc4c54703e11">iterator_t</a> = <span class="keyword">typename</span> T::iterator;</div>
<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160; </div>
<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l02510"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#af846b6cf2f926009ff3a7a61495ca383"> 2510</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#af846b6cf2f926009ff3a7a61495ca383">to_json_function</a> = decltype(<a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">T::to_json</a>(std::declval&lt;Args&gt;()...));</div>
<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; </div>
<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l02513"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322"> 2513</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322">from_json_function</a> = decltype(<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">T::from_json</a>(std::declval&lt;Args&gt;()...));</div>
<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; </div>
<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
<div class="line"><a name="l02516"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ab4d22cdb6521ee3508db496dea66711e"> 2516</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#ab4d22cdb6521ee3508db496dea66711e">get_template_function</a> = decltype(std::declval&lt;T&gt;().<span class="keyword">template</span> get&lt;U&gt;());</div>
<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160; </div>
<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160;<span class="comment">// trait checking if JSONSerializer&lt;T&gt;::from_json(json const&amp;, udt&amp;) exists</span></div>
<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02520"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__from__json.html"> 2520</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">has_from_json</a> : std::false_type {};</div>
<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; </div>
<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02523"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html"> 2523</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">has_from_json</a>&lt;BasicJsonType, T,</div>
<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a>&lt;T&gt;::value&gt;&gt;</div>
<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;{</div>
<div class="line"><a name="l02526"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#ab17cea1be422b8985fc19942809560ed"> 2526</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#ab17cea1be422b8985fc19942809560ed">serializer</a> = <span class="keyword">typename</span> BasicJsonType::template json_serializer&lt;T, void&gt;;</div>
<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160; </div>
<div class="line"><a name="l02528"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#afb638d592883301228bcad21d83bf4aa"> 2528</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>, <a class="code" href="namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322">from_json_function</a>, <a class="code" href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#ab17cea1be422b8985fc19942809560ed">serializer</a>,</div>
<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160; <span class="keyword">const</span> BasicJsonType&amp;, T&amp;&gt;::value;</div>
<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160;};</div>
<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; </div>
<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160;<span class="comment">// This trait checks if JSONSerializer&lt;T&gt;::from_json(json const&amp;) exists</span></div>
<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160;<span class="comment">// this overload is used for non-default-constructible user-defined-types</span></div>
<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02536"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__non__default__from__json.html"> 2536</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json.html">has_non_default_from_json</a> : std::false_type {};</div>
<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; </div>
<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02539"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html"> 2539</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json.html">has_non_default_from_json</a>&lt;BasicJsonType, T, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a>&lt;T&gt;::value&gt;&gt;</div>
<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160;{</div>
<div class="line"><a name="l02541"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a610272ed924122e0c46d158ecdfe6faf"> 2541</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a610272ed924122e0c46d158ecdfe6faf">serializer</a> = <span class="keyword">typename</span> BasicJsonType::template json_serializer&lt;T, void&gt;;</div>
<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; </div>
<div class="line"><a name="l02543"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a1494ac5fed1163aab4a89208ff04ee85"> 2543</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;T, <a class="code" href="namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322">from_json_function</a>, <a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a610272ed924122e0c46d158ecdfe6faf">serializer</a>,</div>
<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; <span class="keyword">const</span> BasicJsonType&amp;&gt;::value;</div>
<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160;};</div>
<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; </div>
<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160;<span class="comment">// This trait checks if BasicJsonType::json_serializer&lt;T&gt;::to_json exists</span></div>
<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160;<span class="comment">// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion.</span></div>
<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02551"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__to__json.html"> 2551</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__to__json.html">has_to_json</a> : std::false_type {};</div>
<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160; </div>
<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02554"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html"> 2554</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__to__json.html">has_to_json</a>&lt;BasicJsonType, T, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a>&lt;T&gt;::value&gt;&gt;</div>
<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160;{</div>
<div class="line"><a name="l02556"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#a479098e9480e0adb30fb3fe3586a8005"> 2556</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#a479098e9480e0adb30fb3fe3586a8005">serializer</a> = <span class="keyword">typename</span> BasicJsonType::template json_serializer&lt;T, void&gt;;</div>
<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; </div>
<div class="line"><a name="l02558"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#ac5e2f95bd9fa54c6ea870e923e395b63"> 2558</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>, <a class="code" href="namespacenlohmann_1_1detail.html#af846b6cf2f926009ff3a7a61495ca383">to_json_function</a>, <a class="code" href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#a479098e9480e0adb30fb3fe3586a8005">serializer</a>, BasicJsonType&amp;,</div>
<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160; T&gt;::value;</div>
<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160;};</div>
<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; </div>
<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160; </div>
<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160;<span class="comment">// is_ functions //</span></div>
<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02569"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__iterator__traits.html"> 2569</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__iterator__traits.html">is_iterator_traits</a> : std::false_type {};</div>
<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; </div>
<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02572"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4.html"> 2572</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__iterator__traits.html">is_iterator_traits</a>&lt;<a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits</a>&lt;T&gt;&gt;</div>
<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160;{</div>
<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">traits</a> = <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits&lt;T&gt;</a>;</div>
<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160; </div>
<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l02578"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4.html#ac2711760b352b8921accc6609957dc90"> 2578</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keyword">auto</span> value =</div>
<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected&lt;value_type_t, traits&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected&lt;difference_type_t, traits&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected&lt;pointer_t, traits&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected&lt;iterator_category_t, traits&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected&lt;reference_t, traits&gt;::value</a>;</div>
<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160;};</div>
<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; </div>
<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;<span class="comment">// source: https://stackoverflow.com/a/37193089/4116453</span></div>
<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; </div>
<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02589"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__complete__type.html"> 2589</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__complete__type.html">is_complete_type</a> : std::false_type {};</div>
<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; </div>
<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l02592"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4.html"> 2592</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__complete__type.html">is_complete_type</a>&lt;T, decltype(<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>(sizeof(T)))&gt; : std::true_type {};</div>
<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160; </div>
<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleObjectType,</div>
<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160; <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02596"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html"> 2596</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html">is_compatible_object_type_impl</a> : std::false_type {};</div>
<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160; </div>
<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleObjectType&gt;</div>
<div class="line"><a name="l02599"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html"> 2599</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html">is_compatible_object_type_impl</a> &lt;</div>
<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; BasicJsonType, CompatibleObjectType,</div>
<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364">mapped_type_t</a>, CompatibleObjectType&gt;::value and</div>
<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a>&lt;key_type_t, CompatibleObjectType&gt;::value &gt;&gt;</div>
<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160;{</div>
<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160; </div>
<div class="line"><a name="l02605"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html#a551e9ee372c1b24b632e6b668c231a62"> 2605</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html#a551e9ee372c1b24b632e6b668c231a62">object_t</a> = <span class="keyword">typename</span> BasicJsonType::object_t;</div>
<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; </div>
<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160; <span class="comment">// macOS&#39;s is_constructible does not play well with nonesuch...</span></div>
<div class="line"><a name="l02608"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html#adc8188ae8d65e8175d961cd461a8ee43"> 2608</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160; std::is_constructible&lt;<span class="keyword">typename</span> object_t::key_type,</div>
<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; <span class="keyword">typename</span> CompatibleObjectType::key_type&gt;::value and</div>
<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160; std::is_constructible&lt;<span class="keyword">typename</span> object_t::mapped_type,</div>
<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; <span class="keyword">typename</span> CompatibleObjectType::mapped_type&gt;::value;</div>
<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160;};</div>
<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; </div>
<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleObjectType&gt;</div>
<div class="line"><a name="l02616"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__object__type.html"> 2616</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__object__type.html">is_compatible_object_type</a></div>
<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html">is_compatible_object_type_impl</a>&lt;BasicJsonType, CompatibleObjectType&gt; {};</div>
<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; </div>
<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleObjectType,</div>
<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02621"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html"> 2621</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html">is_constructible_object_type_impl</a> : std::false_type {};</div>
<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160; </div>
<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleObjectType&gt;</div>
<div class="line"><a name="l02624"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html"> 2624</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html">is_constructible_object_type_impl</a> &lt;</div>
<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; BasicJsonType, ConstructibleObjectType,</div>
<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364">mapped_type_t</a>, ConstructibleObjectType&gt;::value and</div>
<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a>&lt;key_type_t, ConstructibleObjectType&gt;::value &gt;&gt;</div>
<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160;{</div>
<div class="line"><a name="l02629"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html#a6f458a63276ef62d60f4b93de03aa020"> 2629</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html#a6f458a63276ef62d60f4b93de03aa020">object_t</a> = <span class="keyword">typename</span> BasicJsonType::object_t;</div>
<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160; </div>
<div class="line"><a name="l02631"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html#a7c1801a302b938e3176435b6451962e4"> 2631</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; (std::is_default_constructible&lt;ConstructibleObjectType&gt;::value and</div>
<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160; (std::is_move_assignable&lt;ConstructibleObjectType&gt;::value or</div>
<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160; std::is_copy_assignable&lt;ConstructibleObjectType&gt;::value) and</div>
<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160; (std::is_constructible&lt;<span class="keyword">typename</span> ConstructibleObjectType::key_type,</div>
<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160; <span class="keyword">typename</span> object_t::key_type&gt;::value and</div>
<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160; std::is_same &lt;</div>
<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160; <span class="keyword">typename</span> object_t::mapped_type,</div>
<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; <span class="keyword">typename</span> ConstructibleObjectType::mapped_type &gt;::value)) or</div>
<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160; (<a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">has_from_json</a>&lt;BasicJsonType,</div>
<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160; <span class="keyword">typename</span> ConstructibleObjectType::mapped_type&gt;::value or</div>
<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json.html">has_non_default_from_json</a> &lt;</div>
<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; BasicJsonType,</div>
<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; <span class="keyword">typename</span> ConstructibleObjectType::mapped_type &gt;::value);</div>
<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160;};</div>
<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160; </div>
<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleObjectType&gt;</div>
<div class="line"><a name="l02648"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__object__type.html"> 2648</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__object__type.html">is_constructible_object_type</a></div>
<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html">is_constructible_object_type_impl</a>&lt;BasicJsonType,</div>
<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160; ConstructibleObjectType&gt; {};</div>
<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; </div>
<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleStringType,</div>
<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02654"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html"> 2654</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html">is_compatible_string_type_impl</a> : std::false_type {};</div>
<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160; </div>
<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleStringType&gt;</div>
<div class="line"><a name="l02657"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible494e9dc742c819c61e54b8282030b5b6.html"> 2657</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html">is_compatible_string_type_impl</a> &lt;</div>
<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160; BasicJsonType, CompatibleStringType,</div>
<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;typename BasicJsonType::string_t::value_type,</div>
<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc">value_type_t</a>, CompatibleStringType&gt;::value &gt;&gt;</div>
<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160;{</div>
<div class="line"><a name="l02662"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible494e9dc742c819c61e54b8282030b5b6.html#adac1e17a2ddf9ac94be736e96e8943a9"> 2662</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keyword">auto</span> value =</div>
<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160; std::is_constructible&lt;typename BasicJsonType::string_t, CompatibleStringType&gt;::value;</div>
<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160;};</div>
<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160; </div>
<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleStringType&gt;</div>
<div class="line"><a name="l02667"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__string__type.html"> 2667</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__string__type.html">is_compatible_string_type</a></div>
<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html">is_compatible_string_type_impl</a>&lt;BasicJsonType, ConstructibleStringType&gt; {};</div>
<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160; </div>
<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleStringType,</div>
<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160; <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02672"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html"> 2672</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html">is_constructible_string_type_impl</a> : std::false_type {};</div>
<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160; </div>
<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleStringType&gt;</div>
<div class="line"><a name="l02675"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe4743afb22172cdb3c5f428800835387.html"> 2675</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html">is_constructible_string_type_impl</a> &lt;</div>
<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160; BasicJsonType, ConstructibleStringType,</div>
<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;typename BasicJsonType::string_t::value_type,</div>
<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc">value_type_t</a>, ConstructibleStringType&gt;::value &gt;&gt;</div>
<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160;{</div>
<div class="line"><a name="l02680"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe4743afb22172cdb3c5f428800835387.html#a3aeae0de0fc37bd5acf3c9d39b132678"> 2680</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keyword">auto</span> value =</div>
<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; std::is_constructible&lt;ConstructibleStringType,</div>
<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; <span class="keyword">typename</span> BasicJsonType::string_t&gt;::value;</div>
<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160;};</div>
<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160; </div>
<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleStringType&gt;</div>
<div class="line"><a name="l02686"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__string__type.html"> 2686</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__string__type.html">is_constructible_string_type</a></div>
<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html">is_constructible_string_type_impl</a>&lt;BasicJsonType, ConstructibleStringType&gt; {};</div>
<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; </div>
<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleArrayType, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02690"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html"> 2690</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html">is_compatible_array_type_impl</a> : std::false_type {};</div>
<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; </div>
<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleArrayType&gt;</div>
<div class="line"><a name="l02693"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA2ae7cc020294dfcc2b3bca5a9db30ddf.html"> 2693</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html">is_compatible_array_type_impl</a> &lt;</div>
<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160; BasicJsonType, CompatibleArrayType,</div>
<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc">value_type_t</a>, CompatibleArrayType&gt;::value and</div>
<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a>&lt;iterator_t, CompatibleArrayType&gt;::value and</div>
<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160;<span class="comment">// This is needed because json_reverse_iterator has a ::iterator type...</span></div>
<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160;<span class="comment">// Therefore it is detected as a CompatibleArrayType.</span></div>
<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;<span class="comment">// The real fix would be to have an Iterable concept.</span></div>
<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160; not <a class="code" href="structnlohmann_1_1detail_1_1is__iterator__traits.html">is_iterator_traits</a>&lt;</div>
<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160; iterator_traits&lt;CompatibleArrayType&gt;&gt;::value &gt;&gt;</div>
<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160;{</div>
<div class="line"><a name="l02703"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA2ae7cc020294dfcc2b3bca5a9db30ddf.html#aa9bdf31f85ac3ee17180a008f1cb81f7"> 2703</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; std::is_constructible&lt;BasicJsonType,</div>
<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; <span class="keyword">typename</span> CompatibleArrayType::value_type&gt;::value;</div>
<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160;};</div>
<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160; </div>
<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleArrayType&gt;</div>
<div class="line"><a name="l02709"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__array__type.html"> 2709</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__array__type.html">is_compatible_array_type</a></div>
<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html">is_compatible_array_type_impl</a>&lt;BasicJsonType, CompatibleArrayType&gt; {};</div>
<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; </div>
<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02713"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html"> 2713</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html">is_constructible_array_type_impl</a> : std::false_type {};</div>
<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160; </div>
<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType&gt;</div>
<div class="line"><a name="l02716"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construce6fa33688da703b95649da4749cdeb98.html"> 2716</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html">is_constructible_array_type_impl</a> &lt;</div>
<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160; BasicJsonType, ConstructibleArrayType,</div>
<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;<a class="code" href="namespacestd.html">std</a>::is_same&lt;ConstructibleArrayType,</div>
<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160; typename BasicJsonType::value_type&gt;::value &gt;&gt;</div>
<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160; : std::true_type {};</div>
<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160; </div>
<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType&gt;</div>
<div class="line"><a name="l02723"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcb751ba39e14100ed41966800a3fcf4db.html"> 2723</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html">is_constructible_array_type_impl</a> &lt;</div>
<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; BasicJsonType, ConstructibleArrayType,</div>
<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;not <a class="code" href="namespacestd.html">std</a>::is_same&lt;ConstructibleArrayType,</div>
<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160; typename BasicJsonType::value_type&gt;::value and</div>
<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160; std::is_default_constructible&lt;ConstructibleArrayType&gt;::value and</div>
<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;(std::is_move_assignable&lt;ConstructibleArrayType&gt;::value or</div>
<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160; std::is_copy_assignable&lt;ConstructibleArrayType&gt;::value) and</div>
<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;<a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a>&lt;value_type_t, ConstructibleArrayType&gt;::value and</div>
<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160;<a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a>&lt;iterator_t, ConstructibleArrayType&gt;::value and</div>
<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160;<a class="code" href="structnlohmann_1_1detail_1_1is__complete__type.html">is_complete_type</a>&lt;</div>
<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160;detected_t&lt;value_type_t, ConstructibleArrayType&gt;&gt;::value &gt;&gt;</div>
<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;{</div>
<div class="line"><a name="l02735"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcb751ba39e14100ed41966800a3fcf4db.html#a39e2baa94bee9c7abed5e3cada4bf184"> 2735</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; <span class="comment">// This is needed because json_reverse_iterator has a ::iterator type,</span></div>
<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160; <span class="comment">// furthermore, std::back_insert_iterator (and other iterators) have a</span></div>
<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160; <span class="comment">// base class `iterator`... Therefore it is detected as a</span></div>
<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160; <span class="comment">// ConstructibleArrayType. The real fix would be to have an Iterable</span></div>
<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160; <span class="comment">// concept.</span></div>
<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160; not <a class="code" href="structnlohmann_1_1detail_1_1is__iterator__traits.html">is_iterator_traits&lt;iterator_traits&lt;ConstructibleArrayType&gt;</a>&gt;::value and</div>
<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160; </div>
<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160; (std::is_same&lt;<span class="keyword">typename</span> ConstructibleArrayType::value_type,</div>
<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160; <span class="keyword">typename</span> BasicJsonType::array_t::value_type&gt;::value or</div>
<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">has_from_json</a>&lt;BasicJsonType,</div>
<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160; <span class="keyword">typename</span> ConstructibleArrayType::value_type&gt;::value or</div>
<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json.html">has_non_default_from_json</a> &lt;</div>
<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160; BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType::value_type &gt;::value);</div>
<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160;};</div>
<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160; </div>
<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType&gt;</div>
<div class="line"><a name="l02752"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__array__type.html"> 2752</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__array__type.html">is_constructible_array_type</a></div>
<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html">is_constructible_array_type_impl</a>&lt;BasicJsonType, ConstructibleArrayType&gt; {};</div>
<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160; </div>
<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> RealIntegerType, <span class="keyword">typename</span> CompatibleNumberIntegerType,</div>
<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160; <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02757"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html"> 2757</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html">is_compatible_integer_type_impl</a> : std::false_type {};</div>
<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160; </div>
<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> RealIntegerType, <span class="keyword">typename</span> CompatibleNumberIntegerType&gt;</div>
<div class="line"><a name="l02760"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html"> 2760</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html">is_compatible_integer_type_impl</a> &lt;</div>
<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160; RealIntegerType, CompatibleNumberIntegerType,</div>
<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;<a class="code" href="namespacestd.html">std</a>::is_integral&lt;RealIntegerType&gt;::value and</div>
<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160; std::is_integral&lt;CompatibleNumberIntegerType&gt;::value and</div>
<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160; not std::is_same&lt;bool, CompatibleNumberIntegerType&gt;::value &gt;&gt;</div>
<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160;{</div>
<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160; <span class="comment">// is there an assert somewhere on overflows?</span></div>
<div class="line"><a name="l02767"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a0e9f2586c4de25750563770c9388ab9f"> 2767</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a0e9f2586c4de25750563770c9388ab9f">RealLimits</a> = std::numeric_limits&lt;RealIntegerType&gt;;</div>
<div class="line"><a name="l02768"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a002983b5c7c0f72b89d2151a6b39627d"> 2768</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a002983b5c7c0f72b89d2151a6b39627d">CompatibleLimits</a> = std::numeric_limits&lt;CompatibleNumberIntegerType&gt;;</div>
<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160; </div>
<div class="line"><a name="l02770"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a478242daac7a70e28c749bfec00d1c1b"> 2770</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keyword">auto</span> value =</div>
<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160; std::is_constructible&lt;RealIntegerType,</div>
<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160; CompatibleNumberIntegerType&gt;::value and</div>
<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160; CompatibleLimits::is_integer and</div>
<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160; RealLimits::is_signed == CompatibleLimits::is_signed;</div>
<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160;};</div>
<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160; </div>
<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> RealIntegerType, <span class="keyword">typename</span> CompatibleNumberIntegerType&gt;</div>
<div class="line"><a name="l02778"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type.html"> 2778</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type.html">is_compatible_integer_type</a></div>
<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html">is_compatible_integer_type_impl</a>&lt;RealIntegerType,</div>
<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160; CompatibleNumberIntegerType&gt; {};</div>
<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160; </div>
<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleType, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l02783"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__type__impl.html"> 2783</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__type__impl.html">is_compatible_type_impl</a>: std::false_type {};</div>
<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160; </div>
<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleType&gt;</div>
<div class="line"><a name="l02786"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_fa54cb60e66f5c6ba93b1dd3f418b703.html"> 2786</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__type__impl.html">is_compatible_type_impl</a> &lt;</div>
<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160; BasicJsonType, CompatibleType,</div>
<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;<a class="code" href="structnlohmann_1_1detail_1_1is__complete__type.html">is_complete_type</a>&lt;CompatibleType&gt;::value &gt;&gt;</div>
<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;{</div>
<div class="line"><a name="l02790"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_fa54cb60e66f5c6ba93b1dd3f418b703.html#a1e4cacef2d41bdc682a1e2946edb0a41"> 2790</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1has__to__json.html">has_to_json&lt;BasicJsonType, CompatibleType&gt;::value</a>;</div>
<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160;};</div>
<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160; </div>
<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleType&gt;</div>
<div class="line"><a name="l02795"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__type.html"> 2795</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__type.html">is_compatible_type</a></div>
<div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__type__impl.html">is_compatible_type_impl</a>&lt;BasicJsonType, CompatibleType&gt; {};</div>
<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160; </div>
<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160;<span class="comment">// https://en.cppreference.com/w/cpp/types/conjunction</span></div>
<div class="line"><a name="l02799"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1conjunction.html"> 2799</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span>...&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1conjunction.html">conjunction</a> : std::true_type { };</div>
<div class="line"><a name="l02800"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.html"> 2800</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> B1&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.html">conjunction&lt;B1&gt;</a> : B1 { };</div>
<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class </span>B1, <span class="keyword">class</span>... Bn&gt;</div>
<div class="line"><a name="l02802"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4.html"> 2802</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1conjunction.html">conjunction</a>&lt;B1, Bn...&gt;</div>
<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160;: std::conditional&lt;bool(B1::value), conjunction&lt;Bn...&gt;, B1&gt;::type {};</div>
<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160; </div>
<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt;</div>
<div class="line"><a name="l02806"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__tuple.html"> 2806</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__tuple.html">is_constructible_tuple</a> : std::false_type {};</div>
<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160; </div>
<div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T1, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l02809"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4.html"> 2809</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__tuple.html">is_constructible_tuple</a>&lt;T1, <a class="code" href="namespacestd.html">std</a>::tuple&lt;Args...&gt;&gt; : <a class="code" href="structnlohmann_1_1detail_1_1conjunction.html">conjunction</a>&lt;std::is_constructible&lt;T1, Args&gt;...&gt; {};</div>
<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160; </div>
<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/value_t.hpp&gt;</span></div>
<div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160; </div>
<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160; </div>
<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span> <span class="comment">// array</span></div>
<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160;<span class="preprocessor">#include &lt;ciso646&gt;</span> <span class="comment">// and</span></div>
<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// size_t</span></div>
<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span> <span class="comment">// uint8_t</span></div>
<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string</span></div>
<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160; </div>
<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160;{</div>
<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160;{</div>
<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160;<span class="comment">// JSON type enumeration //</span></div>
<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l02854"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985"> 2854</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> : std::uint8_t</div>
<div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160;{</div>
<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160; <span class="keyword">null</span>, </div>
<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">object</a>, </div>
<div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">array</a>, </div>
<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">string</a>, </div>
<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">boolean</a>, </div>
<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">number_integer</a>, </div>
<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">number_unsigned</a>, </div>
<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">number_float</a>, </div>
<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">discarded</a> </div>
<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160;};</div>
<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160; </div>
<div class="line"><a name="l02877"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a09169efff3bd1771fff29bd92cea19e0"> 2877</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespacenlohmann_1_1detail.html#a09169efff3bd1771fff29bd92cea19e0">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> lhs, <span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> rhs) noexcept</div>
<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160;{</div>
<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160; <span class="keyword">static</span> constexpr std::array&lt;std::uint8_t, 8&gt; order = {{</div>
<div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; 0 <span class="comment">/* null */</span>, 3 <span class="comment">/* object */</span>, 4 <span class="comment">/* array */</span>, 5 <span class="comment">/* string */</span>,</div>
<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160; 1 <span class="comment">/* boolean */</span>, 2 <span class="comment">/* integer */</span>, 2 <span class="comment">/* unsigned */</span>, 2 <span class="comment">/* float */</span></div>
<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160; }</div>
<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160; };</div>
<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160; </div>
<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> l_index = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(lhs);</div>
<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> r_index = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(rhs);</div>
<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160; <span class="keywordflow">return</span> l_index &lt; order.size() and r_index &lt; order.size() and order[l_index] &lt; order[r_index];</div>
<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160;}</div>
<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160; </div>
<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160; </div>
<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;{</div>
<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160;{</div>
<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l02898"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603"> 2898</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, <span class="keyword">typename</span> std::nullptr_t&amp; n)</div>
<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160;{</div>
<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_null()))</div>
<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; {</div>
<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be null, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; }</div>
<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160; n = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160;}</div>
<div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160; </div>
<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160;<span class="comment">// overloads for basic_json template parameters</span></div>
<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ArithmeticType,</div>
<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160; enable_if_t&lt;std::is_arithmetic&lt;ArithmeticType&gt;::value and</div>
<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160; not std::is_same&lt;ArithmeticType, typename BasicJsonType::boolean_t&gt;::value,</div>
<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160; <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l02912"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6"> 2912</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">get_arithmetic_value</a>(<span class="keyword">const</span> BasicJsonType&amp; j, ArithmeticType&amp; val)</div>
<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160;{</div>
<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160; <span class="keywordflow">switch</span> (<span class="keyword">static_cast&lt;</span><a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a><span class="keyword">&gt;</span>(j))</div>
<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160; {</div>
<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160; {</div>
<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160; val = <span class="keyword">static_cast&lt;</span>ArithmeticType<span class="keyword">&gt;</span>(*j.template get_ptr&lt;const typename BasicJsonType::number_unsigned_t*&gt;());</div>
<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; }</div>
<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160; {</div>
<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160; val = <span class="keyword">static_cast&lt;</span>ArithmeticType<span class="keyword">&gt;</span>(*j.template get_ptr&lt;const typename BasicJsonType::number_integer_t*&gt;());</div>
<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; }</div>
<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; {</div>
<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160; val = <span class="keyword">static_cast&lt;</span>ArithmeticType<span class="keyword">&gt;</span>(*j.template get_ptr&lt;const typename BasicJsonType::number_float_t*&gt;());</div>
<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160; }</div>
<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160; </div>
<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be number, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; }</div>
<div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160;}</div>
<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160; </div>
<div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l02938"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a58117f225f43d03e3a0a4a6f3d77c9d9"> 2938</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::boolean_t&amp; b)</div>
<div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160;{</div>
<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_boolean()))</div>
<div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; {</div>
<div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be boolean, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; }</div>
<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160; b = *j.template get_ptr&lt;const typename BasicJsonType::boolean_t*&gt;();</div>
<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160;}</div>
<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160; </div>
<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l02948"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ad74d89f77ada7a57eff38b43d4bf2335"> 2948</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::string_t&amp; s)</div>
<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160;{</div>
<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_string()))</div>
<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160; {</div>
<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be string, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160; }</div>
<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160; s = *j.template get_ptr&lt;const typename BasicJsonType::string_t*&gt;();</div>
<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160;}</div>
<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160; </div>
<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160;<span class="keyword">template</span> &lt;</div>
<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160; <span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleStringType,</div>
<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> &lt;</div>
<div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160; is_constructible_string_type&lt;BasicJsonType, ConstructibleStringType&gt;::value and</div>
<div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160; not std::is_same&lt;<span class="keyword">typename</span> BasicJsonType::string_t,</div>
<div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160; ConstructibleStringType&gt;::value,</div>
<div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160; <span class="keywordtype">int</span> &gt; = 0 &gt;</div>
<div class="line"><a name="l02964"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a2932f2bc2943dac6d51669312f4fc0f5"> 2964</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, ConstructibleStringType&amp; s)</div>
<div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160;{</div>
<div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_string()))</div>
<div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160; {</div>
<div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be string, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160; }</div>
<div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160; </div>
<div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160; s = *j.template get_ptr&lt;const typename BasicJsonType::string_t*&gt;();</div>
<div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160;}</div>
<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160; </div>
<div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l02975"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7cb5dd7d46a60e65f9a8e0873b3f7dd8"> 2975</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::number_float_t&amp; val)</div>
<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160;{</div>
<div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">get_arithmetic_value</a>(j, val);</div>
<div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160;}</div>
<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160; </div>
<div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l02981"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ace4d5680ba413d9fd897ccb5d9c61a1c"> 2981</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::number_unsigned_t&amp; val)</div>
<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160;{</div>
<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">get_arithmetic_value</a>(j, val);</div>
<div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160;}</div>
<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160; </div>
<div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l02987"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a047d881e611fcac709dc318f730a1732"> 2987</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::number_integer_t&amp; val)</div>
<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160;{</div>
<div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">get_arithmetic_value</a>(j, val);</div>
<div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160;}</div>
<div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160; </div>
<div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> EnumType,</div>
<div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160; enable_if_t&lt;std::is_enum&lt;EnumType&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l02994"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5440d650150d01e8015133521351b459"> 2994</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, EnumType&amp; e)</div>
<div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160;{</div>
<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160; <span class="keyword">typename</span> std::underlying_type&lt;EnumType&gt;::type val;</div>
<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">get_arithmetic_value</a>(j, val);</div>
<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160; e = <span class="keyword">static_cast&lt;</span>EnumType<span class="keyword">&gt;</span>(val);</div>
<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160;}</div>
<div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160; </div>
<div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160;<span class="comment">// forward_list doesn&#39;t have an insert method</span></div>
<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, <span class="keyword">typename</span> Allocator,</div>
<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160; enable_if_t&lt;std::is_convertible&lt;BasicJsonType, T&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03004"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5cfb765aad92795abd7fda29d017272a"> 3004</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, std::forward_list&lt;T, Allocator&gt;&amp; l)</div>
<div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160;{</div>
<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_array()))</div>
<div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160; {</div>
<div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be array, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160; }</div>
<div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160; l.clear();</div>
<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160; std::transform(j.rbegin(), j.rend(),</div>
<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160; std::front_inserter(l), [](<span class="keyword">const</span> BasicJsonType &amp; i)</div>
<div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160; {</div>
<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160; return i.template get&lt;T&gt;();</div>
<div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160; });</div>
<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160;}</div>
<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160; </div>
<div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160;<span class="comment">// valarray doesn&#39;t have an insert method</span></div>
<div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T,</div>
<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160; enable_if_t&lt;std::is_convertible&lt;BasicJsonType, T&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03021"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a3df497b1d3977f071b488ecac1401517"> 3021</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, std::valarray&lt;T&gt;&amp; l)</div>
<div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160;{</div>
<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_array()))</div>
<div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160; {</div>
<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be array, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; }</div>
<div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; l.resize(j.size());</div>
<div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160; std::copy(j.begin(), j.end(), std::begin(l));</div>
<div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160;}</div>
<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160; </div>
<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> N&gt;</div>
<div class="line"><a name="l03032"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7deb2db8eed6f1762373dde7a6595760"> 3032</a></span>&#160;<span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, T (&amp;arr)[N])</div>
<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160;-&gt; decltype(j.template get&lt;T&gt;(), <span class="keywordtype">void</span>())</div>
<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;{</div>
<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; N; ++i)</div>
<div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160; {</div>
<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160; arr[i] = j.at(i).template get&lt;T&gt;();</div>
<div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160; }</div>
<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160;}</div>
<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160; </div>
<div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03042"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8"> 3042</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(<span class="keyword">const</span> BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::array_t&amp; arr, <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag&lt;3&gt;</a> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160;{</div>
<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160; arr = *j.template get_ptr&lt;const typename BasicJsonType::array_t*&gt;();</div>
<div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160;}</div>
<div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160; </div>
<div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> N&gt;</div>
<div class="line"><a name="l03048"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aba0ce45ebb69fd2c7132a00f9a56b503"> 3048</a></span>&#160;<span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(<span class="keyword">const</span> BasicJsonType&amp; j, std::array&lt;T, N&gt;&amp; arr,</div>
<div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag&lt;2&gt;</a> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160;-&gt; decltype(j.template get&lt;T&gt;(), <span class="keywordtype">void</span>())</div>
<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160;{</div>
<div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; N; ++i)</div>
<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160; {</div>
<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160; arr[i] = j.at(i).template get&lt;T&gt;();</div>
<div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160; }</div>
<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160;}</div>
<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160; </div>
<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType&gt;</div>
<div class="line"><a name="l03059"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a464e1246f3df7edea79c3f81ab701edd"> 3059</a></span>&#160;<span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(<span class="keyword">const</span> BasicJsonType&amp; j, ConstructibleArrayType&amp; arr, <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag&lt;1&gt;</a> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160;-&gt; decltype(</div>
<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160; arr.reserve(std::declval&lt;typename ConstructibleArrayType::size_type&gt;()),</div>
<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160; j.template get&lt;typename ConstructibleArrayType::value_type&gt;(),</div>
<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160; <span class="keywordtype">void</span>())</div>
<div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160;{</div>
<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160; <span class="keyword">using</span> std::end;</div>
<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160; </div>
<div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160; ConstructibleArrayType ret;</div>
<div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160; ret.reserve(j.size());</div>
<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160; std::transform(j.begin(), j.end(),</div>
<div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160; std::inserter(ret, end(ret)), [](<span class="keyword">const</span> BasicJsonType &amp; i)</div>
<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160; {</div>
<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160; <span class="comment">// get&lt;BasicJsonType&gt;() returns *this, this won&#39;t call a from_json</span></div>
<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160; <span class="comment">// method when value_type is BasicJsonType</span></div>
<div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; <span class="keywordflow">return</span> i.template get&lt;typename ConstructibleArrayType::value_type&gt;();</div>
<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160; });</div>
<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160; arr = std::move(ret);</div>
<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160;}</div>
<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160; </div>
<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType&gt;</div>
<div class="line"><a name="l03080"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a20cf21255e75cff1ffb0869c2c545e63"> 3080</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(<span class="keyword">const</span> BasicJsonType&amp; j, ConstructibleArrayType&amp; arr,</div>
<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1priority__tag_3_010_01_4.html">priority_tag&lt;0&gt;</a> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160;{</div>
<div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160; <span class="keyword">using</span> std::end;</div>
<div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160; </div>
<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160; ConstructibleArrayType ret;</div>
<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160; std::transform(</div>
<div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160; j.begin(), j.end(), std::inserter(ret, end(ret)),</div>
<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160; [](<span class="keyword">const</span> BasicJsonType &amp; i)</div>
<div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160; {</div>
<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160; <span class="comment">// get&lt;BasicJsonType&gt;() returns *this, this won&#39;t call a from_json</span></div>
<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160; <span class="comment">// method when value_type is BasicJsonType</span></div>
<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160; <span class="keywordflow">return</span> i.template get&lt;typename ConstructibleArrayType::value_type&gt;();</div>
<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160; });</div>
<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160; arr = std::move(ret);</div>
<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160;}</div>
<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160; </div>
<div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType,</div>
<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> &lt;</div>
<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160; is_constructible_array_type&lt;BasicJsonType, ConstructibleArrayType&gt;::value and</div>
<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; not is_constructible_object_type&lt;BasicJsonType, ConstructibleArrayType&gt;::value and</div>
<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160; not is_constructible_string_type&lt;BasicJsonType, ConstructibleArrayType&gt;::value and</div>
<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160; not is_basic_json&lt;ConstructibleArrayType&gt;::value,</div>
<div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160; <span class="keywordtype">int</span> &gt; = 0 &gt;</div>
<div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160; </div>
<div class="line"><a name="l03105"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a14d8cdf544585f1c38eab6a0820e55f7"> 3105</a></span>&#160;<span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, ConstructibleArrayType&amp; arr)</div>
<div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160;-&gt; decltype(<a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(j, arr, <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag&lt;3&gt;</a> {}),</div>
<div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160;j.template get&lt;typename ConstructibleArrayType::value_type&gt;(),</div>
<div class="line"><a name="l03108"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d"> 3108</a></span>&#160;<span class="keywordtype">void</span>())</div>
<div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160;{</div>
<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_array()))</div>
<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160; {</div>
<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be array, but is &quot;</span> +</div>
<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160; std::string(j.type_name())));</div>
<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160; }</div>
<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160; </div>
<div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(j, arr, <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag&lt;3&gt;</a> {});</div>
<div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>&#160;}</div>
<div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>&#160; </div>
<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleObjectType,</div>
<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160; enable_if_t&lt;is_constructible_object_type&lt;BasicJsonType, ConstructibleObjectType&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03121"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5b24896e5f5db6af06d939dde4b63fe1"> 3121</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, ConstructibleObjectType&amp; obj)</div>
<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160;{</div>
<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_object()))</div>
<div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>&#160; {</div>
<div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be object, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160; }</div>
<div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>&#160; </div>
<div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>&#160; ConstructibleObjectType ret;</div>
<div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>&#160; <span class="keyword">auto</span> inner_object = j.template get_ptr&lt;const typename BasicJsonType::object_t*&gt;();</div>
<div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>&#160; <span class="keyword">using</span> value_type = <span class="keyword">typename</span> ConstructibleObjectType::value_type;</div>
<div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>&#160; std::transform(</div>
<div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>&#160; inner_object-&gt;begin(), inner_object-&gt;end(),</div>
<div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>&#160; std::inserter(ret, ret.begin()),</div>
<div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>&#160; [](<span class="keyword">typename</span> BasicJsonType::object_t::value_type <span class="keyword">const</span> &amp; p)</div>
<div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>&#160; {</div>
<div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>&#160; return value_type(p.first, p.second.template get&lt;typename ConstructibleObjectType::mapped_type&gt;());</div>
<div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>&#160; });</div>
<div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>&#160; obj = std::move(ret);</div>
<div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>&#160;}</div>
<div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>&#160; </div>
<div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>&#160;<span class="comment">// overload for arithmetic types, not chosen for basic_json template arguments</span></div>
<div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>&#160;<span class="comment">// (BooleanType, etc..); note: Is it really necessary to provide explicit</span></div>
<div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>&#160;<span class="comment">// overloads for boolean_t etc. in case of a custom BooleanType which is not</span></div>
<div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>&#160;<span class="comment">// an arithmetic type?</span></div>
<div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ArithmeticType,</div>
<div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> &lt;</div>
<div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160; std::is_arithmetic&lt;ArithmeticType&gt;::value and</div>
<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160; not std::is_same&lt;ArithmeticType, typename BasicJsonType::number_unsigned_t&gt;::value and</div>
<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160; not std::is_same&lt;ArithmeticType, typename BasicJsonType::number_integer_t&gt;::value and</div>
<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160; not std::is_same&lt;ArithmeticType, typename BasicJsonType::number_float_t&gt;::value and</div>
<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; not std::is_same&lt;ArithmeticType, typename BasicJsonType::boolean_t&gt;::value,</div>
<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160; <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03153"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a839b0ab50d2c9bce669068f56bc41202"> 3153</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, ArithmeticType&amp; val)</div>
<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160;{</div>
<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160; <span class="keywordflow">switch</span> (<span class="keyword">static_cast&lt;</span><a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a><span class="keyword">&gt;</span>(j))</div>
<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>&#160; {</div>
<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160; {</div>
<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160; val = <span class="keyword">static_cast&lt;</span>ArithmeticType<span class="keyword">&gt;</span>(*j.template get_ptr&lt;const typename BasicJsonType::number_unsigned_t*&gt;());</div>
<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160; }</div>
<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160; {</div>
<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160; val = <span class="keyword">static_cast&lt;</span>ArithmeticType<span class="keyword">&gt;</span>(*j.template get_ptr&lt;const typename BasicJsonType::number_integer_t*&gt;());</div>
<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160; }</div>
<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160; {</div>
<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160; val = <span class="keyword">static_cast&lt;</span>ArithmeticType<span class="keyword">&gt;</span>(*j.template get_ptr&lt;const typename BasicJsonType::number_float_t*&gt;());</div>
<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160; }</div>
<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>&#160; {</div>
<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160; val = <span class="keyword">static_cast&lt;</span>ArithmeticType<span class="keyword">&gt;</span>(*j.template get_ptr&lt;const typename BasicJsonType::boolean_t*&gt;());</div>
<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160; }</div>
<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160; </div>
<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be number, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160; }</div>
<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>&#160;}</div>
<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>&#160; </div>
<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2&gt;</div>
<div class="line"><a name="l03184"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aae9f9c2601074e323d49428132cc293d"> 3184</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, std::pair&lt;A1, A2&gt;&amp; p)</div>
<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>&#160;{</div>
<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>&#160; p = {j.at(0).template get&lt;A1&gt;(), j.at(1).template get&lt;A2&gt;()};</div>
<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>&#160;}</div>
<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>&#160; </div>
<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> Tuple, std::size_t... Idx&gt;</div>
<div class="line"><a name="l03190"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a28253915d9db4a0112d60eaee0422949"> 3190</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a28253915d9db4a0112d60eaee0422949">from_json_tuple_impl</a>(<span class="keyword">const</span> BasicJsonType&amp; j, Tuple&amp; t, <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence&lt;Idx...&gt;</a> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160;{</div>
<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>&#160; t = std::make_tuple(j.at(Idx).template <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>&lt;<span class="keyword">typename</span> std::tuple_element&lt;Idx, Tuple&gt;::type&gt;()...);</div>
<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>&#160;}</div>
<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>&#160; </div>
<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l03196"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a8b99ec9b29f3f20a18fc4281fb784e49"> 3196</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, std::tuple&lt;Args...&gt;&amp; t)</div>
<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160;{</div>
<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a28253915d9db4a0112d60eaee0422949">from_json_tuple_impl</a>(j, t, <a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">index_sequence_for&lt;Args...&gt;</a> {});</div>
<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160;}</div>
<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160; </div>
<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> Key, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> Compare, <span class="keyword">typename</span> Allocator,</div>
<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160; <span class="keyword">typename</span> = <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;not std::is_constructible&lt;</div>
<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160; <span class="keyword">typename</span> BasicJsonType::string_t, Key&gt;::value&gt;&gt;</div>
<div class="line"><a name="l03204"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ae93147a54d2740228ef16a5e6210ca3e"> 3204</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, std::map&lt;Key, Value, Compare, Allocator&gt;&amp; m)</div>
<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160;{</div>
<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_array()))</div>
<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160; {</div>
<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be array, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160; }</div>
<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160; m.clear();</div>
<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : j)</div>
<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160; {</div>
<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not p.is_array()))</div>
<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160; {</div>
<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be array, but is &quot;</span> + std::string(p.type_name())));</div>
<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>&#160; }</div>
<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160; m.emplace(p.at(0).template get&lt;Key&gt;(), p.at(1).template get&lt;Value&gt;());</div>
<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160; }</div>
<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160;}</div>
<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160; </div>
<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> Key, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> Hash, <span class="keyword">typename</span> KeyEqual, <span class="keyword">typename</span> Allocator,</div>
<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160; <span class="keyword">typename</span> = <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;not std::is_constructible&lt;</div>
<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160; <span class="keyword">typename</span> BasicJsonType::string_t, Key&gt;::value&gt;&gt;</div>
<div class="line"><a name="l03224"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de"> 3224</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType&amp; j, std::unordered_map&lt;Key, Value, Hash, KeyEqual, Allocator&gt;&amp; m)</div>
<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160;{</div>
<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_array()))</div>
<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160; {</div>
<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be array, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160; }</div>
<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>&#160; m.clear();</div>
<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; p : j)</div>
<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160; {</div>
<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not p.is_array()))</div>
<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160; {</div>
<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be array, but is &quot;</span> + std::string(p.type_name())));</div>
<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160; }</div>
<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160; m.emplace(p.at(0).template get&lt;Key&gt;(), p.at(1).template get&lt;Value&gt;());</div>
<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160; }</div>
<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160;}</div>
<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160; </div>
<div class="line"><a name="l03241"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1from__json__fn.html"> 3241</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1from__json__fn.html">from_json_fn</a></div>
<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160;{</div>
<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l03244"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1from__json__fn.html#a6d14a74e1043072c77892534572d2973"> 3244</a></span>&#160; <span class="keyword">auto</span> <a class="code" href="structnlohmann_1_1detail_1_1from__json__fn.html#a6d14a74e1043072c77892534572d2973">operator()</a>(<span class="keyword">const</span> BasicJsonType&amp; j, T&amp; val) <span class="keyword">const</span></div>
<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160; noexcept(noexcept(<a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(j, val)))</div>
<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160; -&gt; decltype(<a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(j, val), <span class="keywordtype">void</span>())</div>
<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160; {</div>
<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(j, val);</div>
<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>&#160; }</div>
<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>&#160;};</div>
<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160; </div>
<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>&#160;<span class="keyword">namespace</span></div>
<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>&#160;{</div>
<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>&#160;constexpr <span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">from_json</a> = <a class="code" href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e">detail::static_const&lt;detail::from_json_fn&gt;::value</a>;</div>
<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>&#160;} <span class="comment">// namespace</span></div>
<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>&#160; </div>
<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/conversions/to_json.hpp&gt;</span></div>
<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>&#160; </div>
<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>&#160; </div>
<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span> <span class="comment">// copy</span></div>
<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>&#160;<span class="preprocessor">#include &lt;ciso646&gt;</span> <span class="comment">// or, and, not</span></div>
<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// begin, end</span></div>
<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string</span></div>
<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160;<span class="preprocessor">#include &lt;tuple&gt;</span> <span class="comment">// tuple, get</span></div>
<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span> <span class="comment">// is_same, is_constructible, is_floating_point, is_enum, underlying_type</span></div>
<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// move, forward, declval, pair</span></div>
<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160;<span class="preprocessor">#include &lt;valarray&gt;</span> <span class="comment">// valarray</span></div>
<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span> <span class="comment">// vector</span></div>
<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160; </div>
<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/iteration_proxy.hpp&gt;</span></div>
<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160; </div>
<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160; </div>
<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// size_t</span></div>
<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// input_iterator_tag</span></div>
<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string, to_string</span></div>
<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160;<span class="preprocessor">#include &lt;tuple&gt;</span> <span class="comment">// tuple_size, get, tuple_element</span></div>
<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160; </div>
<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/type_traits.hpp&gt;</span></div>
<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160; </div>
<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/value_t.hpp&gt;</span></div>
<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160; </div>
<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160; </div>
<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160;{</div>
<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160;{</div>
<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> <span class="keywordtype">string</span>_type&gt;</div>
<div class="line"><a name="l03293"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a3c45286b0a2f15ea0a756cb87a76cf9b"> 3293</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a3c45286b0a2f15ea0a756cb87a76cf9b">int_to_string</a>( string_type&amp; target, std::size_t value )</div>
<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160;{</div>
<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160; target = <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(value);</div>
<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160;}</div>
<div class="line"><a name="l03297"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html"> 3297</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> IteratorType&gt; <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value</a></div>
<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160;{</div>
<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l03300"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ada6b4e6d55d8ed7ac79e49a03e9d1fe2"> 3300</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ada6b4e6d55d8ed7ac79e49a03e9d1fe2">difference_type</a> = std::ptrdiff_t;</div>
<div class="line"><a name="l03301"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a5e90a5810cc1bb6c1000eabbfdfe7b9e"> 3301</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">value_type</a> = <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a459dd8961b80b2089d8161c9aa466581">iteration_proxy_value</a>;</div>
<div class="line"><a name="l03302"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a44c64feee85b8e7164a05310e6418a4b"> 3302</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">pointer</a> = <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">value_type</a> * ;</div>
<div class="line"><a name="l03303"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a5bc7d3133daab5ec4797f3132e093af8"> 3303</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">reference</a> = <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">value_type</a> &amp; ;</div>
<div class="line"><a name="l03304"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1ab8c44e3772c03651b5ad07216043cf"> 3304</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1ab8c44e3772c03651b5ad07216043cf">iterator_category</a> = std::input_iterator_tag;</div>
<div class="line"><a name="l03305"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6"> 3305</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6">string_type</a> = <span class="keyword">typename</span> std::remove_cv&lt; typename std::remove_reference&lt;decltype( std::declval&lt;IteratorType&gt;().<a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2949ac0d70212738030bfda29c5bcc2">key</a>() ) &gt;::type &gt;::type;</div>
<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160; </div>
<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160; IteratorType anchor;</div>
<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160; std::size_t array_index = 0;</div>
<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160; <span class="keyword">mutable</span> std::size_t array_index_last = 0;</div>
<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160; <span class="keyword">mutable</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6">string_type</a> array_index_str = <span class="stringliteral">&quot;0&quot;</span>;</div>
<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6">string_type</a> empty_str = <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160; </div>
<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l03320"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a459dd8961b80b2089d8161c9aa466581"> 3320</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a459dd8961b80b2089d8161c9aa466581">iteration_proxy_value</a>(IteratorType it) noexcept : anchor(it) {}</div>
<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160; </div>
<div class="line"><a name="l03323"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a10accadf05a172fdc69a016bec201e81"> 3323</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a10accadf05a172fdc69a016bec201e81">operator*</a>()</div>
<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160; {</div>
<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160; }</div>
<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160; </div>
<div class="line"><a name="l03329"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#adf4db2aef31822f3a179435158a4de11"> 3329</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#adf4db2aef31822f3a179435158a4de11">operator++</a>()</div>
<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160; {</div>
<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160; ++anchor;</div>
<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160; ++array_index;</div>
<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160; </div>
<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160; }</div>
<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160; </div>
<div class="line"><a name="l03338"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2b78a8b9c9276b07c928b21bb1e2d54"> 3338</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2b78a8b9c9276b07c928b21bb1e2d54">operator==</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value</a>&amp; o)<span class="keyword"> const</span></div>
<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160; <span class="keywordflow">return</span> anchor == o.anchor;</div>
<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160; }</div>
<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160; </div>
<div class="line"><a name="l03344"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a646dbb2b1842f44f42ee1e14245b8595"> 3344</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a646dbb2b1842f44f42ee1e14245b8595">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value</a>&amp; o)<span class="keyword"> const</span></div>
<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160; <span class="keywordflow">return</span> anchor != o.anchor;</div>
<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160; }</div>
<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160; </div>
<div class="line"><a name="l03350"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2949ac0d70212738030bfda29c5bcc2"> 3350</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6">string_type</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2949ac0d70212738030bfda29c5bcc2">key</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160; assert(anchor.m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160; </div>
<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160; <span class="keywordflow">switch</span> (anchor.m_object-&gt;type())</div>
<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160; {</div>
<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160; <span class="comment">// use integer array index as key</span></div>
<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160; {</div>
<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160; <span class="keywordflow">if</span> (array_index != array_index_last)</div>
<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160; {</div>
<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a3c45286b0a2f15ea0a756cb87a76cf9b">int_to_string</a>( array_index_str, array_index );</div>
<div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160; array_index_last = array_index;</div>
<div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160; }</div>
<div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160; <span class="keywordflow">return</span> array_index_str;</div>
<div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160; }</div>
<div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160; </div>
<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160; <span class="comment">// use key from the object</span></div>
<div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160; <span class="keywordflow">return</span> anchor.key();</div>
<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160; </div>
<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160; <span class="comment">// use an empty key for all primitive types</span></div>
<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160; <span class="keywordflow">return</span> empty_str;</div>
<div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160; }</div>
<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>&#160; }</div>
<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>&#160; </div>
<div class="line"><a name="l03378"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ab8e33bd01c285a1a80b737a1905ceb97"> 3378</a></span>&#160; <span class="keyword">typename</span> IteratorType::reference <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ab8e33bd01c285a1a80b737a1905ceb97">value</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>&#160; <span class="keywordflow">return</span> anchor.value();</div>
<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160; }</div>
<div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160;};</div>
<div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160; </div>
<div class="line"><a name="l03385"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy.html"> 3385</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> IteratorType&gt; <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy</a></div>
<div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160;{</div>
<div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160; <span class="keyword">typename</span> IteratorType::reference container;</div>
<div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160; </div>
<div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l03393"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy.html#afe257e972e3b4658ef2e355f7389d4a5"> 3393</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html#afe257e972e3b4658ef2e355f7389d4a5">iteration_proxy</a>(<span class="keyword">typename</span> IteratorType::reference cont) noexcept</div>
<div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160; : container(cont) {}</div>
<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>&#160; </div>
<div class="line"><a name="l03397"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy.html#a379f86709d340c4ab1995539b8af623d"> 3397</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value&lt;IteratorType&gt;</a> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html#a379f86709d340c4ab1995539b8af623d">begin</a>() noexcept</div>
<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160; {</div>
<div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value&lt;IteratorType&gt;</a>(container.begin());</div>
<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160; }</div>
<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>&#160; </div>
<div class="line"><a name="l03403"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy.html#a90091f8492d23576edef72c5e8b9d4cf"> 3403</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value&lt;IteratorType&gt;</a> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html#a90091f8492d23576edef72c5e8b9d4cf">end</a>() noexcept</div>
<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160; {</div>
<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value&lt;IteratorType&gt;</a>(container.end());</div>
<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160; }</div>
<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160;};</div>
<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160;<span class="comment">// Structured Bindings Support</span></div>
<div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160;<span class="comment">// For further reference see https://blog.tartanllama.xyz/structured-bindings/</span></div>
<div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160;<span class="comment">// And see https://github.com/nlohmann/json/pull/1391</span></div>
<div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160;<span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> IteratorType, enable_if_t&lt;N == 0, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03412"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6"> 3412</a></span>&#160;<span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value&lt;IteratorType&gt;</a>&amp; i) -&gt; decltype(i.key())</div>
<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160;{</div>
<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160; <span class="keywordflow">return</span> i.key();</div>
<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160;}</div>
<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160;<span class="comment">// Structured Bindings Support</span></div>
<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160;<span class="comment">// For further reference see https://blog.tartanllama.xyz/structured-bindings/</span></div>
<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160;<span class="comment">// And see https://github.com/nlohmann/json/pull/1391</span></div>
<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160;<span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> IteratorType, enable_if_t&lt;N == 1, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160;<span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value&lt;IteratorType&gt;</a>&amp; i) -&gt; decltype(i.value())</div>
<div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160;{</div>
<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>&#160; <span class="keywordflow">return</span> i.value();</div>
<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160;}</div>
<div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160; </div>
<div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160;<span class="comment">// The Addition to the STD Namespace is required to add</span></div>
<div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160;<span class="comment">// Structured Bindings Support to the iteration_proxy_value class</span></div>
<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160;<span class="comment">// For further reference see https://blog.tartanllama.xyz/structured-bindings/</span></div>
<div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160;<span class="comment">// And see https://github.com/nlohmann/json/pull/1391</span></div>
<div class="line"><a name="l03431"></a><span class="lineno"><a class="line" href="namespacestd.html"> 3431</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div>
<div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>&#160;{</div>
<div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
<div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>&#160; <span class="comment">// Fix: https://github.com/nlohmann/json/issues/1401</span></div>
<div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>&#160;<span class="preprocessor"> #pragma clang diagnostic push</span></div>
<div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>&#160;<span class="preprocessor"> #pragma clang diagnostic ignored &quot;-Wmismatched-tags&quot;</span></div>
<div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> IteratorType&gt;</div>
<div class="line"><a name="l03439"></a><span class="lineno"><a class="line" href="classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html"> 3439</a></span>&#160;<span class="keyword">class </span>tuple_size&lt;::<a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value</a>&lt;IteratorType&gt;&gt;</div>
<div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>&#160; : <span class="keyword">public</span> std::integral_constant&lt;std::size_t, 2&gt; {};</div>
<div class="line"><a name="l03441"></a><span class="lineno"> 3441</span>&#160; </div>
<div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>&#160;<span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> IteratorType&gt;</div>
<div class="line"><a name="l03443"></a><span class="lineno"><a class="line" href="classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html"> 3443</a></span>&#160;<span class="keyword">class </span>tuple_element&lt;N, ::<a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value</a>&lt;IteratorType &gt;&gt;</div>
<div class="line"><a name="l03444"></a><span class="lineno"> 3444</span>&#160;{</div>
<div class="line"><a name="l03445"></a><span class="lineno"> 3445</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l03446"></a><span class="lineno"> 3446</span>&#160; <span class="keyword">using</span> <a class="code" href="classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html#ace1dfdb74841c2f58c064a50598188fd">type</a> = decltype(</div>
<div class="line"><a name="l03447"></a><span class="lineno"> 3447</span>&#160; get&lt;N&gt;(std::declval &lt;</div>
<div class="line"><a name="l03448"></a><span class="lineno"><a class="line" href="classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html#ace1dfdb74841c2f58c064a50598188fd"> 3448</a></span>&#160; ::<a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value&lt;IteratorType &gt;</a>&gt; ()));</div>
<div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>&#160;};</div>
<div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
<div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>&#160;<span class="preprocessor"> #pragma clang diagnostic pop</span></div>
<div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>&#160;} <span class="comment">// namespace std</span></div>
<div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>&#160; </div>
<div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/cpp_future.hpp&gt;</span></div>
<div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>&#160; </div>
<div class="line"><a name="l03457"></a><span class="lineno"> 3457</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/type_traits.hpp&gt;</span></div>
<div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>&#160; </div>
<div class="line"><a name="l03459"></a><span class="lineno"> 3459</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/value_t.hpp&gt;</span></div>
<div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>&#160; </div>
<div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>&#160; </div>
<div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>&#160;{</div>
<div class="line"><a name="l03464"></a><span class="lineno"> 3464</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l03465"></a><span class="lineno"> 3465</span>&#160;{</div>
<div class="line"><a name="l03467"></a><span class="lineno"> 3467</span>&#160;<span class="comment">// constructors //</span></div>
<div class="line"><a name="l03469"></a><span class="lineno"> 3469</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l03470"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor.html"> 3470</a></span>&#160;<span class="keyword">template</span>&lt;value_t&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a>;</div>
<div class="line"><a name="l03471"></a><span class="lineno"> 3471</span>&#160; </div>
<div class="line"><a name="l03472"></a><span class="lineno"> 3472</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l03473"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html"> 3473</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">boolean</a>&gt;</div>
<div class="line"><a name="l03474"></a><span class="lineno"> 3474</span>&#160;{</div>
<div class="line"><a name="l03475"></a><span class="lineno"> 3475</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03476"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html#a867122bcf0856c757bd6bcbfb8be74bc"> 3476</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html#a867122bcf0856c757bd6bcbfb8be74bc">construct</a>(BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::boolean_t b) noexcept</div>
<div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>&#160; {</div>
<div class="line"><a name="l03478"></a><span class="lineno"> 3478</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>;</div>
<div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>&#160; j.m_value = b;</div>
<div class="line"><a name="l03480"></a><span class="lineno"> 3480</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>&#160; }</div>
<div class="line"><a name="l03482"></a><span class="lineno"> 3482</span>&#160;};</div>
<div class="line"><a name="l03483"></a><span class="lineno"> 3483</span>&#160; </div>
<div class="line"><a name="l03484"></a><span class="lineno"> 3484</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l03485"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html"> 3485</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">string</a>&gt;</div>
<div class="line"><a name="l03486"></a><span class="lineno"> 3486</span>&#160;{</div>
<div class="line"><a name="l03487"></a><span class="lineno"> 3487</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03488"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#ad88d0b4b7ea01ea20e12cc1b82fe0d92"> 3488</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#ad88d0b4b7ea01ea20e12cc1b82fe0d92">construct</a>(BasicJsonType&amp; j, <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::string_t&amp; s)</div>
<div class="line"><a name="l03489"></a><span class="lineno"> 3489</span>&#160; {</div>
<div class="line"><a name="l03490"></a><span class="lineno"> 3490</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>;</div>
<div class="line"><a name="l03491"></a><span class="lineno"> 3491</span>&#160; j.m_value = s;</div>
<div class="line"><a name="l03492"></a><span class="lineno"> 3492</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03493"></a><span class="lineno"> 3493</span>&#160; }</div>
<div class="line"><a name="l03494"></a><span class="lineno"> 3494</span>&#160; </div>
<div class="line"><a name="l03495"></a><span class="lineno"> 3495</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03496"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a74f56b9ca1d4e8db9751353d76668322"> 3496</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a74f56b9ca1d4e8db9751353d76668322">construct</a>(BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::string_t&amp;&amp; s)</div>
<div class="line"><a name="l03497"></a><span class="lineno"> 3497</span>&#160; {</div>
<div class="line"><a name="l03498"></a><span class="lineno"> 3498</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>;</div>
<div class="line"><a name="l03499"></a><span class="lineno"> 3499</span>&#160; j.m_value = std::move(s);</div>
<div class="line"><a name="l03500"></a><span class="lineno"> 3500</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03501"></a><span class="lineno"> 3501</span>&#160; }</div>
<div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>&#160; </div>
<div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleStringType,</div>
<div class="line"><a name="l03504"></a><span class="lineno"> 3504</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t&lt;not std::is_same&lt;CompatibleStringType, typename BasicJsonType::string_t&gt;::value</a>,</div>
<div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>&#160; <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03506"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a8822d43f0e20c5a28be329f9ca7de6c4"> 3506</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a8822d43f0e20c5a28be329f9ca7de6c4">construct</a>(BasicJsonType&amp; j, <span class="keyword">const</span> CompatibleStringType&amp; str)</div>
<div class="line"><a name="l03507"></a><span class="lineno"> 3507</span>&#160; {</div>
<div class="line"><a name="l03508"></a><span class="lineno"> 3508</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>;</div>
<div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>&#160; j.m_value.string = j.template create&lt;typename BasicJsonType::string_t&gt;(str);</div>
<div class="line"><a name="l03510"></a><span class="lineno"> 3510</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03511"></a><span class="lineno"> 3511</span>&#160; }</div>
<div class="line"><a name="l03512"></a><span class="lineno"> 3512</span>&#160;};</div>
<div class="line"><a name="l03513"></a><span class="lineno"> 3513</span>&#160; </div>
<div class="line"><a name="l03514"></a><span class="lineno"> 3514</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l03515"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html"> 3515</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">number_float</a>&gt;</div>
<div class="line"><a name="l03516"></a><span class="lineno"> 3516</span>&#160;{</div>
<div class="line"><a name="l03517"></a><span class="lineno"> 3517</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03518"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html#a669df5a4d258b588e67f747c6d656cdb"> 3518</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html#a669df5a4d258b588e67f747c6d656cdb">construct</a>(BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::number_float_t val) noexcept</div>
<div class="line"><a name="l03519"></a><span class="lineno"> 3519</span>&#160; {</div>
<div class="line"><a name="l03520"></a><span class="lineno"> 3520</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>;</div>
<div class="line"><a name="l03521"></a><span class="lineno"> 3521</span>&#160; j.m_value = val;</div>
<div class="line"><a name="l03522"></a><span class="lineno"> 3522</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>&#160; }</div>
<div class="line"><a name="l03524"></a><span class="lineno"> 3524</span>&#160;};</div>
<div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>&#160; </div>
<div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l03527"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html"> 3527</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">number_unsigned</a>&gt;</div>
<div class="line"><a name="l03528"></a><span class="lineno"> 3528</span>&#160;{</div>
<div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03530"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html#a17969b14852f43e04353858c87b0f539"> 3530</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html#a17969b14852f43e04353858c87b0f539">construct</a>(BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::number_unsigned_t val) noexcept</div>
<div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>&#160; {</div>
<div class="line"><a name="l03532"></a><span class="lineno"> 3532</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>;</div>
<div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>&#160; j.m_value = val;</div>
<div class="line"><a name="l03534"></a><span class="lineno"> 3534</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>&#160; }</div>
<div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>&#160;};</div>
<div class="line"><a name="l03537"></a><span class="lineno"> 3537</span>&#160; </div>
<div class="line"><a name="l03538"></a><span class="lineno"> 3538</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l03539"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html"> 3539</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">number_integer</a>&gt;</div>
<div class="line"><a name="l03540"></a><span class="lineno"> 3540</span>&#160;{</div>
<div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03542"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html#a7c3949672ddb45095cc2527635feef0b"> 3542</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html#a7c3949672ddb45095cc2527635feef0b">construct</a>(BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::number_integer_t val) noexcept</div>
<div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>&#160; {</div>
<div class="line"><a name="l03544"></a><span class="lineno"> 3544</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>;</div>
<div class="line"><a name="l03545"></a><span class="lineno"> 3545</span>&#160; j.m_value = val;</div>
<div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>&#160; }</div>
<div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>&#160;};</div>
<div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>&#160; </div>
<div class="line"><a name="l03550"></a><span class="lineno"> 3550</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l03551"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html"> 3551</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">array</a>&gt;</div>
<div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>&#160;{</div>
<div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03554"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#abfb2a6eec0bc21e8a7438546aebc55d8"> 3554</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#abfb2a6eec0bc21e8a7438546aebc55d8">construct</a>(BasicJsonType&amp; j, <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::array_t&amp; arr)</div>
<div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>&#160; {</div>
<div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>&#160; j.m_value = arr;</div>
<div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>&#160; }</div>
<div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>&#160; </div>
<div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03562"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a50474d6624957a630a1d398cac1e7bfa"> 3562</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a50474d6624957a630a1d398cac1e7bfa">construct</a>(BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::array_t&amp;&amp; arr)</div>
<div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>&#160; {</div>
<div class="line"><a name="l03564"></a><span class="lineno"> 3564</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>&#160; j.m_value = std::move(arr);</div>
<div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>&#160; }</div>
<div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>&#160; </div>
<div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleArrayType,</div>
<div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t&lt;not std::is_same&lt;CompatibleArrayType, typename BasicJsonType::array_t&gt;::value</a>,</div>
<div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>&#160; <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03572"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a110f50fd5378da876d9a6d6a8d945e37"> 3572</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a110f50fd5378da876d9a6d6a8d945e37">construct</a>(BasicJsonType&amp; j, <span class="keyword">const</span> CompatibleArrayType&amp; arr)</div>
<div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>&#160; {</div>
<div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>&#160; <span class="keyword">using</span> std::begin;</div>
<div class="line"><a name="l03575"></a><span class="lineno"> 3575</span>&#160; <span class="keyword">using</span> std::end;</div>
<div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>&#160; j.m_value.array = j.template create&lt;typename BasicJsonType::array_t&gt;(begin(arr), end(arr));</div>
<div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03579"></a><span class="lineno"> 3579</span>&#160; }</div>
<div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>&#160; </div>
<div class="line"><a name="l03581"></a><span class="lineno"> 3581</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03582"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a4ebb19b1cb84b4cb224a4c5322e16f14"> 3582</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a4ebb19b1cb84b4cb224a4c5322e16f14">construct</a>(BasicJsonType&amp; j, <span class="keyword">const</span> std::vector&lt;bool&gt;&amp; arr)</div>
<div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>&#160; {</div>
<div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>&#160; j.m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l03586"></a><span class="lineno"> 3586</span>&#160; j.m_value.array-&gt;reserve(arr.size());</div>
<div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">bool</span> x : arr)</div>
<div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>&#160; {</div>
<div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>&#160; j.m_value.array-&gt;push_back(x);</div>
<div class="line"><a name="l03590"></a><span class="lineno"> 3590</span>&#160; }</div>
<div class="line"><a name="l03591"></a><span class="lineno"> 3591</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>&#160; }</div>
<div class="line"><a name="l03593"></a><span class="lineno"> 3593</span>&#160; </div>
<div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T,</div>
<div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t&lt;std::is_convertible&lt;T, BasicJsonType&gt;::value</a>, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03596"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a1b9226304e6492141080b4ebf228ddac"> 3596</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a1b9226304e6492141080b4ebf228ddac">construct</a>(BasicJsonType&amp; j, <span class="keyword">const</span> std::valarray&lt;T&gt;&amp; arr)</div>
<div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>&#160; {</div>
<div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>&#160; j.m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>&#160; j.m_value.array-&gt;resize(arr.size());</div>
<div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>&#160; <span class="keywordflow">if</span> (arr.size() &gt; 0)</div>
<div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>&#160; {</div>
<div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>&#160; std::copy(std::begin(arr), std::end(arr), j.m_value.array-&gt;begin());</div>
<div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>&#160; }</div>
<div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>&#160; }</div>
<div class="line"><a name="l03607"></a><span class="lineno"> 3607</span>&#160;};</div>
<div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>&#160; </div>
<div class="line"><a name="l03609"></a><span class="lineno"> 3609</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l03610"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html"> 3610</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a>&lt;<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">object</a>&gt;</div>
<div class="line"><a name="l03611"></a><span class="lineno"> 3611</span>&#160;{</div>
<div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03613"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a3a369c5d49596dd4411e368425f9ac7a"> 3613</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a3a369c5d49596dd4411e368425f9ac7a">construct</a>(BasicJsonType&amp; j, <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::object_t&amp; obj)</div>
<div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>&#160; {</div>
<div class="line"><a name="l03615"></a><span class="lineno"> 3615</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l03616"></a><span class="lineno"> 3616</span>&#160; j.m_value = obj;</div>
<div class="line"><a name="l03617"></a><span class="lineno"> 3617</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03618"></a><span class="lineno"> 3618</span>&#160; }</div>
<div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>&#160; </div>
<div class="line"><a name="l03620"></a><span class="lineno"> 3620</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03621"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a1e044961affbd6417386d6e9f1d545e9"> 3621</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a1e044961affbd6417386d6e9f1d545e9">construct</a>(BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::object_t&amp;&amp; obj)</div>
<div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>&#160; {</div>
<div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l03624"></a><span class="lineno"> 3624</span>&#160; j.m_value = std::move(obj);</div>
<div class="line"><a name="l03625"></a><span class="lineno"> 3625</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03626"></a><span class="lineno"> 3626</span>&#160; }</div>
<div class="line"><a name="l03627"></a><span class="lineno"> 3627</span>&#160; </div>
<div class="line"><a name="l03628"></a><span class="lineno"> 3628</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleObjectType,</div>
<div class="line"><a name="l03629"></a><span class="lineno"> 3629</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t&lt;not std::is_same&lt;CompatibleObjectType, typename BasicJsonType::object_t&gt;::value</a>, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03630"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a91f89abe0ec4dec59099b691682ff927"> 3630</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a91f89abe0ec4dec59099b691682ff927">construct</a>(BasicJsonType&amp; j, <span class="keyword">const</span> CompatibleObjectType&amp; obj)</div>
<div class="line"><a name="l03631"></a><span class="lineno"> 3631</span>&#160; {</div>
<div class="line"><a name="l03632"></a><span class="lineno"> 3632</span>&#160; <span class="keyword">using</span> std::begin;</div>
<div class="line"><a name="l03633"></a><span class="lineno"> 3633</span>&#160; <span class="keyword">using</span> std::end;</div>
<div class="line"><a name="l03634"></a><span class="lineno"> 3634</span>&#160; </div>
<div class="line"><a name="l03635"></a><span class="lineno"> 3635</span>&#160; j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l03636"></a><span class="lineno"> 3636</span>&#160; j.m_value.object = j.template create&lt;typename BasicJsonType::object_t&gt;(begin(obj), end(obj));</div>
<div class="line"><a name="l03637"></a><span class="lineno"> 3637</span>&#160; j.assert_invariant();</div>
<div class="line"><a name="l03638"></a><span class="lineno"> 3638</span>&#160; }</div>
<div class="line"><a name="l03639"></a><span class="lineno"> 3639</span>&#160;};</div>
<div class="line"><a name="l03640"></a><span class="lineno"> 3640</span>&#160; </div>
<div class="line"><a name="l03642"></a><span class="lineno"> 3642</span>&#160;<span class="comment">// to_json //</span></div>
<div class="line"><a name="l03644"></a><span class="lineno"> 3644</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l03645"></a><span class="lineno"> 3645</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T,</div>
<div class="line"><a name="l03646"></a><span class="lineno"> 3646</span>&#160; enable_if_t&lt;std::is_same&lt;T, typename BasicJsonType::boolean_t&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03647"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490"> 3647</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, T b) noexcept</div>
<div class="line"><a name="l03648"></a><span class="lineno"> 3648</span>&#160;{</div>
<div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::boolean&gt;::construct</a>(j, b);</div>
<div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>&#160;}</div>
<div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>&#160; </div>
<div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleString,</div>
<div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>&#160; enable_if_t&lt;std::is_constructible&lt;typename BasicJsonType::string_t, CompatibleString&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03654"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7356ed05cdbbb080cee80e1211e1c6c9"> 3654</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">const</span> CompatibleString&amp; s)</div>
<div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>&#160;{</div>
<div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::string&gt;::construct</a>(j, s);</div>
<div class="line"><a name="l03657"></a><span class="lineno"> 3657</span>&#160;}</div>
<div class="line"><a name="l03658"></a><span class="lineno"> 3658</span>&#160; </div>
<div class="line"><a name="l03659"></a><span class="lineno"> 3659</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03660"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a4aa1ca6b7c61bf19d1f30ea5b669f68e"> 3660</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::string_t&amp;&amp; s)</div>
<div class="line"><a name="l03661"></a><span class="lineno"> 3661</span>&#160;{</div>
<div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::string&gt;::construct</a>(j, std::move(s));</div>
<div class="line"><a name="l03663"></a><span class="lineno"> 3663</span>&#160;}</div>
<div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>&#160; </div>
<div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> FloatType,</div>
<div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>&#160; enable_if_t&lt;std::is_floating_point&lt;FloatType&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03667"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a22bffdc8bc7e43af380ba2050696b230"> 3667</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, FloatType val) noexcept</div>
<div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>&#160;{</div>
<div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::number_float&gt;::construct</a>(j, <span class="keyword">static_cast&lt;</span>typename BasicJsonType::number_float_t<span class="keyword">&gt;</span>(val));</div>
<div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>&#160;}</div>
<div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>&#160; </div>
<div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleNumberUnsignedType,</div>
<div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>&#160; enable_if_t&lt;is_compatible_integer_type&lt;typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03674"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ae5fd66b5517b3b5a6c6b9fd9f29ba8dc"> 3674</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, CompatibleNumberUnsignedType val) noexcept</div>
<div class="line"><a name="l03675"></a><span class="lineno"> 3675</span>&#160;{</div>
<div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::number_unsigned&gt;::construct</a>(j, <span class="keyword">static_cast&lt;</span>typename BasicJsonType::number_unsigned_t<span class="keyword">&gt;</span>(val));</div>
<div class="line"><a name="l03677"></a><span class="lineno"> 3677</span>&#160;}</div>
<div class="line"><a name="l03678"></a><span class="lineno"> 3678</span>&#160; </div>
<div class="line"><a name="l03679"></a><span class="lineno"> 3679</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleNumberIntegerType,</div>
<div class="line"><a name="l03680"></a><span class="lineno"> 3680</span>&#160; enable_if_t&lt;is_compatible_integer_type&lt;typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03681"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a91fe576be579c8c2fdd14610605c6dd2"> 3681</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, CompatibleNumberIntegerType val) noexcept</div>
<div class="line"><a name="l03682"></a><span class="lineno"> 3682</span>&#160;{</div>
<div class="line"><a name="l03683"></a><span class="lineno"> 3683</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::number_integer&gt;::construct</a>(j, <span class="keyword">static_cast&lt;</span>typename BasicJsonType::number_integer_t<span class="keyword">&gt;</span>(val));</div>
<div class="line"><a name="l03684"></a><span class="lineno"> 3684</span>&#160;}</div>
<div class="line"><a name="l03685"></a><span class="lineno"> 3685</span>&#160; </div>
<div class="line"><a name="l03686"></a><span class="lineno"> 3686</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> EnumType,</div>
<div class="line"><a name="l03687"></a><span class="lineno"> 3687</span>&#160; enable_if_t&lt;std::is_enum&lt;EnumType&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03688"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a0c8b159dba71981d6c555d284cf6e2bf"> 3688</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, EnumType e) noexcept</div>
<div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>&#160;{</div>
<div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>&#160; <span class="keyword">using</span> underlying_type = <span class="keyword">typename</span> std::underlying_type&lt;EnumType&gt;::type;</div>
<div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::number_integer&gt;::construct</a>(j, <span class="keyword">static_cast&lt;</span>underlying_type<span class="keyword">&gt;</span>(e));</div>
<div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>&#160;}</div>
<div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>&#160; </div>
<div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03695"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aeca6fb5fede5ed1e12a4420d98a5692b"> 3695</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">const</span> std::vector&lt;bool&gt;&amp; e)</div>
<div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>&#160;{</div>
<div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::array&gt;::construct</a>(j, e);</div>
<div class="line"><a name="l03698"></a><span class="lineno"> 3698</span>&#160;}</div>
<div class="line"><a name="l03699"></a><span class="lineno"> 3699</span>&#160; </div>
<div class="line"><a name="l03700"></a><span class="lineno"> 3700</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleArrayType,</div>
<div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;is_compatible_array_type&lt;BasicJsonType,</div>
<div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>&#160; CompatibleArrayType&gt;::value and</div>
<div class="line"><a name="l03703"></a><span class="lineno"> 3703</span>&#160; not is_compatible_object_type&lt;</div>
<div class="line"><a name="l03704"></a><span class="lineno"> 3704</span>&#160; BasicJsonType, CompatibleArrayType&gt;::value and</div>
<div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>&#160; not is_compatible_string_type&lt;BasicJsonType, CompatibleArrayType&gt;::value and</div>
<div class="line"><a name="l03706"></a><span class="lineno"> 3706</span>&#160; not is_basic_json&lt;CompatibleArrayType&gt;::value,</div>
<div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>&#160; <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03708"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a3afebc132c5ff83f9cd160e52030fdfd"> 3708</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">const</span> CompatibleArrayType&amp; arr)</div>
<div class="line"><a name="l03709"></a><span class="lineno"> 3709</span>&#160;{</div>
<div class="line"><a name="l03710"></a><span class="lineno"> 3710</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::array&gt;::construct</a>(j, arr);</div>
<div class="line"><a name="l03711"></a><span class="lineno"> 3711</span>&#160;}</div>
<div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>&#160; </div>
<div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T,</div>
<div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>&#160; enable_if_t&lt;std::is_convertible&lt;T, BasicJsonType&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03715"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7f7c7b9760161b774cdc0b4b838fae64"> 3715</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">const</span> std::valarray&lt;T&gt;&amp; arr)</div>
<div class="line"><a name="l03716"></a><span class="lineno"> 3716</span>&#160;{</div>
<div class="line"><a name="l03717"></a><span class="lineno"> 3717</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::array&gt;::construct</a>(j, std::move(arr));</div>
<div class="line"><a name="l03718"></a><span class="lineno"> 3718</span>&#160;}</div>
<div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>&#160; </div>
<div class="line"><a name="l03720"></a><span class="lineno"> 3720</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03721"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aa0fd1b5788e9ba37e31da43dda738cb5"> 3721</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::array_t&amp;&amp; arr)</div>
<div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>&#160;{</div>
<div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::array&gt;::construct</a>(j, std::move(arr));</div>
<div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>&#160;}</div>
<div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>&#160; </div>
<div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleObjectType,</div>
<div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>&#160; enable_if_t&lt;is_compatible_object_type&lt;BasicJsonType, CompatibleObjectType&gt;::value and not is_basic_json&lt;CompatibleObjectType&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03728"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a24c9c12f3839c94e09532f08de85e949"> 3728</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">const</span> CompatibleObjectType&amp; obj)</div>
<div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>&#160;{</div>
<div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::object&gt;::construct</a>(j, obj);</div>
<div class="line"><a name="l03731"></a><span class="lineno"> 3731</span>&#160;}</div>
<div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>&#160; </div>
<div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l03734"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ac9f7a5542851c61d93740148eaec509f"> 3734</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">typename</span> BasicJsonType::object_t&amp;&amp; obj)</div>
<div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>&#160;{</div>
<div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::object&gt;::construct</a>(j, std::move(obj));</div>
<div class="line"><a name="l03737"></a><span class="lineno"> 3737</span>&#160;}</div>
<div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>&#160; </div>
<div class="line"><a name="l03739"></a><span class="lineno"> 3739</span>&#160;<span class="keyword">template</span> &lt;</div>
<div class="line"><a name="l03740"></a><span class="lineno"> 3740</span>&#160; <span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, std::size_t N,</div>
<div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;not std::is_constructible&lt;<span class="keyword">typename</span> BasicJsonType::string_t,</div>
<div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>&#160; <span class="keyword">const</span> T(&amp;)[N]&gt;::value,</div>
<div class="line"><a name="l03743"></a><span class="lineno"> 3743</span>&#160; <span class="keywordtype">int</span>&gt; = 0 &gt;</div>
<div class="line"><a name="l03744"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a20ea5175c8999fc8b673e46b892f71f6"> 3744</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">const</span> T(&amp;arr)[N])</div>
<div class="line"><a name="l03745"></a><span class="lineno"> 3745</span>&#160;{</div>
<div class="line"><a name="l03746"></a><span class="lineno"> 3746</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor&lt;value_t::array&gt;::construct</a>(j, arr);</div>
<div class="line"><a name="l03747"></a><span class="lineno"> 3747</span>&#160;}</div>
<div class="line"><a name="l03748"></a><span class="lineno"> 3748</span>&#160; </div>
<div class="line"><a name="l03749"></a><span class="lineno"> 3749</span>&#160;template &lt; typename BasicJsonType, typename T1, typename T2, enable_if_t &lt; std::is_constructible&lt;BasicJsonType, T1&gt;::value&amp;&amp; std::is_constructible&lt;BasicJsonType, T2&gt;::value, <span class="keywordtype">int</span> &gt; = 0 &gt;</div>
<div class="line"><a name="l03750"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ab64eeb55b44db44eb8e9070229eb97df"> 3750</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">const</span> std::pair&lt;T1, T2&gt;&amp; p)</div>
<div class="line"><a name="l03751"></a><span class="lineno"> 3751</span>&#160;{</div>
<div class="line"><a name="l03752"></a><span class="lineno"> 3752</span>&#160; j = { p.first, p.second };</div>
<div class="line"><a name="l03753"></a><span class="lineno"> 3753</span>&#160;}</div>
<div class="line"><a name="l03754"></a><span class="lineno"> 3754</span>&#160; </div>
<div class="line"><a name="l03755"></a><span class="lineno"> 3755</span>&#160;<span class="comment">// for https://github.com/nlohmann/json/pull/1134</span></div>
<div class="line"><a name="l03756"></a><span class="lineno"> 3756</span>&#160;<span class="keyword">template</span> &lt; <span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T,</div>
<div class="line"><a name="l03757"></a><span class="lineno"> 3757</span>&#160; enable_if_t&lt;std::is_same&lt;T, iteration_proxy_value&lt;typename BasicJsonType::iterator&gt;&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l03758"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec"> 3758</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">const</span> T&amp; b)</div>
<div class="line"><a name="l03759"></a><span class="lineno"> 3759</span>&#160;{</div>
<div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>&#160; j = { {b.key(), b.value()} };</div>
<div class="line"><a name="l03761"></a><span class="lineno"> 3761</span>&#160;}</div>
<div class="line"><a name="l03762"></a><span class="lineno"> 3762</span>&#160; </div>
<div class="line"><a name="l03763"></a><span class="lineno"> 3763</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> Tuple, std::size_t... Idx&gt;</div>
<div class="line"><a name="l03764"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a510dfa15b01e9a8afe31600a27b28199"> 3764</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a510dfa15b01e9a8afe31600a27b28199">to_json_tuple_impl</a>(BasicJsonType&amp; j, <span class="keyword">const</span> Tuple&amp; t, <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence&lt;Idx...&gt;</a> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l03765"></a><span class="lineno"> 3765</span>&#160;{</div>
<div class="line"><a name="l03766"></a><span class="lineno"> 3766</span>&#160; j = { std::get&lt;Idx&gt;(t)... };</div>
<div class="line"><a name="l03767"></a><span class="lineno"> 3767</span>&#160;}</div>
<div class="line"><a name="l03768"></a><span class="lineno"> 3768</span>&#160; </div>
<div class="line"><a name="l03769"></a><span class="lineno"> 3769</span>&#160;template&lt;typename BasicJsonType, typename T, enable_if_t&lt;is_constructible_tuple&lt;BasicJsonType, T&gt;::value, <span class="keywordtype">int</span> &gt; = 0&gt;</div>
<div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType&amp; j, <span class="keyword">const</span> T&amp; t)</div>
<div class="line"><a name="l03771"></a><span class="lineno"> 3771</span>&#160;{</div>
<div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a510dfa15b01e9a8afe31600a27b28199">to_json_tuple_impl</a>(j, t, make_index_sequence&lt;std::tuple_size&lt;T&gt;::value&gt; {});</div>
<div class="line"><a name="l03773"></a><span class="lineno"> 3773</span>&#160;}</div>
<div class="line"><a name="l03774"></a><span class="lineno"> 3774</span>&#160; </div>
<div class="line"><a name="l03775"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1to__json__fn.html"> 3775</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1to__json__fn.html">to_json_fn</a></div>
<div class="line"><a name="l03776"></a><span class="lineno"> 3776</span>&#160;{</div>
<div class="line"><a name="l03777"></a><span class="lineno"> 3777</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l03778"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1to__json__fn.html#aecfb5114c8a737fc89d98589482795b8"> 3778</a></span>&#160; <span class="keyword">auto</span> <a class="code" href="structnlohmann_1_1detail_1_1to__json__fn.html#aecfb5114c8a737fc89d98589482795b8">operator()</a>(BasicJsonType&amp; j, T&amp;&amp; val) <span class="keyword">const</span> noexcept(noexcept(<a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(j, std::forward&lt;T&gt;(val))))</div>
<div class="line"><a name="l03779"></a><span class="lineno"> 3779</span>&#160; -&gt; decltype(<a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(j, std::forward&lt;T&gt;(val)), <span class="keywordtype">void</span>())</div>
<div class="line"><a name="l03780"></a><span class="lineno"> 3780</span>&#160; {</div>
<div class="line"><a name="l03781"></a><span class="lineno"> 3781</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(j, std::forward&lt;T&gt;(val));</div>
<div class="line"><a name="l03782"></a><span class="lineno"> 3782</span>&#160; }</div>
<div class="line"><a name="l03783"></a><span class="lineno"> 3783</span>&#160;};</div>
<div class="line"><a name="l03784"></a><span class="lineno"> 3784</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l03785"></a><span class="lineno"> 3785</span>&#160; </div>
<div class="line"><a name="l03787"></a><span class="lineno"> 3787</span>&#160;<span class="keyword">namespace</span></div>
<div class="line"><a name="l03788"></a><span class="lineno"> 3788</span>&#160;{</div>
<div class="line"><a name="l03789"></a><span class="lineno"> 3789</span>&#160;constexpr <span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">to_json</a> = <a class="code" href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e">detail::static_const&lt;detail::to_json_fn&gt;::value</a>;</div>
<div class="line"><a name="l03790"></a><span class="lineno"> 3790</span>&#160;} <span class="comment">// namespace</span></div>
<div class="line"><a name="l03791"></a><span class="lineno"> 3791</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l03792"></a><span class="lineno"> 3792</span>&#160; </div>
<div class="line"><a name="l03793"></a><span class="lineno"> 3793</span>&#160; </div>
<div class="line"><a name="l03794"></a><span class="lineno"> 3794</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l03795"></a><span class="lineno"> 3795</span>&#160;{</div>
<div class="line"><a name="l03796"></a><span class="lineno"> 3796</span>&#160; </div>
<div class="line"><a name="l03797"></a><span class="lineno"> 3797</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt;</div>
<div class="line"><a name="l03798"></a><span class="lineno"> 3798</span>&#160;<span class="keyword">struct </span>adl_serializer</div>
<div class="line"><a name="l03799"></a><span class="lineno"> 3799</span>&#160;{</div>
<div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ValueType&gt;</div>
<div class="line"><a name="l03810"></a><span class="lineno"><a class="line" href="structnlohmann_1_1adl__serializer.html#a2c544585b8b1828a0f1eecd831d0496e"> 3810</a></span>&#160; <span class="keyword">static</span> <span class="keyword">auto</span> <a class="code" href="structnlohmann_1_1adl__serializer.html#a2c544585b8b1828a0f1eecd831d0496e">from_json</a>(BasicJsonType&amp;&amp; j, ValueType&amp; val) noexcept(</div>
<div class="line"><a name="l03811"></a><span class="lineno"> 3811</span>&#160; noexcept(::<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">nlohmann::from_json</a>(std::forward&lt;BasicJsonType&gt;(j), val)))</div>
<div class="line"><a name="l03812"></a><span class="lineno"> 3812</span>&#160; -&gt; decltype(::<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">nlohmann::from_json</a>(std::forward&lt;BasicJsonType&gt;(j), val), <span class="keywordtype">void</span>())</div>
<div class="line"><a name="l03813"></a><span class="lineno"> 3813</span>&#160; {</div>
<div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">::nlohmann::from_json</a>(std::forward&lt;BasicJsonType&gt;(j), val);</div>
<div class="line"><a name="l03815"></a><span class="lineno"> 3815</span>&#160; }</div>
<div class="line"><a name="l03816"></a><span class="lineno"> 3816</span>&#160; </div>
<div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ValueType&gt;</div>
<div class="line"><a name="l03827"></a><span class="lineno"><a class="line" href="structnlohmann_1_1adl__serializer.html#a01b867bd5dce5249d4f7433b8f27def6"> 3827</a></span>&#160; <span class="keyword">static</span> <span class="keyword">auto</span> <a class="code" href="structnlohmann_1_1adl__serializer.html#a01b867bd5dce5249d4f7433b8f27def6">to_json</a>(BasicJsonType&amp; j, ValueType&amp;&amp; val) noexcept(</div>
<div class="line"><a name="l03828"></a><span class="lineno"> 3828</span>&#160; noexcept(::<a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">nlohmann::to_json</a>(j, std::forward&lt;ValueType&gt;(val))))</div>
<div class="line"><a name="l03829"></a><span class="lineno"> 3829</span>&#160; -&gt; decltype(::<a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">nlohmann::to_json</a>(j, std::forward&lt;ValueType&gt;(val)), <span class="keywordtype">void</span>())</div>
<div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>&#160; {</div>
<div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">::nlohmann::to_json</a>(j, std::forward&lt;ValueType&gt;(val));</div>
<div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>&#160; }</div>
<div class="line"><a name="l03833"></a><span class="lineno"> 3833</span>&#160;};</div>
<div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>&#160; </div>
<div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>&#160; </div>
<div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/conversions/from_json.hpp&gt;</span></div>
<div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>&#160; </div>
<div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/conversions/to_json.hpp&gt;</span></div>
<div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>&#160; </div>
<div class="line"><a name="l03841"></a><span class="lineno"> 3841</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/exceptions.hpp&gt;</span></div>
<div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>&#160; </div>
<div class="line"><a name="l03843"></a><span class="lineno"> 3843</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/binary_reader.hpp&gt;</span></div>
<div class="line"><a name="l03844"></a><span class="lineno"> 3844</span>&#160; </div>
<div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>&#160; </div>
<div class="line"><a name="l03846"></a><span class="lineno"> 3846</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span> <span class="comment">// generate_n</span></div>
<div class="line"><a name="l03847"></a><span class="lineno"> 3847</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span> <span class="comment">// array</span></div>
<div class="line"><a name="l03848"></a><span class="lineno"> 3848</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span> <span class="comment">// assert</span></div>
<div class="line"><a name="l03849"></a><span class="lineno"> 3849</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span> <span class="comment">// ldexp</span></div>
<div class="line"><a name="l03850"></a><span class="lineno"> 3850</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// size_t</span></div>
<div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span> <span class="comment">// uint8_t, uint16_t, uint32_t, uint64_t</span></div>
<div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span> <span class="comment">// snprintf</span></div>
<div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span> <span class="comment">// memcpy</span></div>
<div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// back_inserter</span></div>
<div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span> <span class="comment">// numeric_limits</span></div>
<div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// char_traits, string</span></div>
<div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// make_pair, move</span></div>
<div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>&#160; </div>
<div class="line"><a name="l03859"></a><span class="lineno"> 3859</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/exceptions.hpp&gt;</span></div>
<div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>&#160; </div>
<div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/input_adapters.hpp&gt;</span></div>
<div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>&#160; </div>
<div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>&#160; </div>
<div class="line"><a name="l03864"></a><span class="lineno"> 3864</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span> <span class="comment">// array</span></div>
<div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span> <span class="comment">// assert</span></div>
<div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// size_t</span></div>
<div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span> <span class="comment">//FILE *</span></div>
<div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span> <span class="comment">// strlen</span></div>
<div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>&#160;<span class="preprocessor">#include &lt;istream&gt;</span> <span class="comment">// istream</span></div>
<div class="line"><a name="l03870"></a><span class="lineno"> 3870</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// begin, end, iterator_traits, random_access_iterator_tag, distance, next</span></div>
<div class="line"><a name="l03871"></a><span class="lineno"> 3871</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span> <span class="comment">// shared_ptr, make_shared, addressof</span></div>
<div class="line"><a name="l03872"></a><span class="lineno"> 3872</span>&#160;<span class="preprocessor">#include &lt;numeric&gt;</span> <span class="comment">// accumulate</span></div>
<div class="line"><a name="l03873"></a><span class="lineno"> 3873</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string, char_traits</span></div>
<div class="line"><a name="l03874"></a><span class="lineno"> 3874</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span> <span class="comment">// enable_if, is_base_of, is_pointer, is_integral, remove_pointer</span></div>
<div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// pair, declval</span></div>
<div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>&#160; </div>
<div class="line"><a name="l03877"></a><span class="lineno"> 3877</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/iterator_traits.hpp&gt;</span></div>
<div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>&#160; </div>
<div class="line"><a name="l03879"></a><span class="lineno"> 3879</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>&#160; </div>
<div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>&#160; </div>
<div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>&#160;{</div>
<div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l03885"></a><span class="lineno"> 3885</span>&#160;{</div>
<div class="line"><a name="l03887"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40"> 3887</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> { <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a466deec76ecdf5fca6d38571f6324d54">json</a>, <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">cbor</a>, <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">msgpack</a>, <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">ubjson</a>, <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">bson</a> };</div>
<div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>&#160; </div>
<div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>&#160;<span class="comment">// input adapters //</span></div>
<div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l03904"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html"> 3904</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">input_adapter_protocol</a></div>
<div class="line"><a name="l03905"></a><span class="lineno"> 3905</span>&#160;{</div>
<div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>&#160; <span class="keyword">virtual</span> std::char_traits&lt;char&gt;::int_type <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html#aac10a6a4048a8ce8e2ed50277692a3ca">get_character</a>() = 0;</div>
<div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>&#160; <span class="keyword">virtual</span> <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html#a92dac74def4ac5adacd0684088bd4082">~input_adapter_protocol</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>&#160;};</div>
<div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>&#160; </div>
<div class="line"><a name="l03912"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2"> 3912</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">input_adapter_t</a> = std::shared_ptr&lt;input_adapter_protocol&gt;;</div>
<div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>&#160; </div>
<div class="line"><a name="l03918"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1file__input__adapter.html"> 3918</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">input_adapter_protocol</a></div>
<div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>&#160;{</div>
<div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l03922"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1file__input__adapter.html#aeade050f2793280503be93feff2ece5b"> 3922</a></span>&#160; explicit <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>(<a class="code" href="namespacestd.html">std</a>::FILE* f) noexcept</div>
<div class="line"><a name="l03923"></a><span class="lineno"> 3923</span>&#160; : m_file(f)</div>
<div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>&#160; {}</div>
<div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>&#160; </div>
<div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>&#160; <span class="comment">// make class move-only</span></div>
<div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#aeade050f2793280503be93feff2ece5b">file_input_adapter</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#aeade050f2793280503be93feff2ece5b">file_input_adapter</a>(<a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#ad59bbc7e3f23dd74475c5cb818784e42">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#ad59bbc7e3f23dd74475c5cb818784e42">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#af96552e4560be08b201e62a36e6b6189">~file_input_adapter</a>() <span class="keyword">override</span> = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>&#160; </div>
<div class="line"><a name="l03933"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1file__input__adapter.html#a0d4ff48617c8f63c30babdfd09482329"> 3933</a></span>&#160; std::char_traits&lt;char&gt;::int_type <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#a0d4ff48617c8f63c30babdfd09482329">get_character</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>&#160; <span class="keywordflow">return</span> std::fgetc(m_file);</div>
<div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>&#160; }</div>
<div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>&#160; </div>
<div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>&#160; std::FILE* m_file;</div>
<div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>&#160;};</div>
<div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>&#160; </div>
<div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>&#160; </div>
<div class="line"><a name="l03953"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__stream__adapter.html"> 3953</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">input_adapter_protocol</a></div>
<div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>&#160;{</div>
<div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l03956"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#a2d71eb469267abd864f765481d1e823f"> 3956</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#a2d71eb469267abd864f765481d1e823f">~input_stream_adapter</a>()<span class="keyword"> override</span></div>
<div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>&#160; <span class="comment">// clear stream flags; we use underlying streambuf I/O, do not</span></div>
<div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>&#160; <span class="comment">// maintain ifstream flags, except eof</span></div>
<div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>&#160; is.clear(is.rdstate() &amp; std::ios::eofbit);</div>
<div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>&#160; }</div>
<div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>&#160; </div>
<div class="line"><a name="l03963"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#af487152e4606d013eb4ec6a90eaf82ea"> 3963</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#af487152e4606d013eb4ec6a90eaf82ea">input_stream_adapter</a>(std::istream&amp; i)</div>
<div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>&#160; : is(i), sb(*i.rdbuf())</div>
<div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>&#160; {}</div>
<div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>&#160; </div>
<div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>&#160; <span class="comment">// delete because of pointer members</span></div>
<div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#af487152e4606d013eb4ec6a90eaf82ea">input_stream_adapter</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#aeac5048221929b8f7558d1698dd0fb3a">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#af487152e4606d013eb4ec6a90eaf82ea">input_stream_adapter</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#aeac5048221929b8f7558d1698dd0fb3a">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>&#160; </div>
<div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>&#160; <span class="comment">// std::istream/std::streambuf use std::char_traits&lt;char&gt;::to_int_type, to</span></div>
<div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>&#160; <span class="comment">// ensure that std::char_traits&lt;char&gt;::eof() and the character 0xFF do not</span></div>
<div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>&#160; <span class="comment">// end up as the same value, eg. 0xFFFFFFFF.</span></div>
<div class="line"><a name="l03976"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#ae0760af923583de6354725e901d1869d"> 3976</a></span>&#160; std::char_traits&lt;char&gt;::int_type <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#ae0760af923583de6354725e901d1869d">get_character</a>()<span class="keyword"> override</span></div>
<div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>&#160; <span class="keyword">auto</span> res = sb.sbumpc();</div>
<div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>&#160; <span class="comment">// set eof manually, as we don&#39;t use the istream interface.</span></div>
<div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>&#160; <span class="keywordflow">if</span> (res == EOF)</div>
<div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>&#160; {</div>
<div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>&#160; is.clear(is.rdstate() | std::ios::eofbit);</div>
<div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>&#160; }</div>
<div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>&#160; }</div>
<div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>&#160; </div>
<div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>&#160; std::istream&amp; is;</div>
<div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>&#160; std::streambuf&amp; sb;</div>
<div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>&#160;};</div>
<div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>&#160; </div>
<div class="line"><a name="l03994"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html"> 3994</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">input_adapter_protocol</a></div>
<div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>&#160;{</div>
<div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l03997"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ad9b912fabdcb53de255e8c444d625ac3"> 3997</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ad9b912fabdcb53de255e8c444d625ac3">input_buffer_adapter</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* b, <span class="keyword">const</span> std::size_t l) noexcept</div>
<div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>&#160; : cursor(b), limit(b == <span class="keyword">nullptr</span> ? <span class="keyword">nullptr</span> : (b + l))</div>
<div class="line"><a name="l03999"></a><span class="lineno"> 3999</span>&#160; {}</div>
<div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>&#160; </div>
<div class="line"><a name="l04001"></a><span class="lineno"> 4001</span>&#160; <span class="comment">// delete because of pointer members</span></div>
<div class="line"><a name="l04002"></a><span class="lineno"> 4002</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ad9b912fabdcb53de255e8c444d625ac3">input_buffer_adapter</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l04003"></a><span class="lineno"> 4003</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#a0871125057d993684ba8e45fb2b8a76b">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ad9b912fabdcb53de255e8c444d625ac3">input_buffer_adapter</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l04005"></a><span class="lineno"> 4005</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#a0871125057d993684ba8e45fb2b8a76b">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l04006"></a><span class="lineno"> 4006</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ac242b822b2f6772e5fc682ddb80cb066">~input_buffer_adapter</a>() <span class="keyword">override</span> = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l04007"></a><span class="lineno"> 4007</span>&#160; </div>
<div class="line"><a name="l04008"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ae9e195b04f3551fafb0925aafba00124"> 4008</a></span>&#160; std::char_traits&lt;char&gt;::int_type <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ae9e195b04f3551fafb0925aafba00124">get_character</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(cursor &lt; limit))</div>
<div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>&#160; {</div>
<div class="line"><a name="l04012"></a><span class="lineno"> 4012</span>&#160; assert(cursor != <span class="keyword">nullptr</span> and limit != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l04013"></a><span class="lineno"> 4013</span>&#160; <span class="keywordflow">return</span> std::char_traits&lt;char&gt;::to_int_type(*(cursor++));</div>
<div class="line"><a name="l04014"></a><span class="lineno"> 4014</span>&#160; }</div>
<div class="line"><a name="l04015"></a><span class="lineno"> 4015</span>&#160; </div>
<div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>&#160; <span class="keywordflow">return</span> std::char_traits&lt;char&gt;::eof();</div>
<div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>&#160; }</div>
<div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>&#160; </div>
<div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l04021"></a><span class="lineno"> 4021</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* cursor;</div>
<div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> limit;</div>
<div class="line"><a name="l04024"></a><span class="lineno"> 4024</span>&#160;};</div>
<div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>&#160; </div>
<div class="line"><a name="l04026"></a><span class="lineno"> 4026</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> W<span class="keywordtype">id</span>eStringType, <span class="keywordtype">size_t</span> T&gt;</div>
<div class="line"><a name="l04027"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html"> 4027</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html">wide_string_input_helper</a></div>
<div class="line"><a name="l04028"></a><span class="lineno"> 4028</span>&#160;{</div>
<div class="line"><a name="l04029"></a><span class="lineno"> 4029</span>&#160; <span class="comment">// UTF-32</span></div>
<div class="line"><a name="l04030"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html#ae82d79118fa319a97e4a40568186a922"> 4030</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html#ae82d79118fa319a97e4a40568186a922">fill_buffer</a>(<span class="keyword">const</span> WideStringType&amp; str,</div>
<div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>&#160; <span class="keywordtype">size_t</span>&amp; current_wchar,</div>
<div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>&#160; std::array&lt;std::char_traits&lt;char&gt;::int_type, 4&gt;&amp; utf8_bytes,</div>
<div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>&#160; <span class="keywordtype">size_t</span>&amp; utf8_bytes_index,</div>
<div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>&#160; <span class="keywordtype">size_t</span>&amp; utf8_bytes_filled)</div>
<div class="line"><a name="l04035"></a><span class="lineno"> 4035</span>&#160; {</div>
<div class="line"><a name="l04036"></a><span class="lineno"> 4036</span>&#160; utf8_bytes_index = 0;</div>
<div class="line"><a name="l04037"></a><span class="lineno"> 4037</span>&#160; </div>
<div class="line"><a name="l04038"></a><span class="lineno"> 4038</span>&#160; <span class="keywordflow">if</span> (current_wchar == str.size())</div>
<div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>&#160; {</div>
<div class="line"><a name="l04040"></a><span class="lineno"> 4040</span>&#160; utf8_bytes[0] = std::char_traits&lt;char&gt;::eof();</div>
<div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>&#160; utf8_bytes_filled = 1;</div>
<div class="line"><a name="l04042"></a><span class="lineno"> 4042</span>&#160; }</div>
<div class="line"><a name="l04043"></a><span class="lineno"> 4043</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>&#160; {</div>
<div class="line"><a name="l04045"></a><span class="lineno"> 4045</span>&#160; <span class="comment">// get the current character</span></div>
<div class="line"><a name="l04046"></a><span class="lineno"> 4046</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wc = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(str[current_wchar++]);</div>
<div class="line"><a name="l04047"></a><span class="lineno"> 4047</span>&#160; </div>
<div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>&#160; <span class="comment">// UTF-32 to UTF-8 encoding</span></div>
<div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>&#160; <span class="keywordflow">if</span> (wc &lt; 0x80)</div>
<div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>&#160; {</div>
<div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>&#160; utf8_bytes[0] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(wc);</div>
<div class="line"><a name="l04052"></a><span class="lineno"> 4052</span>&#160; utf8_bytes_filled = 1;</div>
<div class="line"><a name="l04053"></a><span class="lineno"> 4053</span>&#160; }</div>
<div class="line"><a name="l04054"></a><span class="lineno"> 4054</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wc &lt;= 0x7FF)</div>
<div class="line"><a name="l04055"></a><span class="lineno"> 4055</span>&#160; {</div>
<div class="line"><a name="l04056"></a><span class="lineno"> 4056</span>&#160; utf8_bytes[0] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0xC0u | ((wc &gt;&gt; 6u) &amp; 0x1Fu));</div>
<div class="line"><a name="l04057"></a><span class="lineno"> 4057</span>&#160; utf8_bytes[1] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | (wc &amp; 0x3Fu));</div>
<div class="line"><a name="l04058"></a><span class="lineno"> 4058</span>&#160; utf8_bytes_filled = 2;</div>
<div class="line"><a name="l04059"></a><span class="lineno"> 4059</span>&#160; }</div>
<div class="line"><a name="l04060"></a><span class="lineno"> 4060</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wc &lt;= 0xFFFF)</div>
<div class="line"><a name="l04061"></a><span class="lineno"> 4061</span>&#160; {</div>
<div class="line"><a name="l04062"></a><span class="lineno"> 4062</span>&#160; utf8_bytes[0] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0xE0u | ((wc &gt;&gt; 12u) &amp; 0x0Fu));</div>
<div class="line"><a name="l04063"></a><span class="lineno"> 4063</span>&#160; utf8_bytes[1] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | ((wc &gt;&gt; 6u) &amp; 0x3Fu));</div>
<div class="line"><a name="l04064"></a><span class="lineno"> 4064</span>&#160; utf8_bytes[2] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | (wc &amp; 0x3Fu));</div>
<div class="line"><a name="l04065"></a><span class="lineno"> 4065</span>&#160; utf8_bytes_filled = 3;</div>
<div class="line"><a name="l04066"></a><span class="lineno"> 4066</span>&#160; }</div>
<div class="line"><a name="l04067"></a><span class="lineno"> 4067</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wc &lt;= 0x10FFFF)</div>
<div class="line"><a name="l04068"></a><span class="lineno"> 4068</span>&#160; {</div>
<div class="line"><a name="l04069"></a><span class="lineno"> 4069</span>&#160; utf8_bytes[0] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0xF0u | ((wc &gt;&gt; 18u) &amp; 0x07u));</div>
<div class="line"><a name="l04070"></a><span class="lineno"> 4070</span>&#160; utf8_bytes[1] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | ((wc &gt;&gt; 12u) &amp; 0x3Fu));</div>
<div class="line"><a name="l04071"></a><span class="lineno"> 4071</span>&#160; utf8_bytes[2] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | ((wc &gt;&gt; 6u) &amp; 0x3Fu));</div>
<div class="line"><a name="l04072"></a><span class="lineno"> 4072</span>&#160; utf8_bytes[3] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | (wc &amp; 0x3Fu));</div>
<div class="line"><a name="l04073"></a><span class="lineno"> 4073</span>&#160; utf8_bytes_filled = 4;</div>
<div class="line"><a name="l04074"></a><span class="lineno"> 4074</span>&#160; }</div>
<div class="line"><a name="l04075"></a><span class="lineno"> 4075</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l04076"></a><span class="lineno"> 4076</span>&#160; {</div>
<div class="line"><a name="l04077"></a><span class="lineno"> 4077</span>&#160; <span class="comment">// unknown character</span></div>
<div class="line"><a name="l04078"></a><span class="lineno"> 4078</span>&#160; utf8_bytes[0] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(wc);</div>
<div class="line"><a name="l04079"></a><span class="lineno"> 4079</span>&#160; utf8_bytes_filled = 1;</div>
<div class="line"><a name="l04080"></a><span class="lineno"> 4080</span>&#160; }</div>
<div class="line"><a name="l04081"></a><span class="lineno"> 4081</span>&#160; }</div>
<div class="line"><a name="l04082"></a><span class="lineno"> 4082</span>&#160; }</div>
<div class="line"><a name="l04083"></a><span class="lineno"> 4083</span>&#160;};</div>
<div class="line"><a name="l04084"></a><span class="lineno"> 4084</span>&#160; </div>
<div class="line"><a name="l04085"></a><span class="lineno"> 4085</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> W<span class="keywordtype">id</span>eStringType&gt;</div>
<div class="line"><a name="l04086"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html"> 4086</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html">wide_string_input_helper</a>&lt;WideStringType, 2&gt;</div>
<div class="line"><a name="l04087"></a><span class="lineno"> 4087</span>&#160;{</div>
<div class="line"><a name="l04088"></a><span class="lineno"> 4088</span>&#160; <span class="comment">// UTF-16</span></div>
<div class="line"><a name="l04089"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html#a7ede7749f186f1a6a46c08abb607fd5c"> 4089</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html#a7ede7749f186f1a6a46c08abb607fd5c">fill_buffer</a>(<span class="keyword">const</span> WideStringType&amp; str,</div>
<div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>&#160; <span class="keywordtype">size_t</span>&amp; current_wchar,</div>
<div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>&#160; std::array&lt;std::char_traits&lt;char&gt;::int_type, 4&gt;&amp; utf8_bytes,</div>
<div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>&#160; <span class="keywordtype">size_t</span>&amp; utf8_bytes_index,</div>
<div class="line"><a name="l04093"></a><span class="lineno"> 4093</span>&#160; <span class="keywordtype">size_t</span>&amp; utf8_bytes_filled)</div>
<div class="line"><a name="l04094"></a><span class="lineno"> 4094</span>&#160; {</div>
<div class="line"><a name="l04095"></a><span class="lineno"> 4095</span>&#160; utf8_bytes_index = 0;</div>
<div class="line"><a name="l04096"></a><span class="lineno"> 4096</span>&#160; </div>
<div class="line"><a name="l04097"></a><span class="lineno"> 4097</span>&#160; <span class="keywordflow">if</span> (current_wchar == str.size())</div>
<div class="line"><a name="l04098"></a><span class="lineno"> 4098</span>&#160; {</div>
<div class="line"><a name="l04099"></a><span class="lineno"> 4099</span>&#160; utf8_bytes[0] = std::char_traits&lt;char&gt;::eof();</div>
<div class="line"><a name="l04100"></a><span class="lineno"> 4100</span>&#160; utf8_bytes_filled = 1;</div>
<div class="line"><a name="l04101"></a><span class="lineno"> 4101</span>&#160; }</div>
<div class="line"><a name="l04102"></a><span class="lineno"> 4102</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l04103"></a><span class="lineno"> 4103</span>&#160; {</div>
<div class="line"><a name="l04104"></a><span class="lineno"> 4104</span>&#160; <span class="comment">// get the current character</span></div>
<div class="line"><a name="l04105"></a><span class="lineno"> 4105</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wc = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(str[current_wchar++]);</div>
<div class="line"><a name="l04106"></a><span class="lineno"> 4106</span>&#160; </div>
<div class="line"><a name="l04107"></a><span class="lineno"> 4107</span>&#160; <span class="comment">// UTF-16 to UTF-8 encoding</span></div>
<div class="line"><a name="l04108"></a><span class="lineno"> 4108</span>&#160; <span class="keywordflow">if</span> (wc &lt; 0x80)</div>
<div class="line"><a name="l04109"></a><span class="lineno"> 4109</span>&#160; {</div>
<div class="line"><a name="l04110"></a><span class="lineno"> 4110</span>&#160; utf8_bytes[0] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(wc);</div>
<div class="line"><a name="l04111"></a><span class="lineno"> 4111</span>&#160; utf8_bytes_filled = 1;</div>
<div class="line"><a name="l04112"></a><span class="lineno"> 4112</span>&#160; }</div>
<div class="line"><a name="l04113"></a><span class="lineno"> 4113</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wc &lt;= 0x7FF)</div>
<div class="line"><a name="l04114"></a><span class="lineno"> 4114</span>&#160; {</div>
<div class="line"><a name="l04115"></a><span class="lineno"> 4115</span>&#160; utf8_bytes[0] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0xC0u | ((wc &gt;&gt; 6u)));</div>
<div class="line"><a name="l04116"></a><span class="lineno"> 4116</span>&#160; utf8_bytes[1] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | (wc &amp; 0x3Fu));</div>
<div class="line"><a name="l04117"></a><span class="lineno"> 4117</span>&#160; utf8_bytes_filled = 2;</div>
<div class="line"><a name="l04118"></a><span class="lineno"> 4118</span>&#160; }</div>
<div class="line"><a name="l04119"></a><span class="lineno"> 4119</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (0xD800 &gt; wc or wc &gt;= 0xE000)</div>
<div class="line"><a name="l04120"></a><span class="lineno"> 4120</span>&#160; {</div>
<div class="line"><a name="l04121"></a><span class="lineno"> 4121</span>&#160; utf8_bytes[0] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0xE0u | ((wc &gt;&gt; 12u)));</div>
<div class="line"><a name="l04122"></a><span class="lineno"> 4122</span>&#160; utf8_bytes[1] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | ((wc &gt;&gt; 6u) &amp; 0x3Fu));</div>
<div class="line"><a name="l04123"></a><span class="lineno"> 4123</span>&#160; utf8_bytes[2] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | (wc &amp; 0x3Fu));</div>
<div class="line"><a name="l04124"></a><span class="lineno"> 4124</span>&#160; utf8_bytes_filled = 3;</div>
<div class="line"><a name="l04125"></a><span class="lineno"> 4125</span>&#160; }</div>
<div class="line"><a name="l04126"></a><span class="lineno"> 4126</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l04127"></a><span class="lineno"> 4127</span>&#160; {</div>
<div class="line"><a name="l04128"></a><span class="lineno"> 4128</span>&#160; <span class="keywordflow">if</span> (current_wchar &lt; str.size())</div>
<div class="line"><a name="l04129"></a><span class="lineno"> 4129</span>&#160; {</div>
<div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> wc2 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(str[current_wchar++]);</div>
<div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> charcode = 0x10000u + (((wc &amp; 0x3FFu) &lt;&lt; 10u) | (wc2 &amp; 0x3FFu));</div>
<div class="line"><a name="l04132"></a><span class="lineno"> 4132</span>&#160; utf8_bytes[0] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0xF0u | (charcode &gt;&gt; 18u));</div>
<div class="line"><a name="l04133"></a><span class="lineno"> 4133</span>&#160; utf8_bytes[1] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | ((charcode &gt;&gt; 12u) &amp; 0x3Fu));</div>
<div class="line"><a name="l04134"></a><span class="lineno"> 4134</span>&#160; utf8_bytes[2] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | ((charcode &gt;&gt; 6u) &amp; 0x3Fu));</div>
<div class="line"><a name="l04135"></a><span class="lineno"> 4135</span>&#160; utf8_bytes[3] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(0x80u | (charcode &amp; 0x3Fu));</div>
<div class="line"><a name="l04136"></a><span class="lineno"> 4136</span>&#160; utf8_bytes_filled = 4;</div>
<div class="line"><a name="l04137"></a><span class="lineno"> 4137</span>&#160; }</div>
<div class="line"><a name="l04138"></a><span class="lineno"> 4138</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l04139"></a><span class="lineno"> 4139</span>&#160; {</div>
<div class="line"><a name="l04140"></a><span class="lineno"> 4140</span>&#160; <span class="comment">// unknown character</span></div>
<div class="line"><a name="l04141"></a><span class="lineno"> 4141</span>&#160; ++current_wchar;</div>
<div class="line"><a name="l04142"></a><span class="lineno"> 4142</span>&#160; utf8_bytes[0] = <span class="keyword">static_cast&lt;</span>std::char_traits&lt;char&gt;::int_type<span class="keyword">&gt;</span>(wc);</div>
<div class="line"><a name="l04143"></a><span class="lineno"> 4143</span>&#160; utf8_bytes_filled = 1;</div>
<div class="line"><a name="l04144"></a><span class="lineno"> 4144</span>&#160; }</div>
<div class="line"><a name="l04145"></a><span class="lineno"> 4145</span>&#160; }</div>
<div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>&#160; }</div>
<div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>&#160; }</div>
<div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>&#160;};</div>
<div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>&#160; </div>
<div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> W<span class="keywordtype">id</span>eStringType&gt;</div>
<div class="line"><a name="l04151"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html"> 4151</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html">wide_string_input_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">input_adapter_protocol</a></div>
<div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>&#160;{</div>
<div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l04154"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#a85c8bddae20bc00d64dd7a2c87109357"> 4154</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#a85c8bddae20bc00d64dd7a2c87109357">wide_string_input_adapter</a>(<span class="keyword">const</span> WideStringType&amp; w) noexcept</div>
<div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>&#160; : str(w)</div>
<div class="line"><a name="l04156"></a><span class="lineno"> 4156</span>&#160; {}</div>
<div class="line"><a name="l04157"></a><span class="lineno"> 4157</span>&#160; </div>
<div class="line"><a name="l04158"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#abb62b34cf77e557ce5321b7f2490c3b0"> 4158</a></span>&#160; std::char_traits&lt;char&gt;::int_type <a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#abb62b34cf77e557ce5321b7f2490c3b0">get_character</a>() noexcept<span class="keyword"> override</span></div>
<div class="line"><a name="l04159"></a><span class="lineno"> 4159</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l04160"></a><span class="lineno"> 4160</span>&#160; <span class="comment">// check if buffer needs to be filled</span></div>
<div class="line"><a name="l04161"></a><span class="lineno"> 4161</span>&#160; <span class="keywordflow">if</span> (utf8_bytes_index == utf8_bytes_filled)</div>
<div class="line"><a name="l04162"></a><span class="lineno"> 4162</span>&#160; {</div>
<div class="line"><a name="l04163"></a><span class="lineno"> 4163</span>&#160; fill_buffer&lt;sizeof(typename WideStringType::value_type)&gt;();</div>
<div class="line"><a name="l04164"></a><span class="lineno"> 4164</span>&#160; </div>
<div class="line"><a name="l04165"></a><span class="lineno"> 4165</span>&#160; assert(utf8_bytes_filled &gt; 0);</div>
<div class="line"><a name="l04166"></a><span class="lineno"> 4166</span>&#160; assert(utf8_bytes_index == 0);</div>
<div class="line"><a name="l04167"></a><span class="lineno"> 4167</span>&#160; }</div>
<div class="line"><a name="l04168"></a><span class="lineno"> 4168</span>&#160; </div>
<div class="line"><a name="l04169"></a><span class="lineno"> 4169</span>&#160; <span class="comment">// use buffer</span></div>
<div class="line"><a name="l04170"></a><span class="lineno"> 4170</span>&#160; assert(utf8_bytes_filled &gt; 0);</div>
<div class="line"><a name="l04171"></a><span class="lineno"> 4171</span>&#160; assert(utf8_bytes_index &lt; utf8_bytes_filled);</div>
<div class="line"><a name="l04172"></a><span class="lineno"> 4172</span>&#160; <span class="keywordflow">return</span> utf8_bytes[utf8_bytes_index++];</div>
<div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>&#160; }</div>
<div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>&#160; </div>
<div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l04176"></a><span class="lineno"> 4176</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">size_t</span> T&gt;</div>
<div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>&#160; <span class="keywordtype">void</span> fill_buffer()</div>
<div class="line"><a name="l04178"></a><span class="lineno"> 4178</span>&#160; {</div>
<div class="line"><a name="l04179"></a><span class="lineno"> 4179</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html#ae82d79118fa319a97e4a40568186a922">wide_string_input_helper&lt;WideStringType, T&gt;::fill_buffer</a>(str, current_wchar, utf8_bytes, utf8_bytes_index, utf8_bytes_filled);</div>
<div class="line"><a name="l04180"></a><span class="lineno"> 4180</span>&#160; }</div>
<div class="line"><a name="l04181"></a><span class="lineno"> 4181</span>&#160; </div>
<div class="line"><a name="l04183"></a><span class="lineno"> 4183</span>&#160; <span class="keyword">const</span> WideStringType&amp; str;</div>
<div class="line"><a name="l04184"></a><span class="lineno"> 4184</span>&#160; </div>
<div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>&#160; std::size_t current_wchar = 0;</div>
<div class="line"><a name="l04187"></a><span class="lineno"> 4187</span>&#160; </div>
<div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>&#160; std::array&lt;std::char_traits&lt;char&gt;::int_type, 4&gt; utf8_bytes = {{0, 0, 0, 0}};</div>
<div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>&#160; </div>
<div class="line"><a name="l04192"></a><span class="lineno"> 4192</span>&#160; std::size_t utf8_bytes_index = 0;</div>
<div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>&#160; std::size_t utf8_bytes_filled = 0;</div>
<div class="line"><a name="l04195"></a><span class="lineno"> 4195</span>&#160;};</div>
<div class="line"><a name="l04196"></a><span class="lineno"> 4196</span>&#160; </div>
<div class="line"><a name="l04197"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html"> 4197</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">input_adapter</a></div>
<div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>&#160;{</div>
<div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>&#160; <span class="comment">// native support</span></div>
<div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l04202"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a19fb8c28f37b23099a4353acf0a9a2f1"> 4202</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">input_adapter</a>(<a class="code" href="namespacestd.html">std</a>::FILE* file)</div>
<div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>&#160; : ia(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;<a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&gt;(file)) {}</div>
<div class="line"><a name="l04205"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#ae89f11268d4724b3080473f7218abe86"> 4205</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#ae89f11268d4724b3080473f7218abe86">input_adapter</a>(std::istream&amp; i)</div>
<div class="line"><a name="l04206"></a><span class="lineno"> 4206</span>&#160; : ia(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;<a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&gt;(i)) {}</div>
<div class="line"><a name="l04207"></a><span class="lineno"> 4207</span>&#160; </div>
<div class="line"><a name="l04209"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#af002dd2e53ac0855a03cb68d0ce626b2"> 4209</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#af002dd2e53ac0855a03cb68d0ce626b2">input_adapter</a>(std::istream&amp;&amp; i)</div>
<div class="line"><a name="l04210"></a><span class="lineno"> 4210</span>&#160; : ia(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;<a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&gt;(i)) {}</div>
<div class="line"><a name="l04211"></a><span class="lineno"> 4211</span>&#160; </div>
<div class="line"><a name="l04212"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a32f5ddd06562edce43ee86f5b5c2031b"> 4212</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a32f5ddd06562edce43ee86f5b5c2031b">input_adapter</a>(<span class="keyword">const</span> std::wstring&amp; ws)</div>
<div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>&#160; : ia(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;<a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html">wide_string_input_adapter</a>&lt;<a class="code" href="namespacestd.html">std</a>::wstring&gt;&gt;(ws)) {}</div>
<div class="line"><a name="l04214"></a><span class="lineno"> 4214</span>&#160; </div>
<div class="line"><a name="l04215"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a58163eaa485b17dd878d3c782efc1e43"> 4215</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a58163eaa485b17dd878d3c782efc1e43">input_adapter</a>(<span class="keyword">const</span> std::u16string&amp; ws)</div>
<div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>&#160; : ia(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;<a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html">wide_string_input_adapter</a>&lt;<a class="code" href="namespacestd.html">std</a>::u16string&gt;&gt;(ws)) {}</div>
<div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>&#160; </div>
<div class="line"><a name="l04218"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#abe0015ae09e855f502620315b9dcc3db"> 4218</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#abe0015ae09e855f502620315b9dcc3db">input_adapter</a>(<span class="keyword">const</span> std::u32string&amp; ws)</div>
<div class="line"><a name="l04219"></a><span class="lineno"> 4219</span>&#160; : ia(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;<a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html">wide_string_input_adapter</a>&lt;<a class="code" href="namespacestd.html">std</a>::u32string&gt;&gt;(ws)) {}</div>
<div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>&#160; </div>
<div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharT,</div>
<div class="line"><a name="l04223"></a><span class="lineno"> 4223</span>&#160; <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l04224"></a><span class="lineno"> 4224</span>&#160; std::is_pointer&lt;CharT&gt;::value and</div>
<div class="line"><a name="l04225"></a><span class="lineno"> 4225</span>&#160; std::is_integral&lt;typename std::remove_pointer&lt;CharT&gt;::type&gt;::value and</div>
<div class="line"><a name="l04226"></a><span class="lineno"> 4226</span>&#160; <span class="keyword">sizeof</span>(<span class="keyword">typename</span> std::remove_pointer&lt;CharT&gt;::type) == 1,</div>
<div class="line"><a name="l04227"></a><span class="lineno"> 4227</span>&#160; <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l04228"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a37816622d79ab4a1a76f4d7e872b65e1"> 4228</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a37816622d79ab4a1a76f4d7e872b65e1">input_adapter</a>(CharT b, std::size_t l)</div>
<div class="line"><a name="l04229"></a><span class="lineno"> 4229</span>&#160; : ia(std::make_shared&lt;input_buffer_adapter&gt;(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(b), l)) {}</div>
<div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>&#160; </div>
<div class="line"><a name="l04231"></a><span class="lineno"> 4231</span>&#160; <span class="comment">// derived support</span></div>
<div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>&#160; </div>
<div class="line"><a name="l04234"></a><span class="lineno"> 4234</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharT,</div>
<div class="line"><a name="l04235"></a><span class="lineno"> 4235</span>&#160; <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>&#160; std::is_pointer&lt;CharT&gt;::value and</div>
<div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>&#160; std::is_integral&lt;typename std::remove_pointer&lt;CharT&gt;::type&gt;::value and</div>
<div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>&#160; <span class="keyword">sizeof</span>(<span class="keyword">typename</span> std::remove_pointer&lt;CharT&gt;::type) == 1,</div>
<div class="line"><a name="l04239"></a><span class="lineno"> 4239</span>&#160; <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l04240"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a86f035d9c4319360014b922b5e433ced"> 4240</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a86f035d9c4319360014b922b5e433ced">input_adapter</a>(CharT b)</div>
<div class="line"><a name="l04241"></a><span class="lineno"> 4241</span>&#160; : <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a19fb8c28f37b23099a4353acf0a9a2f1">input_adapter</a>(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(b),</div>
<div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>&#160; std::strlen(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(b))) {}</div>
<div class="line"><a name="l04243"></a><span class="lineno"> 4243</span>&#160; </div>
<div class="line"><a name="l04245"></a><span class="lineno"> 4245</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>IteratorType,</div>
<div class="line"><a name="l04246"></a><span class="lineno"> 4246</span>&#160; <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l04247"></a><span class="lineno"> 4247</span>&#160; std::is_same&lt;typename iterator_traits&lt;IteratorType&gt;::iterator_category, std::random_access_iterator_tag&gt;::value,</div>
<div class="line"><a name="l04248"></a><span class="lineno"> 4248</span>&#160; <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l04249"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#ad6824b0f792691f75186c527fa31a6b4"> 4249</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#ad6824b0f792691f75186c527fa31a6b4">input_adapter</a>(IteratorType first, IteratorType last)</div>
<div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>&#160; {</div>
<div class="line"><a name="l04251"></a><span class="lineno"> 4251</span>&#160;<span class="preprocessor">#ifndef NDEBUG</span></div>
<div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>&#160; <span class="comment">// assertion to check that the iterator range is indeed contiguous,</span></div>
<div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>&#160; <span class="comment">// see http://stackoverflow.com/a/35008842/266378 for more discussion</span></div>
<div class="line"><a name="l04254"></a><span class="lineno"> 4254</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> is_contiguous = std::accumulate(</div>
<div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>&#160; first, last, std::pair&lt;bool, int&gt;(<span class="keyword">true</span>, 0),</div>
<div class="line"><a name="l04256"></a><span class="lineno"> 4256</span>&#160; [&amp;first](std::pair&lt;bool, int&gt; res, decltype(*first) val)</div>
<div class="line"><a name="l04257"></a><span class="lineno"> 4257</span>&#160; {</div>
<div class="line"><a name="l04258"></a><span class="lineno"> 4258</span>&#160; res.first &amp;= (val == *(std::next(std::addressof(*first), res.second++)));</div>
<div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>&#160; }).first;</div>
<div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>&#160; assert(is_contiguous);</div>
<div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>&#160; </div>
<div class="line"><a name="l04264"></a><span class="lineno"> 4264</span>&#160; <span class="comment">// assertion to check that each element is 1 byte long</span></div>
<div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>&#160; static_assert(</div>
<div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>&#160; <span class="keyword">sizeof</span>(<span class="keyword">typename</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits&lt;IteratorType&gt;::value_type</a>) == 1,</div>
<div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>&#160; <span class="stringliteral">&quot;each element in the iterator range must have the size of 1 byte&quot;</span>);</div>
<div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>&#160; </div>
<div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> len = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(std::distance(first, last));</div>
<div class="line"><a name="l04270"></a><span class="lineno"> 4270</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(len &gt; 0))</div>
<div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>&#160; {</div>
<div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>&#160; <span class="comment">// there is at least one element: use the address of first</span></div>
<div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>&#160; ia = std::make_shared&lt;input_buffer_adapter&gt;(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(&amp;(*first)), len);</div>
<div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>&#160; }</div>
<div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>&#160; {</div>
<div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>&#160; <span class="comment">// the address of first cannot be used: use nullptr</span></div>
<div class="line"><a name="l04278"></a><span class="lineno"> 4278</span>&#160; ia = std::make_shared&lt;input_buffer_adapter&gt;(<span class="keyword">nullptr</span>, len);</div>
<div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>&#160; }</div>
<div class="line"><a name="l04280"></a><span class="lineno"> 4280</span>&#160; }</div>
<div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>&#160; </div>
<div class="line"><a name="l04283"></a><span class="lineno"> 4283</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> N&gt;</div>
<div class="line"><a name="l04284"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#aa2392138bf8307df1994dc7eb22d51ce"> 4284</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#aa2392138bf8307df1994dc7eb22d51ce">input_adapter</a>(T (&amp;array)[N])</div>
<div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>&#160; : <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">input_adapter</a>(<a class="code" href="namespacestd.html">std</a>::begin(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">array</a>), <a class="code" href="namespacestd.html">std</a>::end(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">array</a>)) {}</div>
<div class="line"><a name="l04286"></a><span class="lineno"> 4286</span>&#160; </div>
<div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>ContiguousContainer, <span class="keyword">typename</span></div>
<div class="line"><a name="l04289"></a><span class="lineno"> 4289</span>&#160; std::enable_if&lt;not std::is_pointer&lt;ContiguousContainer&gt;::value and</div>
<div class="line"><a name="l04290"></a><span class="lineno"> 4290</span>&#160; std::is_base_of&lt;std::random_access_iterator_tag, typename iterator_traits&lt;decltype(std::begin(std::declval&lt;ContiguousContainer const&gt;()))&gt;::iterator_category&gt;::value,</div>
<div class="line"><a name="l04291"></a><span class="lineno"> 4291</span>&#160; <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l04292"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a887307cfa15a418470b3c34088fc8352"> 4292</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a887307cfa15a418470b3c34088fc8352">input_adapter</a>(<span class="keyword">const</span> ContiguousContainer&amp; c)</div>
<div class="line"><a name="l04293"></a><span class="lineno"> 4293</span>&#160; : <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">input_adapter</a>(<a class="code" href="namespacestd.html">std</a>::begin(c), <a class="code" href="namespacestd.html">std</a>::end(c)) {}</div>
<div class="line"><a name="l04294"></a><span class="lineno"> 4294</span>&#160; </div>
<div class="line"><a name="l04295"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a4ef04b9490247fc38f3d1c2a9e18789b"> 4295</a></span>&#160; <span class="keyword">operator</span> <a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">input_adapter_t</a>()</div>
<div class="line"><a name="l04296"></a><span class="lineno"> 4296</span>&#160; {</div>
<div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>&#160; <span class="keywordflow">return</span> ia;</div>
<div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>&#160; }</div>
<div class="line"><a name="l04299"></a><span class="lineno"> 4299</span>&#160; </div>
<div class="line"><a name="l04300"></a><span class="lineno"> 4300</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l04302"></a><span class="lineno"> 4302</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">input_adapter_t</a> ia = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l04303"></a><span class="lineno"> 4303</span>&#160;};</div>
<div class="line"><a name="l04304"></a><span class="lineno"> 4304</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>&#160; </div>
<div class="line"><a name="l04307"></a><span class="lineno"> 4307</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/json_sax.hpp&gt;</span></div>
<div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>&#160; </div>
<div class="line"><a name="l04309"></a><span class="lineno"> 4309</span>&#160; </div>
<div class="line"><a name="l04310"></a><span class="lineno"> 4310</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span> <span class="comment">// assert</span></div>
<div class="line"><a name="l04311"></a><span class="lineno"> 4311</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div>
<div class="line"><a name="l04312"></a><span class="lineno"> 4312</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string</span></div>
<div class="line"><a name="l04313"></a><span class="lineno"> 4313</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// move</span></div>
<div class="line"><a name="l04314"></a><span class="lineno"> 4314</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span> <span class="comment">// vector</span></div>
<div class="line"><a name="l04315"></a><span class="lineno"> 4315</span>&#160; </div>
<div class="line"><a name="l04316"></a><span class="lineno"> 4316</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/exceptions.hpp&gt;</span></div>
<div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>&#160; </div>
<div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>&#160; </div>
<div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>&#160; </div>
<div class="line"><a name="l04321"></a><span class="lineno"> 4321</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>&#160;{</div>
<div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>&#160; </div>
<div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l04333"></a><span class="lineno"><a class="line" href="structnlohmann_1_1json__sax.html"> 4333</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1json__sax.html">json_sax</a></div>
<div class="line"><a name="l04334"></a><span class="lineno"> 4334</span>&#160;{</div>
<div class="line"><a name="l04336"></a><span class="lineno"><a class="line" href="structnlohmann_1_1json__sax.html#a0cef30121f02b7fee85e9708148ea0aa"> 4336</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1json__sax.html#a0cef30121f02b7fee85e9708148ea0aa">number_integer_t</a> = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l04338"></a><span class="lineno"><a class="line" href="structnlohmann_1_1json__sax.html#a32028cc056ae0f43aaae331cdbbbf856"> 4338</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1json__sax.html#a32028cc056ae0f43aaae331cdbbbf856">number_unsigned_t</a> = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l04340"></a><span class="lineno"><a class="line" href="structnlohmann_1_1json__sax.html#a390c209bffd8c4800c8f3076dc465a20"> 4340</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1json__sax.html#a390c209bffd8c4800c8f3076dc465a20">number_float_t</a> = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l04342"></a><span class="lineno"><a class="line" href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e"> 4342</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e">string_t</a> = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>&#160; </div>
<div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <span class="keyword">null</span>() = 0;</div>
<div class="line"><a name="l04349"></a><span class="lineno"> 4349</span>&#160; </div>
<div class="line"><a name="l04355"></a><span class="lineno"> 4355</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a82ed080814fa656191a537284bb0c575">boolean</a>(<span class="keywordtype">bool</span> val) = 0;</div>
<div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>&#160; </div>
<div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#affa7a78b8e9cc9cc3ac99927143142a5">number_integer</a>(<a class="code" href="structnlohmann_1_1json__sax.html#a0cef30121f02b7fee85e9708148ea0aa">number_integer_t</a> val) = 0;</div>
<div class="line"><a name="l04363"></a><span class="lineno"> 4363</span>&#160; </div>
<div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#ad9b253083e0509923ba195136f49face">number_unsigned</a>(<a class="code" href="structnlohmann_1_1json__sax.html#a32028cc056ae0f43aaae331cdbbbf856">number_unsigned_t</a> val) = 0;</div>
<div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>&#160; </div>
<div class="line"><a name="l04377"></a><span class="lineno"> 4377</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#ae7c31614e8a82164d2d7f8dbf4671b25">number_float</a>(<a class="code" href="structnlohmann_1_1json__sax.html#a390c209bffd8c4800c8f3076dc465a20">number_float_t</a> val, <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e">string_t</a>&amp; s) = 0;</div>
<div class="line"><a name="l04378"></a><span class="lineno"> 4378</span>&#160; </div>
<div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a07eab82f6c82d606787eee9ad73d2bda">string</a>(<a class="code" href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e">string_t</a>&amp; val) = 0;</div>
<div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>&#160; </div>
<div class="line"><a name="l04393"></a><span class="lineno"> 4393</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a0671528b0debb5a348169d61f0382a0f">start_object</a>(std::size_t elements) = 0;</div>
<div class="line"><a name="l04394"></a><span class="lineno"> 4394</span>&#160; </div>
<div class="line"><a name="l04401"></a><span class="lineno"> 4401</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a2e0c7ecd80b18d18a8cc76f71cfc2028">key</a>(<a class="code" href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e">string_t</a>&amp; val) = 0;</div>
<div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>&#160; </div>
<div class="line"><a name="l04407"></a><span class="lineno"> 4407</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#ad0c722d53ff97be700ccf6a9468bd456">end_object</a>() = 0;</div>
<div class="line"><a name="l04408"></a><span class="lineno"> 4408</span>&#160; </div>
<div class="line"><a name="l04415"></a><span class="lineno"> 4415</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a5c53878cf08d463eb4e7ca0270532572">start_array</a>(std::size_t elements) = 0;</div>
<div class="line"><a name="l04416"></a><span class="lineno"> 4416</span>&#160; </div>
<div class="line"><a name="l04421"></a><span class="lineno"> 4421</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a235ee975617f28e6a996d1e36a282312">end_array</a>() = 0;</div>
<div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>&#160; </div>
<div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a60287e3bd85f489e04c83f7e3b76e613">parse_error</a>(std::size_t position,</div>
<div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>&#160; <span class="keyword">const</span> std::string&amp; last_token,</div>
<div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">detail::exception</a>&amp; ex) = 0;</div>
<div class="line"><a name="l04433"></a><span class="lineno"> 4433</span>&#160; </div>
<div class="line"><a name="l04434"></a><span class="lineno"> 4434</span>&#160; <span class="keyword">virtual</span> <a class="code" href="structnlohmann_1_1json__sax.html#af31bacfa81aa7818d8639d1da65c8eb5">~json_sax</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l04435"></a><span class="lineno"> 4435</span>&#160;};</div>
<div class="line"><a name="l04436"></a><span class="lineno"> 4436</span>&#160; </div>
<div class="line"><a name="l04437"></a><span class="lineno"> 4437</span>&#160; </div>
<div class="line"><a name="l04438"></a><span class="lineno"> 4438</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l04439"></a><span class="lineno"> 4439</span>&#160;{</div>
<div class="line"><a name="l04453"></a><span class="lineno"> 4453</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l04454"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html"> 4454</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a></div>
<div class="line"><a name="l04455"></a><span class="lineno"> 4455</span>&#160;{</div>
<div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l04457"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a3d5cd67d179aa7422ce90e54984a441e"> 4457</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a3d5cd67d179aa7422ce90e54984a441e">number_integer_t</a> = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l04458"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a90f19b272530a479db81db11be2ea15c"> 4458</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a90f19b272530a479db81db11be2ea15c">number_unsigned_t</a> = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l04459"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad8da3aad0147b18b3cb76868480300fe"> 4459</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad8da3aad0147b18b3cb76868480300fe">number_float_t</a> = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l04460"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc"> 4460</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc">string_t</a> = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l04461"></a><span class="lineno"> 4461</span>&#160; </div>
<div class="line"><a name="l04467"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afc50fee0a92ce84afb84041ebbdfba80"> 4467</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afc50fee0a92ce84afb84041ebbdfba80">json_sax_dom_parser</a>(BasicJsonType&amp; r, <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions_ = <span class="keyword">true</span>)</div>
<div class="line"><a name="l04468"></a><span class="lineno"> 4468</span>&#160; : root(r), allow_exceptions(allow_exceptions_)</div>
<div class="line"><a name="l04469"></a><span class="lineno"> 4469</span>&#160; {}</div>
<div class="line"><a name="l04470"></a><span class="lineno"> 4470</span>&#160; </div>
<div class="line"><a name="l04471"></a><span class="lineno"> 4471</span>&#160; <span class="comment">// make class move-only</span></div>
<div class="line"><a name="l04472"></a><span class="lineno"> 4472</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afc50fee0a92ce84afb84041ebbdfba80">json_sax_dom_parser</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l04473"></a><span class="lineno"> 4473</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afc50fee0a92ce84afb84041ebbdfba80">json_sax_dom_parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l04474"></a><span class="lineno"> 4474</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a98448bf2cbc15d15e2eddc5a09a40a42">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l04475"></a><span class="lineno"> 4475</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a98448bf2cbc15d15e2eddc5a09a40a42">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l04476"></a><span class="lineno"> 4476</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a4b93deb5c1d716dcfb33b3ed8a00ac4d">~json_sax_dom_parser</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l04477"></a><span class="lineno"> 4477</span>&#160; </div>
<div class="line"><a name="l04478"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#abb06babaa861f123d8d0cb443b887d8a"> 4478</a></span>&#160; <span class="keywordtype">bool</span> <span class="keyword">null</span>()</div>
<div class="line"><a name="l04479"></a><span class="lineno"> 4479</span>&#160; {</div>
<div class="line"><a name="l04480"></a><span class="lineno"> 4480</span>&#160; handle_value(<span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l04481"></a><span class="lineno"> 4481</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04482"></a><span class="lineno"> 4482</span>&#160; }</div>
<div class="line"><a name="l04483"></a><span class="lineno"> 4483</span>&#160; </div>
<div class="line"><a name="l04484"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a476c4634b93546a1a555725e551c2b33"> 4484</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a476c4634b93546a1a555725e551c2b33">boolean</a>(<span class="keywordtype">bool</span> val)</div>
<div class="line"><a name="l04485"></a><span class="lineno"> 4485</span>&#160; {</div>
<div class="line"><a name="l04486"></a><span class="lineno"> 4486</span>&#160; handle_value(val);</div>
<div class="line"><a name="l04487"></a><span class="lineno"> 4487</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04488"></a><span class="lineno"> 4488</span>&#160; }</div>
<div class="line"><a name="l04489"></a><span class="lineno"> 4489</span>&#160; </div>
<div class="line"><a name="l04490"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aff77f861ba336df48c9786a993941397"> 4490</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aff77f861ba336df48c9786a993941397">number_integer</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a3d5cd67d179aa7422ce90e54984a441e">number_integer_t</a> val)</div>
<div class="line"><a name="l04491"></a><span class="lineno"> 4491</span>&#160; {</div>
<div class="line"><a name="l04492"></a><span class="lineno"> 4492</span>&#160; handle_value(val);</div>
<div class="line"><a name="l04493"></a><span class="lineno"> 4493</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04494"></a><span class="lineno"> 4494</span>&#160; }</div>
<div class="line"><a name="l04495"></a><span class="lineno"> 4495</span>&#160; </div>
<div class="line"><a name="l04496"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a2b4ff5146ed46993527e4a67d99c1355"> 4496</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a2b4ff5146ed46993527e4a67d99c1355">number_unsigned</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a90f19b272530a479db81db11be2ea15c">number_unsigned_t</a> val)</div>
<div class="line"><a name="l04497"></a><span class="lineno"> 4497</span>&#160; {</div>
<div class="line"><a name="l04498"></a><span class="lineno"> 4498</span>&#160; handle_value(val);</div>
<div class="line"><a name="l04499"></a><span class="lineno"> 4499</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04500"></a><span class="lineno"> 4500</span>&#160; }</div>
<div class="line"><a name="l04501"></a><span class="lineno"> 4501</span>&#160; </div>
<div class="line"><a name="l04502"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aef4652c0e81d6c052acb5d36afe09499"> 4502</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aef4652c0e81d6c052acb5d36afe09499">number_float</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad8da3aad0147b18b3cb76868480300fe">number_float_t</a> val, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc">string_t</a>&amp; <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l04503"></a><span class="lineno"> 4503</span>&#160; {</div>
<div class="line"><a name="l04504"></a><span class="lineno"> 4504</span>&#160; handle_value(val);</div>
<div class="line"><a name="l04505"></a><span class="lineno"> 4505</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04506"></a><span class="lineno"> 4506</span>&#160; }</div>
<div class="line"><a name="l04507"></a><span class="lineno"> 4507</span>&#160; </div>
<div class="line"><a name="l04508"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a851d965082d20a726138f5d0330dc7d8"> 4508</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a851d965082d20a726138f5d0330dc7d8">string</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc">string_t</a>&amp; val)</div>
<div class="line"><a name="l04509"></a><span class="lineno"> 4509</span>&#160; {</div>
<div class="line"><a name="l04510"></a><span class="lineno"> 4510</span>&#160; handle_value(val);</div>
<div class="line"><a name="l04511"></a><span class="lineno"> 4511</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04512"></a><span class="lineno"> 4512</span>&#160; }</div>
<div class="line"><a name="l04513"></a><span class="lineno"> 4513</span>&#160; </div>
<div class="line"><a name="l04514"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a9929b4cc92d471c49bd0a92802629f90"> 4514</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a9929b4cc92d471c49bd0a92802629f90">start_object</a>(std::size_t len)</div>
<div class="line"><a name="l04515"></a><span class="lineno"> 4515</span>&#160; {</div>
<div class="line"><a name="l04516"></a><span class="lineno"> 4516</span>&#160; ref_stack.push_back(handle_value(BasicJsonType::value_t::object));</div>
<div class="line"><a name="l04517"></a><span class="lineno"> 4517</span>&#160; </div>
<div class="line"><a name="l04518"></a><span class="lineno"> 4518</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(len != std::size_t(-1) and len &gt; ref_stack.back()-&gt;max_size()))</div>
<div class="line"><a name="l04519"></a><span class="lineno"> 4519</span>&#160; {</div>
<div class="line"><a name="l04520"></a><span class="lineno"> 4520</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(408,</div>
<div class="line"><a name="l04521"></a><span class="lineno"> 4521</span>&#160; <span class="stringliteral">&quot;excessive object size: &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(len)));</div>
<div class="line"><a name="l04522"></a><span class="lineno"> 4522</span>&#160; }</div>
<div class="line"><a name="l04523"></a><span class="lineno"> 4523</span>&#160; </div>
<div class="line"><a name="l04524"></a><span class="lineno"> 4524</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04525"></a><span class="lineno"> 4525</span>&#160; }</div>
<div class="line"><a name="l04526"></a><span class="lineno"> 4526</span>&#160; </div>
<div class="line"><a name="l04527"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad427febda4997cbd8345a2596af66649"> 4527</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad427febda4997cbd8345a2596af66649">key</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc">string_t</a>&amp; val)</div>
<div class="line"><a name="l04528"></a><span class="lineno"> 4528</span>&#160; {</div>
<div class="line"><a name="l04529"></a><span class="lineno"> 4529</span>&#160; <span class="comment">// add null at given key and store the reference for later</span></div>
<div class="line"><a name="l04530"></a><span class="lineno"> 4530</span>&#160; object_element = &amp;(ref_stack.back()-&gt;m_value.object-&gt;operator[](val));</div>
<div class="line"><a name="l04531"></a><span class="lineno"> 4531</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04532"></a><span class="lineno"> 4532</span>&#160; }</div>
<div class="line"><a name="l04533"></a><span class="lineno"> 4533</span>&#160; </div>
<div class="line"><a name="l04534"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a88de4907ad5668d0358af2135236101f"> 4534</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a88de4907ad5668d0358af2135236101f">end_object</a>()</div>
<div class="line"><a name="l04535"></a><span class="lineno"> 4535</span>&#160; {</div>
<div class="line"><a name="l04536"></a><span class="lineno"> 4536</span>&#160; ref_stack.pop_back();</div>
<div class="line"><a name="l04537"></a><span class="lineno"> 4537</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04538"></a><span class="lineno"> 4538</span>&#160; }</div>
<div class="line"><a name="l04539"></a><span class="lineno"> 4539</span>&#160; </div>
<div class="line"><a name="l04540"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a056b895d011efaf48ea096c024aca0d4"> 4540</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a056b895d011efaf48ea096c024aca0d4">start_array</a>(std::size_t len)</div>
<div class="line"><a name="l04541"></a><span class="lineno"> 4541</span>&#160; {</div>
<div class="line"><a name="l04542"></a><span class="lineno"> 4542</span>&#160; ref_stack.push_back(handle_value(BasicJsonType::value_t::array));</div>
<div class="line"><a name="l04543"></a><span class="lineno"> 4543</span>&#160; </div>
<div class="line"><a name="l04544"></a><span class="lineno"> 4544</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(len != std::size_t(-1) and len &gt; ref_stack.back()-&gt;max_size()))</div>
<div class="line"><a name="l04545"></a><span class="lineno"> 4545</span>&#160; {</div>
<div class="line"><a name="l04546"></a><span class="lineno"> 4546</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(408,</div>
<div class="line"><a name="l04547"></a><span class="lineno"> 4547</span>&#160; <span class="stringliteral">&quot;excessive array size: &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(len)));</div>
<div class="line"><a name="l04548"></a><span class="lineno"> 4548</span>&#160; }</div>
<div class="line"><a name="l04549"></a><span class="lineno"> 4549</span>&#160; </div>
<div class="line"><a name="l04550"></a><span class="lineno"> 4550</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04551"></a><span class="lineno"> 4551</span>&#160; }</div>
<div class="line"><a name="l04552"></a><span class="lineno"> 4552</span>&#160; </div>
<div class="line"><a name="l04553"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#af7cb5e5fe06ea908b0ce4ed762919759"> 4553</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#af7cb5e5fe06ea908b0ce4ed762919759">end_array</a>()</div>
<div class="line"><a name="l04554"></a><span class="lineno"> 4554</span>&#160; {</div>
<div class="line"><a name="l04555"></a><span class="lineno"> 4555</span>&#160; ref_stack.pop_back();</div>
<div class="line"><a name="l04556"></a><span class="lineno"> 4556</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04557"></a><span class="lineno"> 4557</span>&#160; }</div>
<div class="line"><a name="l04558"></a><span class="lineno"> 4558</span>&#160; </div>
<div class="line"><a name="l04559"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a7d3bf1f361ebb817c694ba45b3814fa6"> 4559</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a7d3bf1f361ebb817c694ba45b3814fa6">parse_error</a>(std::size_t <span class="comment">/*unused*/</span>, <span class="keyword">const</span> std::string&amp; <span class="comment">/*unused*/</span>,</div>
<div class="line"><a name="l04560"></a><span class="lineno"> 4560</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">detail::exception</a>&amp; ex)</div>
<div class="line"><a name="l04561"></a><span class="lineno"> 4561</span>&#160; {</div>
<div class="line"><a name="l04562"></a><span class="lineno"> 4562</span>&#160; errored = <span class="keyword">true</span>;</div>
<div class="line"><a name="l04563"></a><span class="lineno"> 4563</span>&#160; <span class="keywordflow">if</span> (allow_exceptions)</div>
<div class="line"><a name="l04564"></a><span class="lineno"> 4564</span>&#160; {</div>
<div class="line"><a name="l04565"></a><span class="lineno"> 4565</span>&#160; <span class="comment">// determine the proper exception type from the id</span></div>
<div class="line"><a name="l04566"></a><span class="lineno"> 4566</span>&#160; <span class="keywordflow">switch</span> ((ex.<a class="code" href="classnlohmann_1_1detail_1_1exception.html#a0d4589a3fb54e81646d986c05efa3b9a">id</a> / 100) % 100)</div>
<div class="line"><a name="l04567"></a><span class="lineno"> 4567</span>&#160; {</div>
<div class="line"><a name="l04568"></a><span class="lineno"> 4568</span>&#160; <span class="keywordflow">case</span> 1:</div>
<div class="line"><a name="l04569"></a><span class="lineno"> 4569</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">detail::parse_error</a>*<span class="keyword">&gt;</span>(&amp;ex));</div>
<div class="line"><a name="l04570"></a><span class="lineno"> 4570</span>&#160; <span class="keywordflow">case</span> 4:</div>
<div class="line"><a name="l04571"></a><span class="lineno"> 4571</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">detail::out_of_range</a>*<span class="keyword">&gt;</span>(&amp;ex));</div>
<div class="line"><a name="l04572"></a><span class="lineno"> 4572</span>&#160; <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a name="l04573"></a><span class="lineno"> 4573</span>&#160; <span class="keywordflow">case</span> 2:</div>
<div class="line"><a name="l04574"></a><span class="lineno"> 4574</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">detail::invalid_iterator</a>*<span class="keyword">&gt;</span>(&amp;ex));</div>
<div class="line"><a name="l04575"></a><span class="lineno"> 4575</span>&#160; <span class="keywordflow">case</span> 3:</div>
<div class="line"><a name="l04576"></a><span class="lineno"> 4576</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1type__error.html">detail::type_error</a>*<span class="keyword">&gt;</span>(&amp;ex));</div>
<div class="line"><a name="l04577"></a><span class="lineno"> 4577</span>&#160; <span class="keywordflow">case</span> 5:</div>
<div class="line"><a name="l04578"></a><span class="lineno"> 4578</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1other__error.html">detail::other_error</a>*<span class="keyword">&gt;</span>(&amp;ex));</div>
<div class="line"><a name="l04579"></a><span class="lineno"> 4579</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l04580"></a><span class="lineno"> 4580</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l04581"></a><span class="lineno"> 4581</span>&#160; <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a name="l04582"></a><span class="lineno"> 4582</span>&#160; }</div>
<div class="line"><a name="l04583"></a><span class="lineno"> 4583</span>&#160; }</div>
<div class="line"><a name="l04584"></a><span class="lineno"> 4584</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l04585"></a><span class="lineno"> 4585</span>&#160; }</div>
<div class="line"><a name="l04586"></a><span class="lineno"> 4586</span>&#160; </div>
<div class="line"><a name="l04587"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad1b9f3681fadbbb2e0127f5c8a99c662"> 4587</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad1b9f3681fadbbb2e0127f5c8a99c662">is_errored</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l04588"></a><span class="lineno"> 4588</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l04589"></a><span class="lineno"> 4589</span>&#160; <span class="keywordflow">return</span> errored;</div>
<div class="line"><a name="l04590"></a><span class="lineno"> 4590</span>&#160; }</div>
<div class="line"><a name="l04591"></a><span class="lineno"> 4591</span>&#160; </div>
<div class="line"><a name="l04592"></a><span class="lineno"> 4592</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l04599"></a><span class="lineno"> 4599</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Value&gt;</div>
<div class="line"><a name="l04600"></a><span class="lineno"> 4600</span>&#160; <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
<div class="line"><a name="l04601"></a><span class="lineno"> 4601</span>&#160; BasicJsonType* handle_value(Value&amp;&amp; v)</div>
<div class="line"><a name="l04602"></a><span class="lineno"> 4602</span>&#160; {</div>
<div class="line"><a name="l04603"></a><span class="lineno"> 4603</span>&#160; <span class="keywordflow">if</span> (ref_stack.empty())</div>
<div class="line"><a name="l04604"></a><span class="lineno"> 4604</span>&#160; {</div>
<div class="line"><a name="l04605"></a><span class="lineno"> 4605</span>&#160; root = BasicJsonType(std::forward&lt;Value&gt;(v));</div>
<div class="line"><a name="l04606"></a><span class="lineno"> 4606</span>&#160; <span class="keywordflow">return</span> &amp;root;</div>
<div class="line"><a name="l04607"></a><span class="lineno"> 4607</span>&#160; }</div>
<div class="line"><a name="l04608"></a><span class="lineno"> 4608</span>&#160; </div>
<div class="line"><a name="l04609"></a><span class="lineno"> 4609</span>&#160; assert(ref_stack.back()-&gt;is_array() or ref_stack.back()-&gt;is_object());</div>
<div class="line"><a name="l04610"></a><span class="lineno"> 4610</span>&#160; </div>
<div class="line"><a name="l04611"></a><span class="lineno"> 4611</span>&#160; <span class="keywordflow">if</span> (ref_stack.back()-&gt;is_array())</div>
<div class="line"><a name="l04612"></a><span class="lineno"> 4612</span>&#160; {</div>
<div class="line"><a name="l04613"></a><span class="lineno"> 4613</span>&#160; ref_stack.back()-&gt;m_value.array-&gt;emplace_back(std::forward&lt;Value&gt;(v));</div>
<div class="line"><a name="l04614"></a><span class="lineno"> 4614</span>&#160; <span class="keywordflow">return</span> &amp;(ref_stack.back()-&gt;m_value.array-&gt;back());</div>
<div class="line"><a name="l04615"></a><span class="lineno"> 4615</span>&#160; }</div>
<div class="line"><a name="l04616"></a><span class="lineno"> 4616</span>&#160; </div>
<div class="line"><a name="l04617"></a><span class="lineno"> 4617</span>&#160; assert(ref_stack.back()-&gt;is_object());</div>
<div class="line"><a name="l04618"></a><span class="lineno"> 4618</span>&#160; assert(object_element);</div>
<div class="line"><a name="l04619"></a><span class="lineno"> 4619</span>&#160; *object_element = BasicJsonType(std::forward&lt;Value&gt;(v));</div>
<div class="line"><a name="l04620"></a><span class="lineno"> 4620</span>&#160; <span class="keywordflow">return</span> object_element;</div>
<div class="line"><a name="l04621"></a><span class="lineno"> 4621</span>&#160; }</div>
<div class="line"><a name="l04622"></a><span class="lineno"> 4622</span>&#160; </div>
<div class="line"><a name="l04624"></a><span class="lineno"> 4624</span>&#160; BasicJsonType&amp; root;</div>
<div class="line"><a name="l04626"></a><span class="lineno"> 4626</span>&#160; std::vector&lt;BasicJsonType*&gt; ref_stack {};</div>
<div class="line"><a name="l04628"></a><span class="lineno"> 4628</span>&#160; BasicJsonType* object_element = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l04630"></a><span class="lineno"> 4630</span>&#160; <span class="keywordtype">bool</span> errored = <span class="keyword">false</span>;</div>
<div class="line"><a name="l04632"></a><span class="lineno"> 4632</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>;</div>
<div class="line"><a name="l04633"></a><span class="lineno"> 4633</span>&#160;};</div>
<div class="line"><a name="l04634"></a><span class="lineno"> 4634</span>&#160; </div>
<div class="line"><a name="l04635"></a><span class="lineno"> 4635</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l04636"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html"> 4636</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a></div>
<div class="line"><a name="l04637"></a><span class="lineno"> 4637</span>&#160;{</div>
<div class="line"><a name="l04638"></a><span class="lineno"> 4638</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l04639"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a3ba8fc7a8d83c5b0eeb3b543ad844b8d"> 4639</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a3ba8fc7a8d83c5b0eeb3b543ad844b8d">number_integer_t</a> = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l04640"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a2406c5125f7128fb9c01921df2903001"> 4640</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a2406c5125f7128fb9c01921df2903001">number_unsigned_t</a> = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l04641"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a914ea0555cea5290449fb791ae41c655"> 4641</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a914ea0555cea5290449fb791ae41c655">number_float_t</a> = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l04642"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc"> 4642</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc">string_t</a> = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l04643"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce"> 4643</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce">parser_callback_t</a> = <span class="keyword">typename</span> BasicJsonType::parser_callback_t;</div>
<div class="line"><a name="l04644"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6d706967b2ecc2510e172577d8550b"> 4644</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6d706967b2ecc2510e172577d8550b">parse_event_t</a> = <span class="keyword">typename</span> BasicJsonType::parse_event_t;</div>
<div class="line"><a name="l04645"></a><span class="lineno"> 4645</span>&#160; </div>
<div class="line"><a name="l04646"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#afec9434e54590f10df51b062973d4daf"> 4646</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#afec9434e54590f10df51b062973d4daf">json_sax_dom_callback_parser</a>(BasicJsonType&amp; r,</div>
<div class="line"><a name="l04647"></a><span class="lineno"> 4647</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce">parser_callback_t</a> cb,</div>
<div class="line"><a name="l04648"></a><span class="lineno"> 4648</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions_ = <span class="keyword">true</span>)</div>
<div class="line"><a name="l04649"></a><span class="lineno"> 4649</span>&#160; : root(r), callback(cb), allow_exceptions(allow_exceptions_)</div>
<div class="line"><a name="l04650"></a><span class="lineno"> 4650</span>&#160; {</div>
<div class="line"><a name="l04651"></a><span class="lineno"> 4651</span>&#160; keep_stack.push_back(<span class="keyword">true</span>);</div>
<div class="line"><a name="l04652"></a><span class="lineno"> 4652</span>&#160; }</div>
<div class="line"><a name="l04653"></a><span class="lineno"> 4653</span>&#160; </div>
<div class="line"><a name="l04654"></a><span class="lineno"> 4654</span>&#160; <span class="comment">// make class move-only</span></div>
<div class="line"><a name="l04655"></a><span class="lineno"> 4655</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#afec9434e54590f10df51b062973d4daf">json_sax_dom_callback_parser</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l04656"></a><span class="lineno"> 4656</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#afec9434e54590f10df51b062973d4daf">json_sax_dom_callback_parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l04657"></a><span class="lineno"> 4657</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5c9603e79a71713f5e8cf12cba837dbb">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l04658"></a><span class="lineno"> 4658</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5c9603e79a71713f5e8cf12cba837dbb">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l04659"></a><span class="lineno"> 4659</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a54ffcdfb0a8c5c9a876cd003b404ef4b">~json_sax_dom_callback_parser</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l04660"></a><span class="lineno"> 4660</span>&#160; </div>
<div class="line"><a name="l04661"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a446262b6a75371fe8e0a6218ba2911e6"> 4661</a></span>&#160; <span class="keywordtype">bool</span> <span class="keyword">null</span>()</div>
<div class="line"><a name="l04662"></a><span class="lineno"> 4662</span>&#160; {</div>
<div class="line"><a name="l04663"></a><span class="lineno"> 4663</span>&#160; handle_value(<span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l04664"></a><span class="lineno"> 4664</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04665"></a><span class="lineno"> 4665</span>&#160; }</div>
<div class="line"><a name="l04666"></a><span class="lineno"> 4666</span>&#160; </div>
<div class="line"><a name="l04667"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ab7d8db672189164a8c0731e65ada1b45"> 4667</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ab7d8db672189164a8c0731e65ada1b45">boolean</a>(<span class="keywordtype">bool</span> val)</div>
<div class="line"><a name="l04668"></a><span class="lineno"> 4668</span>&#160; {</div>
<div class="line"><a name="l04669"></a><span class="lineno"> 4669</span>&#160; handle_value(val);</div>
<div class="line"><a name="l04670"></a><span class="lineno"> 4670</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04671"></a><span class="lineno"> 4671</span>&#160; }</div>
<div class="line"><a name="l04672"></a><span class="lineno"> 4672</span>&#160; </div>
<div class="line"><a name="l04673"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a68d9eddfd572e8687c1c8107e0505aa6"> 4673</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a68d9eddfd572e8687c1c8107e0505aa6">number_integer</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a3ba8fc7a8d83c5b0eeb3b543ad844b8d">number_integer_t</a> val)</div>
<div class="line"><a name="l04674"></a><span class="lineno"> 4674</span>&#160; {</div>
<div class="line"><a name="l04675"></a><span class="lineno"> 4675</span>&#160; handle_value(val);</div>
<div class="line"><a name="l04676"></a><span class="lineno"> 4676</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04677"></a><span class="lineno"> 4677</span>&#160; }</div>
<div class="line"><a name="l04678"></a><span class="lineno"> 4678</span>&#160; </div>
<div class="line"><a name="l04679"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#acabb231463bf669441c22e4ea385a9fb"> 4679</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#acabb231463bf669441c22e4ea385a9fb">number_unsigned</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a2406c5125f7128fb9c01921df2903001">number_unsigned_t</a> val)</div>
<div class="line"><a name="l04680"></a><span class="lineno"> 4680</span>&#160; {</div>
<div class="line"><a name="l04681"></a><span class="lineno"> 4681</span>&#160; handle_value(val);</div>
<div class="line"><a name="l04682"></a><span class="lineno"> 4682</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04683"></a><span class="lineno"> 4683</span>&#160; }</div>
<div class="line"><a name="l04684"></a><span class="lineno"> 4684</span>&#160; </div>
<div class="line"><a name="l04685"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae21f7872c334c77d03ae033cb0749b1c"> 4685</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae21f7872c334c77d03ae033cb0749b1c">number_float</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a914ea0555cea5290449fb791ae41c655">number_float_t</a> val, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc">string_t</a>&amp; <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l04686"></a><span class="lineno"> 4686</span>&#160; {</div>
<div class="line"><a name="l04687"></a><span class="lineno"> 4687</span>&#160; handle_value(val);</div>
<div class="line"><a name="l04688"></a><span class="lineno"> 4688</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04689"></a><span class="lineno"> 4689</span>&#160; }</div>
<div class="line"><a name="l04690"></a><span class="lineno"> 4690</span>&#160; </div>
<div class="line"><a name="l04691"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ad94e912a67c7b96158937236805b8b47"> 4691</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ad94e912a67c7b96158937236805b8b47">string</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc">string_t</a>&amp; val)</div>
<div class="line"><a name="l04692"></a><span class="lineno"> 4692</span>&#160; {</div>
<div class="line"><a name="l04693"></a><span class="lineno"> 4693</span>&#160; handle_value(val);</div>
<div class="line"><a name="l04694"></a><span class="lineno"> 4694</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04695"></a><span class="lineno"> 4695</span>&#160; }</div>
<div class="line"><a name="l04696"></a><span class="lineno"> 4696</span>&#160; </div>
<div class="line"><a name="l04697"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a040e60243cc7c18a6078c6b83cdb4a81"> 4697</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a040e60243cc7c18a6078c6b83cdb4a81">start_object</a>(std::size_t len)</div>
<div class="line"><a name="l04698"></a><span class="lineno"> 4698</span>&#160; {</div>
<div class="line"><a name="l04699"></a><span class="lineno"> 4699</span>&#160; <span class="comment">// check callback for object start</span></div>
<div class="line"><a name="l04700"></a><span class="lineno"> 4700</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> keep = callback(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(ref_stack.size()), parse_event_t::object_start, discarded);</div>
<div class="line"><a name="l04701"></a><span class="lineno"> 4701</span>&#160; keep_stack.push_back(keep);</div>
<div class="line"><a name="l04702"></a><span class="lineno"> 4702</span>&#160; </div>
<div class="line"><a name="l04703"></a><span class="lineno"> 4703</span>&#160; <span class="keyword">auto</span> val = handle_value(BasicJsonType::value_t::object, <span class="keyword">true</span>);</div>
<div class="line"><a name="l04704"></a><span class="lineno"> 4704</span>&#160; ref_stack.push_back(val.second);</div>
<div class="line"><a name="l04705"></a><span class="lineno"> 4705</span>&#160; </div>
<div class="line"><a name="l04706"></a><span class="lineno"> 4706</span>&#160; <span class="comment">// check object limit</span></div>
<div class="line"><a name="l04707"></a><span class="lineno"> 4707</span>&#160; <span class="keywordflow">if</span> (ref_stack.back() and <a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(len != std::size_t(-1) and len &gt; ref_stack.back()-&gt;max_size()))</div>
<div class="line"><a name="l04708"></a><span class="lineno"> 4708</span>&#160; {</div>
<div class="line"><a name="l04709"></a><span class="lineno"> 4709</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(408, <span class="stringliteral">&quot;excessive object size: &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(len)));</div>
<div class="line"><a name="l04710"></a><span class="lineno"> 4710</span>&#160; }</div>
<div class="line"><a name="l04711"></a><span class="lineno"> 4711</span>&#160; </div>
<div class="line"><a name="l04712"></a><span class="lineno"> 4712</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04713"></a><span class="lineno"> 4713</span>&#160; }</div>
<div class="line"><a name="l04714"></a><span class="lineno"> 4714</span>&#160; </div>
<div class="line"><a name="l04715"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a0cc4a5192fe9b803276edb831b6099fa"> 4715</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a0cc4a5192fe9b803276edb831b6099fa">key</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc">string_t</a>&amp; val)</div>
<div class="line"><a name="l04716"></a><span class="lineno"> 4716</span>&#160; {</div>
<div class="line"><a name="l04717"></a><span class="lineno"> 4717</span>&#160; BasicJsonType k = BasicJsonType(val);</div>
<div class="line"><a name="l04718"></a><span class="lineno"> 4718</span>&#160; </div>
<div class="line"><a name="l04719"></a><span class="lineno"> 4719</span>&#160; <span class="comment">// check callback for key</span></div>
<div class="line"><a name="l04720"></a><span class="lineno"> 4720</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> keep = callback(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(ref_stack.size()), parse_event_t::key, k);</div>
<div class="line"><a name="l04721"></a><span class="lineno"> 4721</span>&#160; key_keep_stack.push_back(keep);</div>
<div class="line"><a name="l04722"></a><span class="lineno"> 4722</span>&#160; </div>
<div class="line"><a name="l04723"></a><span class="lineno"> 4723</span>&#160; <span class="comment">// add discarded value at given key and store the reference for later</span></div>
<div class="line"><a name="l04724"></a><span class="lineno"> 4724</span>&#160; <span class="keywordflow">if</span> (keep and ref_stack.back())</div>
<div class="line"><a name="l04725"></a><span class="lineno"> 4725</span>&#160; {</div>
<div class="line"><a name="l04726"></a><span class="lineno"> 4726</span>&#160; object_element = &amp;(ref_stack.back()-&gt;m_value.object-&gt;operator[](val) = discarded);</div>
<div class="line"><a name="l04727"></a><span class="lineno"> 4727</span>&#160; }</div>
<div class="line"><a name="l04728"></a><span class="lineno"> 4728</span>&#160; </div>
<div class="line"><a name="l04729"></a><span class="lineno"> 4729</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04730"></a><span class="lineno"> 4730</span>&#160; }</div>
<div class="line"><a name="l04731"></a><span class="lineno"> 4731</span>&#160; </div>
<div class="line"><a name="l04732"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae75d313d6d1b9c29508e740a10fefa18"> 4732</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae75d313d6d1b9c29508e740a10fefa18">end_object</a>()</div>
<div class="line"><a name="l04733"></a><span class="lineno"> 4733</span>&#160; {</div>
<div class="line"><a name="l04734"></a><span class="lineno"> 4734</span>&#160; <span class="keywordflow">if</span> (ref_stack.back() and not callback(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back()))</div>
<div class="line"><a name="l04735"></a><span class="lineno"> 4735</span>&#160; {</div>
<div class="line"><a name="l04736"></a><span class="lineno"> 4736</span>&#160; <span class="comment">// discard object</span></div>
<div class="line"><a name="l04737"></a><span class="lineno"> 4737</span>&#160; *ref_stack.back() = discarded;</div>
<div class="line"><a name="l04738"></a><span class="lineno"> 4738</span>&#160; }</div>
<div class="line"><a name="l04739"></a><span class="lineno"> 4739</span>&#160; </div>
<div class="line"><a name="l04740"></a><span class="lineno"> 4740</span>&#160; assert(not ref_stack.empty());</div>
<div class="line"><a name="l04741"></a><span class="lineno"> 4741</span>&#160; assert(not keep_stack.empty());</div>
<div class="line"><a name="l04742"></a><span class="lineno"> 4742</span>&#160; ref_stack.pop_back();</div>
<div class="line"><a name="l04743"></a><span class="lineno"> 4743</span>&#160; keep_stack.pop_back();</div>
<div class="line"><a name="l04744"></a><span class="lineno"> 4744</span>&#160; </div>
<div class="line"><a name="l04745"></a><span class="lineno"> 4745</span>&#160; <span class="keywordflow">if</span> (not ref_stack.empty() and ref_stack.back() and ref_stack.back()-&gt;is_object())</div>
<div class="line"><a name="l04746"></a><span class="lineno"> 4746</span>&#160; {</div>
<div class="line"><a name="l04747"></a><span class="lineno"> 4747</span>&#160; <span class="comment">// remove discarded value</span></div>
<div class="line"><a name="l04748"></a><span class="lineno"> 4748</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = ref_stack.back()-&gt;begin(); it != ref_stack.back()-&gt;end(); ++it)</div>
<div class="line"><a name="l04749"></a><span class="lineno"> 4749</span>&#160; {</div>
<div class="line"><a name="l04750"></a><span class="lineno"> 4750</span>&#160; <span class="keywordflow">if</span> (it-&gt;is_discarded())</div>
<div class="line"><a name="l04751"></a><span class="lineno"> 4751</span>&#160; {</div>
<div class="line"><a name="l04752"></a><span class="lineno"> 4752</span>&#160; ref_stack.back()-&gt;erase(it);</div>
<div class="line"><a name="l04753"></a><span class="lineno"> 4753</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l04754"></a><span class="lineno"> 4754</span>&#160; }</div>
<div class="line"><a name="l04755"></a><span class="lineno"> 4755</span>&#160; }</div>
<div class="line"><a name="l04756"></a><span class="lineno"> 4756</span>&#160; }</div>
<div class="line"><a name="l04757"></a><span class="lineno"> 4757</span>&#160; </div>
<div class="line"><a name="l04758"></a><span class="lineno"> 4758</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04759"></a><span class="lineno"> 4759</span>&#160; }</div>
<div class="line"><a name="l04760"></a><span class="lineno"> 4760</span>&#160; </div>
<div class="line"><a name="l04761"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5255b98ba8282e3625968f91cff9d3d0"> 4761</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5255b98ba8282e3625968f91cff9d3d0">start_array</a>(std::size_t len)</div>
<div class="line"><a name="l04762"></a><span class="lineno"> 4762</span>&#160; {</div>
<div class="line"><a name="l04763"></a><span class="lineno"> 4763</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> keep = callback(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(ref_stack.size()), parse_event_t::array_start, discarded);</div>
<div class="line"><a name="l04764"></a><span class="lineno"> 4764</span>&#160; keep_stack.push_back(keep);</div>
<div class="line"><a name="l04765"></a><span class="lineno"> 4765</span>&#160; </div>
<div class="line"><a name="l04766"></a><span class="lineno"> 4766</span>&#160; <span class="keyword">auto</span> val = handle_value(BasicJsonType::value_t::array, <span class="keyword">true</span>);</div>
<div class="line"><a name="l04767"></a><span class="lineno"> 4767</span>&#160; ref_stack.push_back(val.second);</div>
<div class="line"><a name="l04768"></a><span class="lineno"> 4768</span>&#160; </div>
<div class="line"><a name="l04769"></a><span class="lineno"> 4769</span>&#160; <span class="comment">// check array limit</span></div>
<div class="line"><a name="l04770"></a><span class="lineno"> 4770</span>&#160; <span class="keywordflow">if</span> (ref_stack.back() and <a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(len != std::size_t(-1) and len &gt; ref_stack.back()-&gt;max_size()))</div>
<div class="line"><a name="l04771"></a><span class="lineno"> 4771</span>&#160; {</div>
<div class="line"><a name="l04772"></a><span class="lineno"> 4772</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(408, <span class="stringliteral">&quot;excessive array size: &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(len)));</div>
<div class="line"><a name="l04773"></a><span class="lineno"> 4773</span>&#160; }</div>
<div class="line"><a name="l04774"></a><span class="lineno"> 4774</span>&#160; </div>
<div class="line"><a name="l04775"></a><span class="lineno"> 4775</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04776"></a><span class="lineno"> 4776</span>&#160; }</div>
<div class="line"><a name="l04777"></a><span class="lineno"> 4777</span>&#160; </div>
<div class="line"><a name="l04778"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aa64e7a650952174037d32028de582c12"> 4778</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aa64e7a650952174037d32028de582c12">end_array</a>()</div>
<div class="line"><a name="l04779"></a><span class="lineno"> 4779</span>&#160; {</div>
<div class="line"><a name="l04780"></a><span class="lineno"> 4780</span>&#160; <span class="keywordtype">bool</span> keep = <span class="keyword">true</span>;</div>
<div class="line"><a name="l04781"></a><span class="lineno"> 4781</span>&#160; </div>
<div class="line"><a name="l04782"></a><span class="lineno"> 4782</span>&#160; <span class="keywordflow">if</span> (ref_stack.back())</div>
<div class="line"><a name="l04783"></a><span class="lineno"> 4783</span>&#160; {</div>
<div class="line"><a name="l04784"></a><span class="lineno"> 4784</span>&#160; keep = callback(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back());</div>
<div class="line"><a name="l04785"></a><span class="lineno"> 4785</span>&#160; <span class="keywordflow">if</span> (not keep)</div>
<div class="line"><a name="l04786"></a><span class="lineno"> 4786</span>&#160; {</div>
<div class="line"><a name="l04787"></a><span class="lineno"> 4787</span>&#160; <span class="comment">// discard array</span></div>
<div class="line"><a name="l04788"></a><span class="lineno"> 4788</span>&#160; *ref_stack.back() = discarded;</div>
<div class="line"><a name="l04789"></a><span class="lineno"> 4789</span>&#160; }</div>
<div class="line"><a name="l04790"></a><span class="lineno"> 4790</span>&#160; }</div>
<div class="line"><a name="l04791"></a><span class="lineno"> 4791</span>&#160; </div>
<div class="line"><a name="l04792"></a><span class="lineno"> 4792</span>&#160; assert(not ref_stack.empty());</div>
<div class="line"><a name="l04793"></a><span class="lineno"> 4793</span>&#160; assert(not keep_stack.empty());</div>
<div class="line"><a name="l04794"></a><span class="lineno"> 4794</span>&#160; ref_stack.pop_back();</div>
<div class="line"><a name="l04795"></a><span class="lineno"> 4795</span>&#160; keep_stack.pop_back();</div>
<div class="line"><a name="l04796"></a><span class="lineno"> 4796</span>&#160; </div>
<div class="line"><a name="l04797"></a><span class="lineno"> 4797</span>&#160; <span class="comment">// remove discarded value</span></div>
<div class="line"><a name="l04798"></a><span class="lineno"> 4798</span>&#160; <span class="keywordflow">if</span> (not keep and not ref_stack.empty() and ref_stack.back()-&gt;is_array())</div>
<div class="line"><a name="l04799"></a><span class="lineno"> 4799</span>&#160; {</div>
<div class="line"><a name="l04800"></a><span class="lineno"> 4800</span>&#160; ref_stack.back()-&gt;m_value.array-&gt;pop_back();</div>
<div class="line"><a name="l04801"></a><span class="lineno"> 4801</span>&#160; }</div>
<div class="line"><a name="l04802"></a><span class="lineno"> 4802</span>&#160; </div>
<div class="line"><a name="l04803"></a><span class="lineno"> 4803</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04804"></a><span class="lineno"> 4804</span>&#160; }</div>
<div class="line"><a name="l04805"></a><span class="lineno"> 4805</span>&#160; </div>
<div class="line"><a name="l04806"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6e64f0b59c9150cde974e182d5ecab"> 4806</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6e64f0b59c9150cde974e182d5ecab">parse_error</a>(std::size_t <span class="comment">/*unused*/</span>, <span class="keyword">const</span> std::string&amp; <span class="comment">/*unused*/</span>,</div>
<div class="line"><a name="l04807"></a><span class="lineno"> 4807</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">detail::exception</a>&amp; ex)</div>
<div class="line"><a name="l04808"></a><span class="lineno"> 4808</span>&#160; {</div>
<div class="line"><a name="l04809"></a><span class="lineno"> 4809</span>&#160; errored = <span class="keyword">true</span>;</div>
<div class="line"><a name="l04810"></a><span class="lineno"> 4810</span>&#160; <span class="keywordflow">if</span> (allow_exceptions)</div>
<div class="line"><a name="l04811"></a><span class="lineno"> 4811</span>&#160; {</div>
<div class="line"><a name="l04812"></a><span class="lineno"> 4812</span>&#160; <span class="comment">// determine the proper exception type from the id</span></div>
<div class="line"><a name="l04813"></a><span class="lineno"> 4813</span>&#160; <span class="keywordflow">switch</span> ((ex.<a class="code" href="classnlohmann_1_1detail_1_1exception.html#a0d4589a3fb54e81646d986c05efa3b9a">id</a> / 100) % 100)</div>
<div class="line"><a name="l04814"></a><span class="lineno"> 4814</span>&#160; {</div>
<div class="line"><a name="l04815"></a><span class="lineno"> 4815</span>&#160; <span class="keywordflow">case</span> 1:</div>
<div class="line"><a name="l04816"></a><span class="lineno"> 4816</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">detail::parse_error</a>*<span class="keyword">&gt;</span>(&amp;ex));</div>
<div class="line"><a name="l04817"></a><span class="lineno"> 4817</span>&#160; <span class="keywordflow">case</span> 4:</div>
<div class="line"><a name="l04818"></a><span class="lineno"> 4818</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">detail::out_of_range</a>*<span class="keyword">&gt;</span>(&amp;ex));</div>
<div class="line"><a name="l04819"></a><span class="lineno"> 4819</span>&#160; <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a name="l04820"></a><span class="lineno"> 4820</span>&#160; <span class="keywordflow">case</span> 2:</div>
<div class="line"><a name="l04821"></a><span class="lineno"> 4821</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">detail::invalid_iterator</a>*<span class="keyword">&gt;</span>(&amp;ex));</div>
<div class="line"><a name="l04822"></a><span class="lineno"> 4822</span>&#160; <span class="keywordflow">case</span> 3:</div>
<div class="line"><a name="l04823"></a><span class="lineno"> 4823</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1type__error.html">detail::type_error</a>*<span class="keyword">&gt;</span>(&amp;ex));</div>
<div class="line"><a name="l04824"></a><span class="lineno"> 4824</span>&#160; <span class="keywordflow">case</span> 5:</div>
<div class="line"><a name="l04825"></a><span class="lineno"> 4825</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1other__error.html">detail::other_error</a>*<span class="keyword">&gt;</span>(&amp;ex));</div>
<div class="line"><a name="l04826"></a><span class="lineno"> 4826</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l04827"></a><span class="lineno"> 4827</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l04828"></a><span class="lineno"> 4828</span>&#160; <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a name="l04829"></a><span class="lineno"> 4829</span>&#160; }</div>
<div class="line"><a name="l04830"></a><span class="lineno"> 4830</span>&#160; }</div>
<div class="line"><a name="l04831"></a><span class="lineno"> 4831</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l04832"></a><span class="lineno"> 4832</span>&#160; }</div>
<div class="line"><a name="l04833"></a><span class="lineno"> 4833</span>&#160; </div>
<div class="line"><a name="l04834"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a167fd9bf385d3d08bcbbba8a927c0eff"> 4834</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a167fd9bf385d3d08bcbbba8a927c0eff">is_errored</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l04835"></a><span class="lineno"> 4835</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l04836"></a><span class="lineno"> 4836</span>&#160; <span class="keywordflow">return</span> errored;</div>
<div class="line"><a name="l04837"></a><span class="lineno"> 4837</span>&#160; }</div>
<div class="line"><a name="l04838"></a><span class="lineno"> 4838</span>&#160; </div>
<div class="line"><a name="l04839"></a><span class="lineno"> 4839</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l04855"></a><span class="lineno"> 4855</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Value&gt;</div>
<div class="line"><a name="l04856"></a><span class="lineno"> 4856</span>&#160; std::pair&lt;bool, BasicJsonType*&gt; handle_value(Value&amp;&amp; v, <span class="keyword">const</span> <span class="keywordtype">bool</span> skip_callback = <span class="keyword">false</span>)</div>
<div class="line"><a name="l04857"></a><span class="lineno"> 4857</span>&#160; {</div>
<div class="line"><a name="l04858"></a><span class="lineno"> 4858</span>&#160; assert(not keep_stack.empty());</div>
<div class="line"><a name="l04859"></a><span class="lineno"> 4859</span>&#160; </div>
<div class="line"><a name="l04860"></a><span class="lineno"> 4860</span>&#160; <span class="comment">// do not handle this value if we know it would be added to a discarded</span></div>
<div class="line"><a name="l04861"></a><span class="lineno"> 4861</span>&#160; <span class="comment">// container</span></div>
<div class="line"><a name="l04862"></a><span class="lineno"> 4862</span>&#160; <span class="keywordflow">if</span> (not keep_stack.back())</div>
<div class="line"><a name="l04863"></a><span class="lineno"> 4863</span>&#160; {</div>
<div class="line"><a name="l04864"></a><span class="lineno"> 4864</span>&#160; <span class="keywordflow">return</span> {<span class="keyword">false</span>, <span class="keyword">nullptr</span>};</div>
<div class="line"><a name="l04865"></a><span class="lineno"> 4865</span>&#160; }</div>
<div class="line"><a name="l04866"></a><span class="lineno"> 4866</span>&#160; </div>
<div class="line"><a name="l04867"></a><span class="lineno"> 4867</span>&#160; <span class="comment">// create value</span></div>
<div class="line"><a name="l04868"></a><span class="lineno"> 4868</span>&#160; <span class="keyword">auto</span> value = BasicJsonType(std::forward&lt;Value&gt;(v));</div>
<div class="line"><a name="l04869"></a><span class="lineno"> 4869</span>&#160; </div>
<div class="line"><a name="l04870"></a><span class="lineno"> 4870</span>&#160; <span class="comment">// check callback</span></div>
<div class="line"><a name="l04871"></a><span class="lineno"> 4871</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> keep = skip_callback or callback(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(ref_stack.size()), parse_event_t::value, value);</div>
<div class="line"><a name="l04872"></a><span class="lineno"> 4872</span>&#160; </div>
<div class="line"><a name="l04873"></a><span class="lineno"> 4873</span>&#160; <span class="comment">// do not handle this value if we just learnt it shall be discarded</span></div>
<div class="line"><a name="l04874"></a><span class="lineno"> 4874</span>&#160; <span class="keywordflow">if</span> (not keep)</div>
<div class="line"><a name="l04875"></a><span class="lineno"> 4875</span>&#160; {</div>
<div class="line"><a name="l04876"></a><span class="lineno"> 4876</span>&#160; <span class="keywordflow">return</span> {<span class="keyword">false</span>, <span class="keyword">nullptr</span>};</div>
<div class="line"><a name="l04877"></a><span class="lineno"> 4877</span>&#160; }</div>
<div class="line"><a name="l04878"></a><span class="lineno"> 4878</span>&#160; </div>
<div class="line"><a name="l04879"></a><span class="lineno"> 4879</span>&#160; <span class="keywordflow">if</span> (ref_stack.empty())</div>
<div class="line"><a name="l04880"></a><span class="lineno"> 4880</span>&#160; {</div>
<div class="line"><a name="l04881"></a><span class="lineno"> 4881</span>&#160; root = std::move(value);</div>
<div class="line"><a name="l04882"></a><span class="lineno"> 4882</span>&#160; <span class="keywordflow">return</span> {<span class="keyword">true</span>, &amp;root};</div>
<div class="line"><a name="l04883"></a><span class="lineno"> 4883</span>&#160; }</div>
<div class="line"><a name="l04884"></a><span class="lineno"> 4884</span>&#160; </div>
<div class="line"><a name="l04885"></a><span class="lineno"> 4885</span>&#160; <span class="comment">// skip this value if we already decided to skip the parent</span></div>
<div class="line"><a name="l04886"></a><span class="lineno"> 4886</span>&#160; <span class="comment">// (https://github.com/nlohmann/json/issues/971#issuecomment-413678360)</span></div>
<div class="line"><a name="l04887"></a><span class="lineno"> 4887</span>&#160; <span class="keywordflow">if</span> (not ref_stack.back())</div>
<div class="line"><a name="l04888"></a><span class="lineno"> 4888</span>&#160; {</div>
<div class="line"><a name="l04889"></a><span class="lineno"> 4889</span>&#160; <span class="keywordflow">return</span> {<span class="keyword">false</span>, <span class="keyword">nullptr</span>};</div>
<div class="line"><a name="l04890"></a><span class="lineno"> 4890</span>&#160; }</div>
<div class="line"><a name="l04891"></a><span class="lineno"> 4891</span>&#160; </div>
<div class="line"><a name="l04892"></a><span class="lineno"> 4892</span>&#160; <span class="comment">// we now only expect arrays and objects</span></div>
<div class="line"><a name="l04893"></a><span class="lineno"> 4893</span>&#160; assert(ref_stack.back()-&gt;is_array() or ref_stack.back()-&gt;is_object());</div>
<div class="line"><a name="l04894"></a><span class="lineno"> 4894</span>&#160; </div>
<div class="line"><a name="l04895"></a><span class="lineno"> 4895</span>&#160; <span class="comment">// array</span></div>
<div class="line"><a name="l04896"></a><span class="lineno"> 4896</span>&#160; <span class="keywordflow">if</span> (ref_stack.back()-&gt;is_array())</div>
<div class="line"><a name="l04897"></a><span class="lineno"> 4897</span>&#160; {</div>
<div class="line"><a name="l04898"></a><span class="lineno"> 4898</span>&#160; ref_stack.back()-&gt;m_value.array-&gt;push_back(std::move(value));</div>
<div class="line"><a name="l04899"></a><span class="lineno"> 4899</span>&#160; <span class="keywordflow">return</span> {<span class="keyword">true</span>, &amp;(ref_stack.back()-&gt;m_value.array-&gt;back())};</div>
<div class="line"><a name="l04900"></a><span class="lineno"> 4900</span>&#160; }</div>
<div class="line"><a name="l04901"></a><span class="lineno"> 4901</span>&#160; </div>
<div class="line"><a name="l04902"></a><span class="lineno"> 4902</span>&#160; <span class="comment">// object</span></div>
<div class="line"><a name="l04903"></a><span class="lineno"> 4903</span>&#160; assert(ref_stack.back()-&gt;is_object());</div>
<div class="line"><a name="l04904"></a><span class="lineno"> 4904</span>&#160; <span class="comment">// check if we should store an element for the current key</span></div>
<div class="line"><a name="l04905"></a><span class="lineno"> 4905</span>&#160; assert(not key_keep_stack.empty());</div>
<div class="line"><a name="l04906"></a><span class="lineno"> 4906</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> store_element = key_keep_stack.back();</div>
<div class="line"><a name="l04907"></a><span class="lineno"> 4907</span>&#160; key_keep_stack.pop_back();</div>
<div class="line"><a name="l04908"></a><span class="lineno"> 4908</span>&#160; </div>
<div class="line"><a name="l04909"></a><span class="lineno"> 4909</span>&#160; <span class="keywordflow">if</span> (not store_element)</div>
<div class="line"><a name="l04910"></a><span class="lineno"> 4910</span>&#160; {</div>
<div class="line"><a name="l04911"></a><span class="lineno"> 4911</span>&#160; <span class="keywordflow">return</span> {<span class="keyword">false</span>, <span class="keyword">nullptr</span>};</div>
<div class="line"><a name="l04912"></a><span class="lineno"> 4912</span>&#160; }</div>
<div class="line"><a name="l04913"></a><span class="lineno"> 4913</span>&#160; </div>
<div class="line"><a name="l04914"></a><span class="lineno"> 4914</span>&#160; assert(object_element);</div>
<div class="line"><a name="l04915"></a><span class="lineno"> 4915</span>&#160; *object_element = std::move(value);</div>
<div class="line"><a name="l04916"></a><span class="lineno"> 4916</span>&#160; <span class="keywordflow">return</span> {<span class="keyword">true</span>, object_element};</div>
<div class="line"><a name="l04917"></a><span class="lineno"> 4917</span>&#160; }</div>
<div class="line"><a name="l04918"></a><span class="lineno"> 4918</span>&#160; </div>
<div class="line"><a name="l04920"></a><span class="lineno"> 4920</span>&#160; BasicJsonType&amp; root;</div>
<div class="line"><a name="l04922"></a><span class="lineno"> 4922</span>&#160; std::vector&lt;BasicJsonType*&gt; ref_stack {};</div>
<div class="line"><a name="l04924"></a><span class="lineno"> 4924</span>&#160; std::vector&lt;bool&gt; keep_stack {};</div>
<div class="line"><a name="l04926"></a><span class="lineno"> 4926</span>&#160; std::vector&lt;bool&gt; key_keep_stack {};</div>
<div class="line"><a name="l04928"></a><span class="lineno"> 4928</span>&#160; BasicJsonType* object_element = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l04930"></a><span class="lineno"> 4930</span>&#160; <span class="keywordtype">bool</span> errored = <span class="keyword">false</span>;</div>
<div class="line"><a name="l04932"></a><span class="lineno"> 4932</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce">parser_callback_t</a> callback = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l04934"></a><span class="lineno"> 4934</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>;</div>
<div class="line"><a name="l04936"></a><span class="lineno"> 4936</span>&#160; BasicJsonType discarded = BasicJsonType::value_t::discarded;</div>
<div class="line"><a name="l04937"></a><span class="lineno"> 4937</span>&#160;};</div>
<div class="line"><a name="l04938"></a><span class="lineno"> 4938</span>&#160; </div>
<div class="line"><a name="l04939"></a><span class="lineno"> 4939</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l04940"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html"> 4940</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html">json_sax_acceptor</a></div>
<div class="line"><a name="l04941"></a><span class="lineno"> 4941</span>&#160;{</div>
<div class="line"><a name="l04942"></a><span class="lineno"> 4942</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l04943"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a41876b17c0e8bdb55580eaf5e4e2ded8"> 4943</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a41876b17c0e8bdb55580eaf5e4e2ded8">number_integer_t</a> = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l04944"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ae07454608ea6f3cfb765f95e3c850043"> 4944</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ae07454608ea6f3cfb765f95e3c850043">number_unsigned_t</a> = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l04945"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a5502f483fc60a1bcd73e0e46b6ab36e4"> 4945</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a5502f483fc60a1bcd73e0e46b6ab36e4">number_float_t</a> = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l04946"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a"> 4946</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a">string_t</a> = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l04947"></a><span class="lineno"> 4947</span>&#160; </div>
<div class="line"><a name="l04948"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ad7ad55168af6e03ed8b844c94a17b9ce"> 4948</a></span>&#160; <span class="keywordtype">bool</span> <span class="keyword">null</span>()</div>
<div class="line"><a name="l04949"></a><span class="lineno"> 4949</span>&#160; {</div>
<div class="line"><a name="l04950"></a><span class="lineno"> 4950</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04951"></a><span class="lineno"> 4951</span>&#160; }</div>
<div class="line"><a name="l04952"></a><span class="lineno"> 4952</span>&#160; </div>
<div class="line"><a name="l04953"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3f5fe42a9b195de8d251d6d98d5ee92c"> 4953</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3f5fe42a9b195de8d251d6d98d5ee92c">boolean</a>(<span class="keywordtype">bool</span> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l04954"></a><span class="lineno"> 4954</span>&#160; {</div>
<div class="line"><a name="l04955"></a><span class="lineno"> 4955</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04956"></a><span class="lineno"> 4956</span>&#160; }</div>
<div class="line"><a name="l04957"></a><span class="lineno"> 4957</span>&#160; </div>
<div class="line"><a name="l04958"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a976bf4ce6e9a2ffe48f683ddff80af00"> 4958</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a976bf4ce6e9a2ffe48f683ddff80af00">number_integer</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a41876b17c0e8bdb55580eaf5e4e2ded8">number_integer_t</a> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l04959"></a><span class="lineno"> 4959</span>&#160; {</div>
<div class="line"><a name="l04960"></a><span class="lineno"> 4960</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04961"></a><span class="lineno"> 4961</span>&#160; }</div>
<div class="line"><a name="l04962"></a><span class="lineno"> 4962</span>&#160; </div>
<div class="line"><a name="l04963"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ad15b288f3351287edbe289502f595491"> 4963</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ad15b288f3351287edbe289502f595491">number_unsigned</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ae07454608ea6f3cfb765f95e3c850043">number_unsigned_t</a> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l04964"></a><span class="lineno"> 4964</span>&#160; {</div>
<div class="line"><a name="l04965"></a><span class="lineno"> 4965</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04966"></a><span class="lineno"> 4966</span>&#160; }</div>
<div class="line"><a name="l04967"></a><span class="lineno"> 4967</span>&#160; </div>
<div class="line"><a name="l04968"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aebf8800023eb20d472f111f86b189e60"> 4968</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aebf8800023eb20d472f111f86b189e60">number_float</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a5502f483fc60a1bcd73e0e46b6ab36e4">number_float_t</a> <span class="comment">/*unused*/</span>, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a">string_t</a>&amp; <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l04969"></a><span class="lineno"> 4969</span>&#160; {</div>
<div class="line"><a name="l04970"></a><span class="lineno"> 4970</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04971"></a><span class="lineno"> 4971</span>&#160; }</div>
<div class="line"><a name="l04972"></a><span class="lineno"> 4972</span>&#160; </div>
<div class="line"><a name="l04973"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aaa69255e757a6ecc4403a2aa4931fc60"> 4973</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aaa69255e757a6ecc4403a2aa4931fc60">string</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a">string_t</a>&amp; <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l04974"></a><span class="lineno"> 4974</span>&#160; {</div>
<div class="line"><a name="l04975"></a><span class="lineno"> 4975</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04976"></a><span class="lineno"> 4976</span>&#160; }</div>
<div class="line"><a name="l04977"></a><span class="lineno"> 4977</span>&#160; </div>
<div class="line"><a name="l04978"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a822bbca11a9fea0aa337018e351755f5"> 4978</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a822bbca11a9fea0aa337018e351755f5">start_object</a>(std::size_t <span class="comment">/*unused*/</span> = std::size_t(-1))</div>
<div class="line"><a name="l04979"></a><span class="lineno"> 4979</span>&#160; {</div>
<div class="line"><a name="l04980"></a><span class="lineno"> 4980</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04981"></a><span class="lineno"> 4981</span>&#160; }</div>
<div class="line"><a name="l04982"></a><span class="lineno"> 4982</span>&#160; </div>
<div class="line"><a name="l04983"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a59e1ea5e9c8d25346a564bf9287a5c2a"> 4983</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a59e1ea5e9c8d25346a564bf9287a5c2a">key</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a">string_t</a>&amp; <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l04984"></a><span class="lineno"> 4984</span>&#160; {</div>
<div class="line"><a name="l04985"></a><span class="lineno"> 4985</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04986"></a><span class="lineno"> 4986</span>&#160; }</div>
<div class="line"><a name="l04987"></a><span class="lineno"> 4987</span>&#160; </div>
<div class="line"><a name="l04988"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a919645fd1827a561a994d70a435e3f19"> 4988</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a919645fd1827a561a994d70a435e3f19">end_object</a>()</div>
<div class="line"><a name="l04989"></a><span class="lineno"> 4989</span>&#160; {</div>
<div class="line"><a name="l04990"></a><span class="lineno"> 4990</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04991"></a><span class="lineno"> 4991</span>&#160; }</div>
<div class="line"><a name="l04992"></a><span class="lineno"> 4992</span>&#160; </div>
<div class="line"><a name="l04993"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a8238e8090cbb4ed8a22cbc97bfb833a5"> 4993</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a8238e8090cbb4ed8a22cbc97bfb833a5">start_array</a>(std::size_t <span class="comment">/*unused*/</span> = std::size_t(-1))</div>
<div class="line"><a name="l04994"></a><span class="lineno"> 4994</span>&#160; {</div>
<div class="line"><a name="l04995"></a><span class="lineno"> 4995</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l04996"></a><span class="lineno"> 4996</span>&#160; }</div>
<div class="line"><a name="l04997"></a><span class="lineno"> 4997</span>&#160; </div>
<div class="line"><a name="l04998"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a22ef94ca5476a9563dcaca15b7d6e654"> 4998</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a22ef94ca5476a9563dcaca15b7d6e654">end_array</a>()</div>
<div class="line"><a name="l04999"></a><span class="lineno"> 4999</span>&#160; {</div>
<div class="line"><a name="l05000"></a><span class="lineno"> 5000</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l05001"></a><span class="lineno"> 5001</span>&#160; }</div>
<div class="line"><a name="l05002"></a><span class="lineno"> 5002</span>&#160; </div>
<div class="line"><a name="l05003"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a95bb3e8b6feaa523ecda8106fb5e38e3"> 5003</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a95bb3e8b6feaa523ecda8106fb5e38e3">parse_error</a>(std::size_t <span class="comment">/*unused*/</span>, <span class="keyword">const</span> std::string&amp; <span class="comment">/*unused*/</span>, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">detail::exception</a>&amp; <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l05004"></a><span class="lineno"> 5004</span>&#160; {</div>
<div class="line"><a name="l05005"></a><span class="lineno"> 5005</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05006"></a><span class="lineno"> 5006</span>&#160; }</div>
<div class="line"><a name="l05007"></a><span class="lineno"> 5007</span>&#160;};</div>
<div class="line"><a name="l05008"></a><span class="lineno"> 5008</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l05009"></a><span class="lineno"> 5009</span>&#160; </div>
<div class="line"><a name="l05010"></a><span class="lineno"> 5010</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l05011"></a><span class="lineno"> 5011</span>&#160; </div>
<div class="line"><a name="l05012"></a><span class="lineno"> 5012</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l05013"></a><span class="lineno"> 5013</span>&#160; </div>
<div class="line"><a name="l05014"></a><span class="lineno"> 5014</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/is_sax.hpp&gt;</span></div>
<div class="line"><a name="l05015"></a><span class="lineno"> 5015</span>&#160; </div>
<div class="line"><a name="l05016"></a><span class="lineno"> 5016</span>&#160; </div>
<div class="line"><a name="l05017"></a><span class="lineno"> 5017</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span> <span class="comment">// size_t</span></div>
<div class="line"><a name="l05018"></a><span class="lineno"> 5018</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// declval</span></div>
<div class="line"><a name="l05019"></a><span class="lineno"> 5019</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string</span></div>
<div class="line"><a name="l05020"></a><span class="lineno"> 5020</span>&#160; </div>
<div class="line"><a name="l05021"></a><span class="lineno"> 5021</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/detected.hpp&gt;</span></div>
<div class="line"><a name="l05022"></a><span class="lineno"> 5022</span>&#160; </div>
<div class="line"><a name="l05023"></a><span class="lineno"> 5023</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/type_traits.hpp&gt;</span></div>
<div class="line"><a name="l05024"></a><span class="lineno"> 5024</span>&#160; </div>
<div class="line"><a name="l05025"></a><span class="lineno"> 5025</span>&#160; </div>
<div class="line"><a name="l05026"></a><span class="lineno"> 5026</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l05027"></a><span class="lineno"> 5027</span>&#160;{</div>
<div class="line"><a name="l05028"></a><span class="lineno"> 5028</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l05029"></a><span class="lineno"> 5029</span>&#160;{</div>
<div class="line"><a name="l05030"></a><span class="lineno"> 5030</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l05031"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ac1b4e524746bf8b790b2b776048b93c4"> 5031</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#ac1b4e524746bf8b790b2b776048b93c4">null_function_t</a> = decltype(std::declval&lt;T&amp;&gt;().<span class="keyword">null</span>());</div>
<div class="line"><a name="l05032"></a><span class="lineno"> 5032</span>&#160; </div>
<div class="line"><a name="l05033"></a><span class="lineno"> 5033</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l05034"></a><span class="lineno"> 5034</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a45ec87326503b8884b664a9ef23a6c99">boolean_function_t</a> =</div>
<div class="line"><a name="l05035"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a45ec87326503b8884b664a9ef23a6c99"> 5035</a></span>&#160; decltype(std::declval&lt;T&amp;&gt;().<span class="keywordtype">boolean</span>(std::declval&lt;bool&gt;()));</div>
<div class="line"><a name="l05036"></a><span class="lineno"> 5036</span>&#160; </div>
<div class="line"><a name="l05037"></a><span class="lineno"> 5037</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> Integer&gt;</div>
<div class="line"><a name="l05038"></a><span class="lineno"> 5038</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0">number_integer_function_t</a> =</div>
<div class="line"><a name="l05039"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0"> 5039</a></span>&#160; decltype(std::declval&lt;T&amp;&gt;().<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">number_integer</a>(std::declval&lt;Integer&gt;()));</div>
<div class="line"><a name="l05040"></a><span class="lineno"> 5040</span>&#160; </div>
<div class="line"><a name="l05041"></a><span class="lineno"> 5041</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> Un<span class="keywordtype">signed</span>&gt;</div>
<div class="line"><a name="l05042"></a><span class="lineno"> 5042</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913">number_unsigned_function_t</a> =</div>
<div class="line"><a name="l05043"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913"> 5043</a></span>&#160; decltype(std::declval&lt;T&amp;&gt;().<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">number_unsigned</a>(std::declval&lt;Unsigned&gt;()));</div>
<div class="line"><a name="l05044"></a><span class="lineno"> 5044</span>&#160; </div>
<div class="line"><a name="l05045"></a><span class="lineno"> 5045</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> Float, <span class="keyword">typename</span> String&gt;</div>
<div class="line"><a name="l05046"></a><span class="lineno"> 5046</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4">number_float_function_t</a> = decltype(std::declval&lt;T&amp;&gt;().<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">number_float</a>(</div>
<div class="line"><a name="l05047"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4"> 5047</a></span>&#160; std::declval&lt;Float&gt;(), std::declval&lt;const String&amp;&gt;()));</div>
<div class="line"><a name="l05048"></a><span class="lineno"> 5048</span>&#160; </div>
<div class="line"><a name="l05049"></a><span class="lineno"> 5049</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> String&gt;</div>
<div class="line"><a name="l05050"></a><span class="lineno"> 5050</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a27c3fc3bd42ac406f763184aa8ae4cb0">string_function_t</a> =</div>
<div class="line"><a name="l05051"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a27c3fc3bd42ac406f763184aa8ae4cb0"> 5051</a></span>&#160; decltype(std::declval&lt;T&amp;&gt;().<span class="keywordtype">string</span>(std::declval&lt;String&amp;&gt;()));</div>
<div class="line"><a name="l05052"></a><span class="lineno"> 5052</span>&#160; </div>
<div class="line"><a name="l05053"></a><span class="lineno"> 5053</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l05054"></a><span class="lineno"> 5054</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5fff1e6dcaabd367d9b1109a5682f9d4">start_object_function_t</a> =</div>
<div class="line"><a name="l05055"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5fff1e6dcaabd367d9b1109a5682f9d4"> 5055</a></span>&#160; decltype(std::declval&lt;T&amp;&gt;().start_object(std::declval&lt;std::size_t&gt;()));</div>
<div class="line"><a name="l05056"></a><span class="lineno"> 5056</span>&#160; </div>
<div class="line"><a name="l05057"></a><span class="lineno"> 5057</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> String&gt;</div>
<div class="line"><a name="l05058"></a><span class="lineno"> 5058</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a44869ca9f422b260625d78e4e8121559">key_function_t</a> =</div>
<div class="line"><a name="l05059"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a44869ca9f422b260625d78e4e8121559"> 5059</a></span>&#160; decltype(std::declval&lt;T&amp;&gt;().key(std::declval&lt;String&amp;&gt;()));</div>
<div class="line"><a name="l05060"></a><span class="lineno"> 5060</span>&#160; </div>
<div class="line"><a name="l05061"></a><span class="lineno"> 5061</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l05062"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#af52d6d2521c386998ae940d118182ebc"> 5062</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#af52d6d2521c386998ae940d118182ebc">end_object_function_t</a> = decltype(std::declval&lt;T&amp;&gt;().end_object());</div>
<div class="line"><a name="l05063"></a><span class="lineno"> 5063</span>&#160; </div>
<div class="line"><a name="l05064"></a><span class="lineno"> 5064</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l05065"></a><span class="lineno"> 5065</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a80273cecc45765d7b2826ec931fbffdd">start_array_function_t</a> =</div>
<div class="line"><a name="l05066"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a80273cecc45765d7b2826ec931fbffdd"> 5066</a></span>&#160; decltype(std::declval&lt;T&amp;&gt;().start_array(std::declval&lt;std::size_t&gt;()));</div>
<div class="line"><a name="l05067"></a><span class="lineno"> 5067</span>&#160; </div>
<div class="line"><a name="l05068"></a><span class="lineno"> 5068</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l05069"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aec53c029383b34a72182210e58fadb79"> 5069</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#aec53c029383b34a72182210e58fadb79">end_array_function_t</a> = decltype(std::declval&lt;T&amp;&gt;().end_array());</div>
<div class="line"><a name="l05070"></a><span class="lineno"> 5070</span>&#160; </div>
<div class="line"><a name="l05071"></a><span class="lineno"> 5071</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> Exception&gt;</div>
<div class="line"><a name="l05072"></a><span class="lineno"> 5072</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a264d4d58bc1fd82bcc7bf6bf73d6acad">parse_error_function_t</a> = decltype(std::declval&lt;T&amp;&gt;().<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a>(</div>
<div class="line"><a name="l05073"></a><span class="lineno"> 5073</span>&#160; std::declval&lt;std::size_t&gt;(), std::declval&lt;const std::string&amp;&gt;(),</div>
<div class="line"><a name="l05074"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a264d4d58bc1fd82bcc7bf6bf73d6acad"> 5074</a></span>&#160; std::declval&lt;const Exception&amp;&gt;()));</div>
<div class="line"><a name="l05075"></a><span class="lineno"> 5075</span>&#160; </div>
<div class="line"><a name="l05076"></a><span class="lineno"> 5076</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SAX, <span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l05077"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__sax.html"> 5077</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__sax.html">is_sax</a></div>
<div class="line"><a name="l05078"></a><span class="lineno"> 5078</span>&#160;{</div>
<div class="line"><a name="l05079"></a><span class="lineno"> 5079</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l05080"></a><span class="lineno"> 5080</span>&#160; static_assert(<a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json&lt;BasicJsonType&gt;::value</a>,</div>
<div class="line"><a name="l05081"></a><span class="lineno"> 5081</span>&#160; <span class="stringliteral">&quot;BasicJsonType must be of type basic_json&lt;...&gt;&quot;</span>);</div>
<div class="line"><a name="l05082"></a><span class="lineno"> 5082</span>&#160; </div>
<div class="line"><a name="l05083"></a><span class="lineno"> 5083</span>&#160; <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l05084"></a><span class="lineno"> 5084</span>&#160; <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l05085"></a><span class="lineno"> 5085</span>&#160; <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l05086"></a><span class="lineno"> 5086</span>&#160; <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l05087"></a><span class="lineno"> 5087</span>&#160; <span class="keyword">using</span> exception_t = <span class="keyword">typename</span> BasicJsonType::exception;</div>
<div class="line"><a name="l05088"></a><span class="lineno"> 5088</span>&#160; </div>
<div class="line"><a name="l05089"></a><span class="lineno"> 5089</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l05090"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc"> 5090</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc">value</a> =</div>
<div class="line"><a name="l05091"></a><span class="lineno"> 5091</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, null_function_t, SAX&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l05092"></a><span class="lineno"> 5092</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, boolean_function_t, SAX&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l05093"></a><span class="lineno"> 5093</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;bool, <a class="code" href="namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0">number_integer_function_t</a>, SAX,</div>
<div class="line"><a name="l05094"></a><span class="lineno"> 5094</span>&#160; number_integer_t&gt;<a class="code" href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc">::value</a> &amp;&amp;</div>
<div class="line"><a name="l05095"></a><span class="lineno"> 5095</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;bool, <a class="code" href="namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913">number_unsigned_function_t</a>, SAX,</div>
<div class="line"><a name="l05096"></a><span class="lineno"> 5096</span>&#160; number_unsigned_t&gt;<a class="code" href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc">::value</a> &amp;&amp;</div>
<div class="line"><a name="l05097"></a><span class="lineno"> 5097</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;bool, <a class="code" href="namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4">number_float_function_t</a>, SAX, number_float_t,</div>
<div class="line"><a name="l05098"></a><span class="lineno"> 5098</span>&#160; string_t&gt;<a class="code" href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc">::value</a> &amp;&amp;</div>
<div class="line"><a name="l05099"></a><span class="lineno"> 5099</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, string_function_t, SAX, string_t&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l05100"></a><span class="lineno"> 5100</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, start_object_function_t, SAX&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l05101"></a><span class="lineno"> 5101</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, key_function_t, SAX, string_t&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l05102"></a><span class="lineno"> 5102</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, end_object_function_t, SAX&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l05103"></a><span class="lineno"> 5103</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, start_array_function_t, SAX&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l05104"></a><span class="lineno"> 5104</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, end_array_function_t, SAX&gt;::value</a> &amp;&amp;</div>
<div class="line"><a name="l05105"></a><span class="lineno"> 5105</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, parse_error_function_t, SAX, exception_t&gt;::value</a>;</div>
<div class="line"><a name="l05106"></a><span class="lineno"> 5106</span>&#160;};</div>
<div class="line"><a name="l05107"></a><span class="lineno"> 5107</span>&#160; </div>
<div class="line"><a name="l05108"></a><span class="lineno"> 5108</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SAX, <span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l05109"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__sax__static__asserts.html"> 5109</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__sax__static__asserts.html">is_sax_static_asserts</a></div>
<div class="line"><a name="l05110"></a><span class="lineno"> 5110</span>&#160;{</div>
<div class="line"><a name="l05111"></a><span class="lineno"> 5111</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l05112"></a><span class="lineno"> 5112</span>&#160; static_assert(<a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json&lt;BasicJsonType&gt;::value</a>,</div>
<div class="line"><a name="l05113"></a><span class="lineno"> 5113</span>&#160; <span class="stringliteral">&quot;BasicJsonType must be of type basic_json&lt;...&gt;&quot;</span>);</div>
<div class="line"><a name="l05114"></a><span class="lineno"> 5114</span>&#160; </div>
<div class="line"><a name="l05115"></a><span class="lineno"> 5115</span>&#160; <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l05116"></a><span class="lineno"> 5116</span>&#160; <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l05117"></a><span class="lineno"> 5117</span>&#160; <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l05118"></a><span class="lineno"> 5118</span>&#160; <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l05119"></a><span class="lineno"> 5119</span>&#160; <span class="keyword">using</span> exception_t = <span class="keyword">typename</span> BasicJsonType::exception;</div>
<div class="line"><a name="l05120"></a><span class="lineno"> 5120</span>&#160; </div>
<div class="line"><a name="l05121"></a><span class="lineno"> 5121</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l05122"></a><span class="lineno"> 5122</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, null_function_t, SAX&gt;::value</a>,</div>
<div class="line"><a name="l05123"></a><span class="lineno"> 5123</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool null()&quot;</span>);</div>
<div class="line"><a name="l05124"></a><span class="lineno"> 5124</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, boolean_function_t, SAX&gt;::value</a>,</div>
<div class="line"><a name="l05125"></a><span class="lineno"> 5125</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool boolean(bool)&quot;</span>);</div>
<div class="line"><a name="l05126"></a><span class="lineno"> 5126</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, boolean_function_t, SAX&gt;::value</a>,</div>
<div class="line"><a name="l05127"></a><span class="lineno"> 5127</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool boolean(bool)&quot;</span>);</div>
<div class="line"><a name="l05128"></a><span class="lineno"> 5128</span>&#160; static_assert(</div>
<div class="line"><a name="l05129"></a><span class="lineno"> 5129</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;<span class="keywordtype">bool</span>, <a class="code" href="namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0">number_integer_function_t</a>, SAX,</div>
<div class="line"><a name="l05130"></a><span class="lineno"> 5130</span>&#160; number_integer_t&gt;::value,</div>
<div class="line"><a name="l05131"></a><span class="lineno"> 5131</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool number_integer(number_integer_t)&quot;</span>);</div>
<div class="line"><a name="l05132"></a><span class="lineno"> 5132</span>&#160; static_assert(</div>
<div class="line"><a name="l05133"></a><span class="lineno"> 5133</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;<span class="keywordtype">bool</span>, <a class="code" href="namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913">number_unsigned_function_t</a>, SAX,</div>
<div class="line"><a name="l05134"></a><span class="lineno"> 5134</span>&#160; number_unsigned_t&gt;::value,</div>
<div class="line"><a name="l05135"></a><span class="lineno"> 5135</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool number_unsigned(number_unsigned_t)&quot;</span>);</div>
<div class="line"><a name="l05136"></a><span class="lineno"> 5136</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a>&lt;<span class="keywordtype">bool</span>, <a class="code" href="namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4">number_float_function_t</a>, SAX,</div>
<div class="line"><a name="l05137"></a><span class="lineno"> 5137</span>&#160; number_float_t, string_t&gt;::value,</div>
<div class="line"><a name="l05138"></a><span class="lineno"> 5138</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool number_float(number_float_t, const string_t&amp;)&quot;</span>);</div>
<div class="line"><a name="l05139"></a><span class="lineno"> 5139</span>&#160; static_assert(</div>
<div class="line"><a name="l05140"></a><span class="lineno"> 5140</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, string_function_t, SAX, string_t&gt;::value</a>,</div>
<div class="line"><a name="l05141"></a><span class="lineno"> 5141</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool string(string_t&amp;)&quot;</span>);</div>
<div class="line"><a name="l05142"></a><span class="lineno"> 5142</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, start_object_function_t, SAX&gt;::value</a>,</div>
<div class="line"><a name="l05143"></a><span class="lineno"> 5143</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool start_object(std::size_t)&quot;</span>);</div>
<div class="line"><a name="l05144"></a><span class="lineno"> 5144</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, key_function_t, SAX, string_t&gt;::value</a>,</div>
<div class="line"><a name="l05145"></a><span class="lineno"> 5145</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool key(string_t&amp;)&quot;</span>);</div>
<div class="line"><a name="l05146"></a><span class="lineno"> 5146</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, end_object_function_t, SAX&gt;::value</a>,</div>
<div class="line"><a name="l05147"></a><span class="lineno"> 5147</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool end_object()&quot;</span>);</div>
<div class="line"><a name="l05148"></a><span class="lineno"> 5148</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, start_array_function_t, SAX&gt;::value</a>,</div>
<div class="line"><a name="l05149"></a><span class="lineno"> 5149</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool start_array(std::size_t)&quot;</span>);</div>
<div class="line"><a name="l05150"></a><span class="lineno"> 5150</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, end_array_function_t, SAX&gt;::value</a>,</div>
<div class="line"><a name="l05151"></a><span class="lineno"> 5151</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool end_array()&quot;</span>);</div>
<div class="line"><a name="l05152"></a><span class="lineno"> 5152</span>&#160; static_assert(</div>
<div class="line"><a name="l05153"></a><span class="lineno"> 5153</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact&lt;bool, parse_error_function_t, SAX, exception_t&gt;::value</a>,</div>
<div class="line"><a name="l05154"></a><span class="lineno"> 5154</span>&#160; <span class="stringliteral">&quot;Missing/invalid function: bool parse_error(std::size_t, const &quot;</span></div>
<div class="line"><a name="l05155"></a><span class="lineno"> 5155</span>&#160; <span class="stringliteral">&quot;std::string&amp;, const exception&amp;)&quot;</span>);</div>
<div class="line"><a name="l05156"></a><span class="lineno"> 5156</span>&#160;};</div>
<div class="line"><a name="l05157"></a><span class="lineno"> 5157</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l05158"></a><span class="lineno"> 5158</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l05159"></a><span class="lineno"> 5159</span>&#160; </div>
<div class="line"><a name="l05160"></a><span class="lineno"> 5160</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/value_t.hpp&gt;</span></div>
<div class="line"><a name="l05161"></a><span class="lineno"> 5161</span>&#160; </div>
<div class="line"><a name="l05162"></a><span class="lineno"> 5162</span>&#160; </div>
<div class="line"><a name="l05163"></a><span class="lineno"> 5163</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l05164"></a><span class="lineno"> 5164</span>&#160;{</div>
<div class="line"><a name="l05165"></a><span class="lineno"> 5165</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l05166"></a><span class="lineno"> 5166</span>&#160;{</div>
<div class="line"><a name="l05168"></a><span class="lineno"> 5168</span>&#160;<span class="comment">// binary reader //</span></div>
<div class="line"><a name="l05170"></a><span class="lineno"> 5170</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l05174"></a><span class="lineno"> 5174</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> SAX = json_sax_dom_parser&lt;BasicJsonType&gt;&gt;</div>
<div class="line"><a name="l05175"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__reader.html"> 5175</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a></div>
<div class="line"><a name="l05176"></a><span class="lineno"> 5176</span>&#160;{</div>
<div class="line"><a name="l05177"></a><span class="lineno"> 5177</span>&#160; <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l05178"></a><span class="lineno"> 5178</span>&#160; <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l05179"></a><span class="lineno"> 5179</span>&#160; <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l05180"></a><span class="lineno"> 5180</span>&#160; <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l05181"></a><span class="lineno"> 5181</span>&#160; <span class="keyword">using</span> json_sax_t = SAX;</div>
<div class="line"><a name="l05182"></a><span class="lineno"> 5182</span>&#160; </div>
<div class="line"><a name="l05183"></a><span class="lineno"> 5183</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l05189"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__reader.html#aed84f0302eb232d3b69f7653bef2337a"> 5189</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#aed84f0302eb232d3b69f7653bef2337a">binary_reader</a>(<a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">input_adapter_t</a> adapter) : ia(<a class="code" href="namespacestd.html">std</a>::move(adapter))</div>
<div class="line"><a name="l05190"></a><span class="lineno"> 5190</span>&#160; {</div>
<div class="line"><a name="l05191"></a><span class="lineno"> 5191</span>&#160; (<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>)<a class="code" href="structnlohmann_1_1detail_1_1is__sax__static__asserts.html">detail::is_sax_static_asserts&lt;SAX, BasicJsonType&gt;</a> {};</div>
<div class="line"><a name="l05192"></a><span class="lineno"> 5192</span>&#160; assert(ia);</div>
<div class="line"><a name="l05193"></a><span class="lineno"> 5193</span>&#160; }</div>
<div class="line"><a name="l05194"></a><span class="lineno"> 5194</span>&#160; </div>
<div class="line"><a name="l05195"></a><span class="lineno"> 5195</span>&#160; <span class="comment">// make class move-only</span></div>
<div class="line"><a name="l05196"></a><span class="lineno"> 5196</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#aed84f0302eb232d3b69f7653bef2337a">binary_reader</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l05197"></a><span class="lineno"> 5197</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#aed84f0302eb232d3b69f7653bef2337a">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l05198"></a><span class="lineno"> 5198</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a87826b833ee7fec146c97233bb0f6ab8">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l05199"></a><span class="lineno"> 5199</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a87826b833ee7fec146c97233bb0f6ab8">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l05200"></a><span class="lineno"> 5200</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a18e0a63e22dbdad5f6964276b81b813a">~binary_reader</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l05201"></a><span class="lineno"> 5201</span>&#160; </div>
<div class="line"><a name="l05209"></a><span class="lineno"> 5209</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
<div class="line"><a name="l05210"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256"> 5210</a></span>&#160; bool <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(const <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format,</div>
<div class="line"><a name="l05211"></a><span class="lineno"> 5211</span>&#160; json_sax_t* sax_,</div>
<div class="line"><a name="l05212"></a><span class="lineno"> 5212</span>&#160; const <span class="keywordtype">bool</span> strict = true)</div>
<div class="line"><a name="l05213"></a><span class="lineno"> 5213</span>&#160; {</div>
<div class="line"><a name="l05214"></a><span class="lineno"> 5214</span>&#160; sax = sax_;</div>
<div class="line"><a name="l05215"></a><span class="lineno"> 5215</span>&#160; <span class="keywordtype">bool</span> result = <span class="keyword">false</span>;</div>
<div class="line"><a name="l05216"></a><span class="lineno"> 5216</span>&#160; </div>
<div class="line"><a name="l05217"></a><span class="lineno"> 5217</span>&#160; <span class="keywordflow">switch</span> (format)</div>
<div class="line"><a name="l05218"></a><span class="lineno"> 5218</span>&#160; {</div>
<div class="line"><a name="l05219"></a><span class="lineno"> 5219</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>:</div>
<div class="line"><a name="l05220"></a><span class="lineno"> 5220</span>&#160; result = parse_bson_internal();</div>
<div class="line"><a name="l05221"></a><span class="lineno"> 5221</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l05222"></a><span class="lineno"> 5222</span>&#160; </div>
<div class="line"><a name="l05223"></a><span class="lineno"> 5223</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>:</div>
<div class="line"><a name="l05224"></a><span class="lineno"> 5224</span>&#160; result = parse_cbor_internal();</div>
<div class="line"><a name="l05225"></a><span class="lineno"> 5225</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l05226"></a><span class="lineno"> 5226</span>&#160; </div>
<div class="line"><a name="l05227"></a><span class="lineno"> 5227</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>:</div>
<div class="line"><a name="l05228"></a><span class="lineno"> 5228</span>&#160; result = parse_msgpack_internal();</div>
<div class="line"><a name="l05229"></a><span class="lineno"> 5229</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l05230"></a><span class="lineno"> 5230</span>&#160; </div>
<div class="line"><a name="l05231"></a><span class="lineno"> 5231</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>:</div>
<div class="line"><a name="l05232"></a><span class="lineno"> 5232</span>&#160; result = parse_ubjson_internal();</div>
<div class="line"><a name="l05233"></a><span class="lineno"> 5233</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l05234"></a><span class="lineno"> 5234</span>&#160; </div>
<div class="line"><a name="l05235"></a><span class="lineno"> 5235</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l05236"></a><span class="lineno"> 5236</span>&#160; assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l05237"></a><span class="lineno"> 5237</span>&#160; }</div>
<div class="line"><a name="l05238"></a><span class="lineno"> 5238</span>&#160; </div>
<div class="line"><a name="l05239"></a><span class="lineno"> 5239</span>&#160; <span class="comment">// strict mode: next byte must be EOF</span></div>
<div class="line"><a name="l05240"></a><span class="lineno"> 5240</span>&#160; <span class="keywordflow">if</span> (result and <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a>)</div>
<div class="line"><a name="l05241"></a><span class="lineno"> 5241</span>&#160; {</div>
<div class="line"><a name="l05242"></a><span class="lineno"> 5242</span>&#160; <span class="keywordflow">if</span> (format == <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>)</div>
<div class="line"><a name="l05243"></a><span class="lineno"> 5243</span>&#160; {</div>
<div class="line"><a name="l05244"></a><span class="lineno"> 5244</span>&#160; get_ignore_noop();</div>
<div class="line"><a name="l05245"></a><span class="lineno"> 5245</span>&#160; }</div>
<div class="line"><a name="l05246"></a><span class="lineno"> 5246</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l05247"></a><span class="lineno"> 5247</span>&#160; {</div>
<div class="line"><a name="l05248"></a><span class="lineno"> 5248</span>&#160; get();</div>
<div class="line"><a name="l05249"></a><span class="lineno"> 5249</span>&#160; }</div>
<div class="line"><a name="l05250"></a><span class="lineno"> 5250</span>&#160; </div>
<div class="line"><a name="l05251"></a><span class="lineno"> 5251</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(current != std::char_traits&lt;char&gt;::eof()))</div>
<div class="line"><a name="l05252"></a><span class="lineno"> 5252</span>&#160; {</div>
<div class="line"><a name="l05253"></a><span class="lineno"> 5253</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, get_token_string(),</div>
<div class="line"><a name="l05254"></a><span class="lineno"> 5254</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(110, chars_read, exception_message(format, <span class="stringliteral">&quot;expected end of input; last byte: 0x&quot;</span> + get_token_string(), <span class="stringliteral">&quot;value&quot;</span>)));</div>
<div class="line"><a name="l05255"></a><span class="lineno"> 5255</span>&#160; }</div>
<div class="line"><a name="l05256"></a><span class="lineno"> 5256</span>&#160; }</div>
<div class="line"><a name="l05257"></a><span class="lineno"> 5257</span>&#160; </div>
<div class="line"><a name="l05258"></a><span class="lineno"> 5258</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l05259"></a><span class="lineno"> 5259</span>&#160; }</div>
<div class="line"><a name="l05260"></a><span class="lineno"> 5260</span>&#160; </div>
<div class="line"><a name="l05268"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__reader.html#a1e31dbfcf9567c8c2d4f0e4eb1b0230a"> 5268</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a1e31dbfcf9567c8c2d4f0e4eb1b0230a">little_endianess</a>(<span class="keywordtype">int</span> num = 1) noexcept</div>
<div class="line"><a name="l05269"></a><span class="lineno"> 5269</span>&#160; {</div>
<div class="line"><a name="l05270"></a><span class="lineno"> 5270</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(&amp;num) == 1;</div>
<div class="line"><a name="l05271"></a><span class="lineno"> 5271</span>&#160; }</div>
<div class="line"><a name="l05272"></a><span class="lineno"> 5272</span>&#160; </div>
<div class="line"><a name="l05273"></a><span class="lineno"> 5273</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l05275"></a><span class="lineno"> 5275</span>&#160; <span class="comment">// BSON //</span></div>
<div class="line"><a name="l05277"></a><span class="lineno"> 5277</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l05282"></a><span class="lineno"> 5282</span>&#160; <span class="keywordtype">bool</span> parse_bson_internal()</div>
<div class="line"><a name="l05283"></a><span class="lineno"> 5283</span>&#160; {</div>
<div class="line"><a name="l05284"></a><span class="lineno"> 5284</span>&#160; std::int32_t document_size;</div>
<div class="line"><a name="l05285"></a><span class="lineno"> 5285</span>&#160; get_number&lt;std::int32_t, true&gt;(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, document_size);</div>
<div class="line"><a name="l05286"></a><span class="lineno"> 5286</span>&#160; </div>
<div class="line"><a name="l05287"></a><span class="lineno"> 5287</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_object(std::size_t(-1))))</div>
<div class="line"><a name="l05288"></a><span class="lineno"> 5288</span>&#160; {</div>
<div class="line"><a name="l05289"></a><span class="lineno"> 5289</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05290"></a><span class="lineno"> 5290</span>&#160; }</div>
<div class="line"><a name="l05291"></a><span class="lineno"> 5291</span>&#160; </div>
<div class="line"><a name="l05292"></a><span class="lineno"> 5292</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_bson_element_list(<span class="comment">/*is_array*/</span><span class="keyword">false</span>)))</div>
<div class="line"><a name="l05293"></a><span class="lineno"> 5293</span>&#160; {</div>
<div class="line"><a name="l05294"></a><span class="lineno"> 5294</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05295"></a><span class="lineno"> 5295</span>&#160; }</div>
<div class="line"><a name="l05296"></a><span class="lineno"> 5296</span>&#160; </div>
<div class="line"><a name="l05297"></a><span class="lineno"> 5297</span>&#160; <span class="keywordflow">return</span> sax-&gt;end_object();</div>
<div class="line"><a name="l05298"></a><span class="lineno"> 5298</span>&#160; }</div>
<div class="line"><a name="l05299"></a><span class="lineno"> 5299</span>&#160; </div>
<div class="line"><a name="l05307"></a><span class="lineno"> 5307</span>&#160; <span class="keywordtype">bool</span> get_bson_cstr(string_t&amp; result)</div>
<div class="line"><a name="l05308"></a><span class="lineno"> 5308</span>&#160; {</div>
<div class="line"><a name="l05309"></a><span class="lineno"> 5309</span>&#160; <span class="keyword">auto</span> out = std::back_inserter(result);</div>
<div class="line"><a name="l05310"></a><span class="lineno"> 5310</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
<div class="line"><a name="l05311"></a><span class="lineno"> 5311</span>&#160; {</div>
<div class="line"><a name="l05312"></a><span class="lineno"> 5312</span>&#160; get();</div>
<div class="line"><a name="l05313"></a><span class="lineno"> 5313</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, <span class="stringliteral">&quot;cstring&quot;</span>)))</div>
<div class="line"><a name="l05314"></a><span class="lineno"> 5314</span>&#160; {</div>
<div class="line"><a name="l05315"></a><span class="lineno"> 5315</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05316"></a><span class="lineno"> 5316</span>&#160; }</div>
<div class="line"><a name="l05317"></a><span class="lineno"> 5317</span>&#160; <span class="keywordflow">if</span> (current == 0x00)</div>
<div class="line"><a name="l05318"></a><span class="lineno"> 5318</span>&#160; {</div>
<div class="line"><a name="l05319"></a><span class="lineno"> 5319</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l05320"></a><span class="lineno"> 5320</span>&#160; }</div>
<div class="line"><a name="l05321"></a><span class="lineno"> 5321</span>&#160; *out++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(current);</div>
<div class="line"><a name="l05322"></a><span class="lineno"> 5322</span>&#160; }</div>
<div class="line"><a name="l05323"></a><span class="lineno"> 5323</span>&#160; </div>
<div class="line"><a name="l05324"></a><span class="lineno"> 5324</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l05325"></a><span class="lineno"> 5325</span>&#160; }</div>
<div class="line"><a name="l05326"></a><span class="lineno"> 5326</span>&#160; </div>
<div class="line"><a name="l05338"></a><span class="lineno"> 5338</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> NumberType&gt;</div>
<div class="line"><a name="l05339"></a><span class="lineno"> 5339</span>&#160; <span class="keywordtype">bool</span> get_bson_string(<span class="keyword">const</span> NumberType len, string_t&amp; result)</div>
<div class="line"><a name="l05340"></a><span class="lineno"> 5340</span>&#160; {</div>
<div class="line"><a name="l05341"></a><span class="lineno"> 5341</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(len &lt; 1))</div>
<div class="line"><a name="l05342"></a><span class="lineno"> 5342</span>&#160; {</div>
<div class="line"><a name="l05343"></a><span class="lineno"> 5343</span>&#160; <span class="keyword">auto</span> last_token = get_token_string();</div>
<div class="line"><a name="l05344"></a><span class="lineno"> 5344</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(112, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, <span class="stringliteral">&quot;string length must be at least 1, is &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(len), <span class="stringliteral">&quot;string&quot;</span>)));</div>
<div class="line"><a name="l05345"></a><span class="lineno"> 5345</span>&#160; }</div>
<div class="line"><a name="l05346"></a><span class="lineno"> 5346</span>&#160; </div>
<div class="line"><a name="l05347"></a><span class="lineno"> 5347</span>&#160; <span class="keywordflow">return</span> get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, len - <span class="keyword">static_cast&lt;</span>NumberType<span class="keyword">&gt;</span>(1), result) and get() != std::char_traits&lt;char&gt;::eof();</div>
<div class="line"><a name="l05348"></a><span class="lineno"> 5348</span>&#160; }</div>
<div class="line"><a name="l05349"></a><span class="lineno"> 5349</span>&#160; </div>
<div class="line"><a name="l05360"></a><span class="lineno"> 5360</span>&#160; <span class="keywordtype">bool</span> parse_bson_element_internal(<span class="keyword">const</span> <span class="keywordtype">int</span> element_type,</div>
<div class="line"><a name="l05361"></a><span class="lineno"> 5361</span>&#160; <span class="keyword">const</span> std::size_t element_type_parse_position)</div>
<div class="line"><a name="l05362"></a><span class="lineno"> 5362</span>&#160; {</div>
<div class="line"><a name="l05363"></a><span class="lineno"> 5363</span>&#160; <span class="keywordflow">switch</span> (element_type)</div>
<div class="line"><a name="l05364"></a><span class="lineno"> 5364</span>&#160; {</div>
<div class="line"><a name="l05365"></a><span class="lineno"> 5365</span>&#160; <span class="keywordflow">case</span> 0x01: <span class="comment">// double</span></div>
<div class="line"><a name="l05366"></a><span class="lineno"> 5366</span>&#160; {</div>
<div class="line"><a name="l05367"></a><span class="lineno"> 5367</span>&#160; <span class="keywordtype">double</span> number;</div>
<div class="line"><a name="l05368"></a><span class="lineno"> 5368</span>&#160; <span class="keywordflow">return</span> get_number&lt;double, true&gt;(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, number) and sax-&gt;number_float(<span class="keyword">static_cast&lt;</span>number_float_t<span class="keyword">&gt;</span>(number), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l05369"></a><span class="lineno"> 5369</span>&#160; }</div>
<div class="line"><a name="l05370"></a><span class="lineno"> 5370</span>&#160; </div>
<div class="line"><a name="l05371"></a><span class="lineno"> 5371</span>&#160; <span class="keywordflow">case</span> 0x02: <span class="comment">// string</span></div>
<div class="line"><a name="l05372"></a><span class="lineno"> 5372</span>&#160; {</div>
<div class="line"><a name="l05373"></a><span class="lineno"> 5373</span>&#160; std::int32_t len;</div>
<div class="line"><a name="l05374"></a><span class="lineno"> 5374</span>&#160; string_t value;</div>
<div class="line"><a name="l05375"></a><span class="lineno"> 5375</span>&#160; <span class="keywordflow">return</span> get_number&lt;std::int32_t, true&gt;(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, len) and get_bson_string(len, value) and sax-&gt;string(value);</div>
<div class="line"><a name="l05376"></a><span class="lineno"> 5376</span>&#160; }</div>
<div class="line"><a name="l05377"></a><span class="lineno"> 5377</span>&#160; </div>
<div class="line"><a name="l05378"></a><span class="lineno"> 5378</span>&#160; <span class="keywordflow">case</span> 0x03: <span class="comment">// object</span></div>
<div class="line"><a name="l05379"></a><span class="lineno"> 5379</span>&#160; {</div>
<div class="line"><a name="l05380"></a><span class="lineno"> 5380</span>&#160; <span class="keywordflow">return</span> parse_bson_internal();</div>
<div class="line"><a name="l05381"></a><span class="lineno"> 5381</span>&#160; }</div>
<div class="line"><a name="l05382"></a><span class="lineno"> 5382</span>&#160; </div>
<div class="line"><a name="l05383"></a><span class="lineno"> 5383</span>&#160; <span class="keywordflow">case</span> 0x04: <span class="comment">// array</span></div>
<div class="line"><a name="l05384"></a><span class="lineno"> 5384</span>&#160; {</div>
<div class="line"><a name="l05385"></a><span class="lineno"> 5385</span>&#160; <span class="keywordflow">return</span> parse_bson_array();</div>
<div class="line"><a name="l05386"></a><span class="lineno"> 5386</span>&#160; }</div>
<div class="line"><a name="l05387"></a><span class="lineno"> 5387</span>&#160; </div>
<div class="line"><a name="l05388"></a><span class="lineno"> 5388</span>&#160; <span class="keywordflow">case</span> 0x08: <span class="comment">// boolean</span></div>
<div class="line"><a name="l05389"></a><span class="lineno"> 5389</span>&#160; {</div>
<div class="line"><a name="l05390"></a><span class="lineno"> 5390</span>&#160; <span class="keywordflow">return</span> sax-&gt;boolean(get() != 0);</div>
<div class="line"><a name="l05391"></a><span class="lineno"> 5391</span>&#160; }</div>
<div class="line"><a name="l05392"></a><span class="lineno"> 5392</span>&#160; </div>
<div class="line"><a name="l05393"></a><span class="lineno"> 5393</span>&#160; <span class="keywordflow">case</span> 0x0A: <span class="comment">// null</span></div>
<div class="line"><a name="l05394"></a><span class="lineno"> 5394</span>&#160; {</div>
<div class="line"><a name="l05395"></a><span class="lineno"> 5395</span>&#160; <span class="keywordflow">return</span> sax-&gt;null();</div>
<div class="line"><a name="l05396"></a><span class="lineno"> 5396</span>&#160; }</div>
<div class="line"><a name="l05397"></a><span class="lineno"> 5397</span>&#160; </div>
<div class="line"><a name="l05398"></a><span class="lineno"> 5398</span>&#160; <span class="keywordflow">case</span> 0x10: <span class="comment">// int32</span></div>
<div class="line"><a name="l05399"></a><span class="lineno"> 5399</span>&#160; {</div>
<div class="line"><a name="l05400"></a><span class="lineno"> 5400</span>&#160; std::int32_t value;</div>
<div class="line"><a name="l05401"></a><span class="lineno"> 5401</span>&#160; <span class="keywordflow">return</span> get_number&lt;std::int32_t, true&gt;(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, value) and sax-&gt;number_integer(value);</div>
<div class="line"><a name="l05402"></a><span class="lineno"> 5402</span>&#160; }</div>
<div class="line"><a name="l05403"></a><span class="lineno"> 5403</span>&#160; </div>
<div class="line"><a name="l05404"></a><span class="lineno"> 5404</span>&#160; <span class="keywordflow">case</span> 0x12: <span class="comment">// int64</span></div>
<div class="line"><a name="l05405"></a><span class="lineno"> 5405</span>&#160; {</div>
<div class="line"><a name="l05406"></a><span class="lineno"> 5406</span>&#160; std::int64_t value;</div>
<div class="line"><a name="l05407"></a><span class="lineno"> 5407</span>&#160; <span class="keywordflow">return</span> get_number&lt;std::int64_t, true&gt;(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, value) and sax-&gt;number_integer(value);</div>
<div class="line"><a name="l05408"></a><span class="lineno"> 5408</span>&#160; }</div>
<div class="line"><a name="l05409"></a><span class="lineno"> 5409</span>&#160; </div>
<div class="line"><a name="l05410"></a><span class="lineno"> 5410</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// anything else not supported (yet)</span></div>
<div class="line"><a name="l05411"></a><span class="lineno"> 5411</span>&#160; {</div>
<div class="line"><a name="l05412"></a><span class="lineno"> 5412</span>&#160; std::array&lt;char, 3&gt; cr{{}};</div>
<div class="line"><a name="l05413"></a><span class="lineno"> 5413</span>&#160; (std::snprintf)(cr.data(), cr.size(), <span class="stringliteral">&quot;%.2hhX&quot;</span>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(element_type));</div>
<div class="line"><a name="l05414"></a><span class="lineno"> 5414</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(element_type_parse_position, std::string(cr.data()), <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(114, element_type_parse_position, <span class="stringliteral">&quot;Unsupported BSON record type 0x&quot;</span> + std::string(cr.data())));</div>
<div class="line"><a name="l05415"></a><span class="lineno"> 5415</span>&#160; }</div>
<div class="line"><a name="l05416"></a><span class="lineno"> 5416</span>&#160; }</div>
<div class="line"><a name="l05417"></a><span class="lineno"> 5417</span>&#160; }</div>
<div class="line"><a name="l05418"></a><span class="lineno"> 5418</span>&#160; </div>
<div class="line"><a name="l05431"></a><span class="lineno"> 5431</span>&#160; <span class="keywordtype">bool</span> parse_bson_element_list(<span class="keyword">const</span> <span class="keywordtype">bool</span> is_array)</div>
<div class="line"><a name="l05432"></a><span class="lineno"> 5432</span>&#160; {</div>
<div class="line"><a name="l05433"></a><span class="lineno"> 5433</span>&#160; string_t key;</div>
<div class="line"><a name="l05434"></a><span class="lineno"> 5434</span>&#160; <span class="keywordflow">while</span> (<span class="keywordtype">int</span> element_type = get())</div>
<div class="line"><a name="l05435"></a><span class="lineno"> 5435</span>&#160; {</div>
<div class="line"><a name="l05436"></a><span class="lineno"> 5436</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, <span class="stringliteral">&quot;element list&quot;</span>)))</div>
<div class="line"><a name="l05437"></a><span class="lineno"> 5437</span>&#160; {</div>
<div class="line"><a name="l05438"></a><span class="lineno"> 5438</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05439"></a><span class="lineno"> 5439</span>&#160; }</div>
<div class="line"><a name="l05440"></a><span class="lineno"> 5440</span>&#160; </div>
<div class="line"><a name="l05441"></a><span class="lineno"> 5441</span>&#160; <span class="keyword">const</span> std::size_t element_type_parse_position = chars_read;</div>
<div class="line"><a name="l05442"></a><span class="lineno"> 5442</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_bson_cstr(key)))</div>
<div class="line"><a name="l05443"></a><span class="lineno"> 5443</span>&#160; {</div>
<div class="line"><a name="l05444"></a><span class="lineno"> 5444</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05445"></a><span class="lineno"> 5445</span>&#160; }</div>
<div class="line"><a name="l05446"></a><span class="lineno"> 5446</span>&#160; </div>
<div class="line"><a name="l05447"></a><span class="lineno"> 5447</span>&#160; <span class="keywordflow">if</span> (not is_array and not sax-&gt;key(key))</div>
<div class="line"><a name="l05448"></a><span class="lineno"> 5448</span>&#160; {</div>
<div class="line"><a name="l05449"></a><span class="lineno"> 5449</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05450"></a><span class="lineno"> 5450</span>&#160; }</div>
<div class="line"><a name="l05451"></a><span class="lineno"> 5451</span>&#160; </div>
<div class="line"><a name="l05452"></a><span class="lineno"> 5452</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_bson_element_internal(element_type, element_type_parse_position)))</div>
<div class="line"><a name="l05453"></a><span class="lineno"> 5453</span>&#160; {</div>
<div class="line"><a name="l05454"></a><span class="lineno"> 5454</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05455"></a><span class="lineno"> 5455</span>&#160; }</div>
<div class="line"><a name="l05456"></a><span class="lineno"> 5456</span>&#160; </div>
<div class="line"><a name="l05457"></a><span class="lineno"> 5457</span>&#160; <span class="comment">// get_bson_cstr only appends</span></div>
<div class="line"><a name="l05458"></a><span class="lineno"> 5458</span>&#160; key.clear();</div>
<div class="line"><a name="l05459"></a><span class="lineno"> 5459</span>&#160; }</div>
<div class="line"><a name="l05460"></a><span class="lineno"> 5460</span>&#160; </div>
<div class="line"><a name="l05461"></a><span class="lineno"> 5461</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l05462"></a><span class="lineno"> 5462</span>&#160; }</div>
<div class="line"><a name="l05463"></a><span class="lineno"> 5463</span>&#160; </div>
<div class="line"><a name="l05468"></a><span class="lineno"> 5468</span>&#160; <span class="keywordtype">bool</span> parse_bson_array()</div>
<div class="line"><a name="l05469"></a><span class="lineno"> 5469</span>&#160; {</div>
<div class="line"><a name="l05470"></a><span class="lineno"> 5470</span>&#160; std::int32_t document_size;</div>
<div class="line"><a name="l05471"></a><span class="lineno"> 5471</span>&#160; get_number&lt;std::int32_t, true&gt;(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, document_size);</div>
<div class="line"><a name="l05472"></a><span class="lineno"> 5472</span>&#160; </div>
<div class="line"><a name="l05473"></a><span class="lineno"> 5473</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_array(std::size_t(-1))))</div>
<div class="line"><a name="l05474"></a><span class="lineno"> 5474</span>&#160; {</div>
<div class="line"><a name="l05475"></a><span class="lineno"> 5475</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05476"></a><span class="lineno"> 5476</span>&#160; }</div>
<div class="line"><a name="l05477"></a><span class="lineno"> 5477</span>&#160; </div>
<div class="line"><a name="l05478"></a><span class="lineno"> 5478</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_bson_element_list(<span class="comment">/*is_array*/</span><span class="keyword">true</span>)))</div>
<div class="line"><a name="l05479"></a><span class="lineno"> 5479</span>&#160; {</div>
<div class="line"><a name="l05480"></a><span class="lineno"> 5480</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05481"></a><span class="lineno"> 5481</span>&#160; }</div>
<div class="line"><a name="l05482"></a><span class="lineno"> 5482</span>&#160; </div>
<div class="line"><a name="l05483"></a><span class="lineno"> 5483</span>&#160; <span class="keywordflow">return</span> sax-&gt;end_array();</div>
<div class="line"><a name="l05484"></a><span class="lineno"> 5484</span>&#160; }</div>
<div class="line"><a name="l05485"></a><span class="lineno"> 5485</span>&#160; </div>
<div class="line"><a name="l05487"></a><span class="lineno"> 5487</span>&#160; <span class="comment">// CBOR //</span></div>
<div class="line"><a name="l05489"></a><span class="lineno"> 5489</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l05497"></a><span class="lineno"> 5497</span>&#160; <span class="keywordtype">bool</span> parse_cbor_internal(<span class="keyword">const</span> <span class="keywordtype">bool</span> get_char = <span class="keyword">true</span>)</div>
<div class="line"><a name="l05498"></a><span class="lineno"> 5498</span>&#160; {</div>
<div class="line"><a name="l05499"></a><span class="lineno"> 5499</span>&#160; <span class="keywordflow">switch</span> (get_char ? get() : current)</div>
<div class="line"><a name="l05500"></a><span class="lineno"> 5500</span>&#160; {</div>
<div class="line"><a name="l05501"></a><span class="lineno"> 5501</span>&#160; <span class="comment">// EOF</span></div>
<div class="line"><a name="l05502"></a><span class="lineno"> 5502</span>&#160; <span class="keywordflow">case</span> std::char_traits&lt;char&gt;::eof():</div>
<div class="line"><a name="l05503"></a><span class="lineno"> 5503</span>&#160; return unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">cbor</a>, <span class="stringliteral">&quot;value&quot;</span>);</div>
<div class="line"><a name="l05504"></a><span class="lineno"> 5504</span>&#160; </div>
<div class="line"><a name="l05505"></a><span class="lineno"> 5505</span>&#160; <span class="comment">// Integer 0x00..0x17 (0..23)</span></div>
<div class="line"><a name="l05506"></a><span class="lineno"> 5506</span>&#160; <span class="keywordflow">case</span> 0x00:</div>
<div class="line"><a name="l05507"></a><span class="lineno"> 5507</span>&#160; <span class="keywordflow">case</span> 0x01:</div>
<div class="line"><a name="l05508"></a><span class="lineno"> 5508</span>&#160; <span class="keywordflow">case</span> 0x02:</div>
<div class="line"><a name="l05509"></a><span class="lineno"> 5509</span>&#160; <span class="keywordflow">case</span> 0x03:</div>
<div class="line"><a name="l05510"></a><span class="lineno"> 5510</span>&#160; <span class="keywordflow">case</span> 0x04:</div>
<div class="line"><a name="l05511"></a><span class="lineno"> 5511</span>&#160; <span class="keywordflow">case</span> 0x05:</div>
<div class="line"><a name="l05512"></a><span class="lineno"> 5512</span>&#160; <span class="keywordflow">case</span> 0x06:</div>
<div class="line"><a name="l05513"></a><span class="lineno"> 5513</span>&#160; <span class="keywordflow">case</span> 0x07:</div>
<div class="line"><a name="l05514"></a><span class="lineno"> 5514</span>&#160; <span class="keywordflow">case</span> 0x08:</div>
<div class="line"><a name="l05515"></a><span class="lineno"> 5515</span>&#160; <span class="keywordflow">case</span> 0x09:</div>
<div class="line"><a name="l05516"></a><span class="lineno"> 5516</span>&#160; <span class="keywordflow">case</span> 0x0A:</div>
<div class="line"><a name="l05517"></a><span class="lineno"> 5517</span>&#160; <span class="keywordflow">case</span> 0x0B:</div>
<div class="line"><a name="l05518"></a><span class="lineno"> 5518</span>&#160; <span class="keywordflow">case</span> 0x0C:</div>
<div class="line"><a name="l05519"></a><span class="lineno"> 5519</span>&#160; <span class="keywordflow">case</span> 0x0D:</div>
<div class="line"><a name="l05520"></a><span class="lineno"> 5520</span>&#160; <span class="keywordflow">case</span> 0x0E:</div>
<div class="line"><a name="l05521"></a><span class="lineno"> 5521</span>&#160; <span class="keywordflow">case</span> 0x0F:</div>
<div class="line"><a name="l05522"></a><span class="lineno"> 5522</span>&#160; <span class="keywordflow">case</span> 0x10:</div>
<div class="line"><a name="l05523"></a><span class="lineno"> 5523</span>&#160; <span class="keywordflow">case</span> 0x11:</div>
<div class="line"><a name="l05524"></a><span class="lineno"> 5524</span>&#160; <span class="keywordflow">case</span> 0x12:</div>
<div class="line"><a name="l05525"></a><span class="lineno"> 5525</span>&#160; <span class="keywordflow">case</span> 0x13:</div>
<div class="line"><a name="l05526"></a><span class="lineno"> 5526</span>&#160; <span class="keywordflow">case</span> 0x14:</div>
<div class="line"><a name="l05527"></a><span class="lineno"> 5527</span>&#160; <span class="keywordflow">case</span> 0x15:</div>
<div class="line"><a name="l05528"></a><span class="lineno"> 5528</span>&#160; <span class="keywordflow">case</span> 0x16:</div>
<div class="line"><a name="l05529"></a><span class="lineno"> 5529</span>&#160; <span class="keywordflow">case</span> 0x17:</div>
<div class="line"><a name="l05530"></a><span class="lineno"> 5530</span>&#160; <span class="keywordflow">return</span> sax-&gt;number_unsigned(<span class="keyword">static_cast&lt;</span>number_unsigned_t<span class="keyword">&gt;</span>(current));</div>
<div class="line"><a name="l05531"></a><span class="lineno"> 5531</span>&#160; </div>
<div class="line"><a name="l05532"></a><span class="lineno"> 5532</span>&#160; <span class="keywordflow">case</span> 0x18: <span class="comment">// Unsigned integer (one-byte uint8_t follows)</span></div>
<div class="line"><a name="l05533"></a><span class="lineno"> 5533</span>&#160; {</div>
<div class="line"><a name="l05534"></a><span class="lineno"> 5534</span>&#160; std::uint8_t number;</div>
<div class="line"><a name="l05535"></a><span class="lineno"> 5535</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax-&gt;number_unsigned(number);</div>
<div class="line"><a name="l05536"></a><span class="lineno"> 5536</span>&#160; }</div>
<div class="line"><a name="l05537"></a><span class="lineno"> 5537</span>&#160; </div>
<div class="line"><a name="l05538"></a><span class="lineno"> 5538</span>&#160; <span class="keywordflow">case</span> 0x19: <span class="comment">// Unsigned integer (two-byte uint16_t follows)</span></div>
<div class="line"><a name="l05539"></a><span class="lineno"> 5539</span>&#160; {</div>
<div class="line"><a name="l05540"></a><span class="lineno"> 5540</span>&#160; std::uint16_t number;</div>
<div class="line"><a name="l05541"></a><span class="lineno"> 5541</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax-&gt;number_unsigned(number);</div>
<div class="line"><a name="l05542"></a><span class="lineno"> 5542</span>&#160; }</div>
<div class="line"><a name="l05543"></a><span class="lineno"> 5543</span>&#160; </div>
<div class="line"><a name="l05544"></a><span class="lineno"> 5544</span>&#160; <span class="keywordflow">case</span> 0x1A: <span class="comment">// Unsigned integer (four-byte uint32_t follows)</span></div>
<div class="line"><a name="l05545"></a><span class="lineno"> 5545</span>&#160; {</div>
<div class="line"><a name="l05546"></a><span class="lineno"> 5546</span>&#160; std::uint32_t number;</div>
<div class="line"><a name="l05547"></a><span class="lineno"> 5547</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax-&gt;number_unsigned(number);</div>
<div class="line"><a name="l05548"></a><span class="lineno"> 5548</span>&#160; }</div>
<div class="line"><a name="l05549"></a><span class="lineno"> 5549</span>&#160; </div>
<div class="line"><a name="l05550"></a><span class="lineno"> 5550</span>&#160; <span class="keywordflow">case</span> 0x1B: <span class="comment">// Unsigned integer (eight-byte uint64_t follows)</span></div>
<div class="line"><a name="l05551"></a><span class="lineno"> 5551</span>&#160; {</div>
<div class="line"><a name="l05552"></a><span class="lineno"> 5552</span>&#160; std::uint64_t number;</div>
<div class="line"><a name="l05553"></a><span class="lineno"> 5553</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax-&gt;number_unsigned(number);</div>
<div class="line"><a name="l05554"></a><span class="lineno"> 5554</span>&#160; }</div>
<div class="line"><a name="l05555"></a><span class="lineno"> 5555</span>&#160; </div>
<div class="line"><a name="l05556"></a><span class="lineno"> 5556</span>&#160; <span class="comment">// Negative integer -1-0x00..-1-0x17 (-1..-24)</span></div>
<div class="line"><a name="l05557"></a><span class="lineno"> 5557</span>&#160; <span class="keywordflow">case</span> 0x20:</div>
<div class="line"><a name="l05558"></a><span class="lineno"> 5558</span>&#160; <span class="keywordflow">case</span> 0x21:</div>
<div class="line"><a name="l05559"></a><span class="lineno"> 5559</span>&#160; <span class="keywordflow">case</span> 0x22:</div>
<div class="line"><a name="l05560"></a><span class="lineno"> 5560</span>&#160; <span class="keywordflow">case</span> 0x23:</div>
<div class="line"><a name="l05561"></a><span class="lineno"> 5561</span>&#160; <span class="keywordflow">case</span> 0x24:</div>
<div class="line"><a name="l05562"></a><span class="lineno"> 5562</span>&#160; <span class="keywordflow">case</span> 0x25:</div>
<div class="line"><a name="l05563"></a><span class="lineno"> 5563</span>&#160; <span class="keywordflow">case</span> 0x26:</div>
<div class="line"><a name="l05564"></a><span class="lineno"> 5564</span>&#160; <span class="keywordflow">case</span> 0x27:</div>
<div class="line"><a name="l05565"></a><span class="lineno"> 5565</span>&#160; <span class="keywordflow">case</span> 0x28:</div>
<div class="line"><a name="l05566"></a><span class="lineno"> 5566</span>&#160; <span class="keywordflow">case</span> 0x29:</div>
<div class="line"><a name="l05567"></a><span class="lineno"> 5567</span>&#160; <span class="keywordflow">case</span> 0x2A:</div>
<div class="line"><a name="l05568"></a><span class="lineno"> 5568</span>&#160; <span class="keywordflow">case</span> 0x2B:</div>
<div class="line"><a name="l05569"></a><span class="lineno"> 5569</span>&#160; <span class="keywordflow">case</span> 0x2C:</div>
<div class="line"><a name="l05570"></a><span class="lineno"> 5570</span>&#160; <span class="keywordflow">case</span> 0x2D:</div>
<div class="line"><a name="l05571"></a><span class="lineno"> 5571</span>&#160; <span class="keywordflow">case</span> 0x2E:</div>
<div class="line"><a name="l05572"></a><span class="lineno"> 5572</span>&#160; <span class="keywordflow">case</span> 0x2F:</div>
<div class="line"><a name="l05573"></a><span class="lineno"> 5573</span>&#160; <span class="keywordflow">case</span> 0x30:</div>
<div class="line"><a name="l05574"></a><span class="lineno"> 5574</span>&#160; <span class="keywordflow">case</span> 0x31:</div>
<div class="line"><a name="l05575"></a><span class="lineno"> 5575</span>&#160; <span class="keywordflow">case</span> 0x32:</div>
<div class="line"><a name="l05576"></a><span class="lineno"> 5576</span>&#160; <span class="keywordflow">case</span> 0x33:</div>
<div class="line"><a name="l05577"></a><span class="lineno"> 5577</span>&#160; <span class="keywordflow">case</span> 0x34:</div>
<div class="line"><a name="l05578"></a><span class="lineno"> 5578</span>&#160; <span class="keywordflow">case</span> 0x35:</div>
<div class="line"><a name="l05579"></a><span class="lineno"> 5579</span>&#160; <span class="keywordflow">case</span> 0x36:</div>
<div class="line"><a name="l05580"></a><span class="lineno"> 5580</span>&#160; <span class="keywordflow">case</span> 0x37:</div>
<div class="line"><a name="l05581"></a><span class="lineno"> 5581</span>&#160; <span class="keywordflow">return</span> sax-&gt;number_integer(<span class="keyword">static_cast&lt;</span>std::int8_t<span class="keyword">&gt;</span>(0x20 - 1 - current));</div>
<div class="line"><a name="l05582"></a><span class="lineno"> 5582</span>&#160; </div>
<div class="line"><a name="l05583"></a><span class="lineno"> 5583</span>&#160; <span class="keywordflow">case</span> 0x38: <span class="comment">// Negative integer (one-byte uint8_t follows)</span></div>
<div class="line"><a name="l05584"></a><span class="lineno"> 5584</span>&#160; {</div>
<div class="line"><a name="l05585"></a><span class="lineno"> 5585</span>&#160; std::uint8_t number;</div>
<div class="line"><a name="l05586"></a><span class="lineno"> 5586</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax-&gt;number_integer(<span class="keyword">static_cast&lt;</span>number_integer_t<span class="keyword">&gt;</span>(-1) - number);</div>
<div class="line"><a name="l05587"></a><span class="lineno"> 5587</span>&#160; }</div>
<div class="line"><a name="l05588"></a><span class="lineno"> 5588</span>&#160; </div>
<div class="line"><a name="l05589"></a><span class="lineno"> 5589</span>&#160; <span class="keywordflow">case</span> 0x39: <span class="comment">// Negative integer -1-n (two-byte uint16_t follows)</span></div>
<div class="line"><a name="l05590"></a><span class="lineno"> 5590</span>&#160; {</div>
<div class="line"><a name="l05591"></a><span class="lineno"> 5591</span>&#160; std::uint16_t number;</div>
<div class="line"><a name="l05592"></a><span class="lineno"> 5592</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax-&gt;number_integer(<span class="keyword">static_cast&lt;</span>number_integer_t<span class="keyword">&gt;</span>(-1) - number);</div>
<div class="line"><a name="l05593"></a><span class="lineno"> 5593</span>&#160; }</div>
<div class="line"><a name="l05594"></a><span class="lineno"> 5594</span>&#160; </div>
<div class="line"><a name="l05595"></a><span class="lineno"> 5595</span>&#160; <span class="keywordflow">case</span> 0x3A: <span class="comment">// Negative integer -1-n (four-byte uint32_t follows)</span></div>
<div class="line"><a name="l05596"></a><span class="lineno"> 5596</span>&#160; {</div>
<div class="line"><a name="l05597"></a><span class="lineno"> 5597</span>&#160; std::uint32_t number;</div>
<div class="line"><a name="l05598"></a><span class="lineno"> 5598</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax-&gt;number_integer(<span class="keyword">static_cast&lt;</span>number_integer_t<span class="keyword">&gt;</span>(-1) - number);</div>
<div class="line"><a name="l05599"></a><span class="lineno"> 5599</span>&#160; }</div>
<div class="line"><a name="l05600"></a><span class="lineno"> 5600</span>&#160; </div>
<div class="line"><a name="l05601"></a><span class="lineno"> 5601</span>&#160; <span class="keywordflow">case</span> 0x3B: <span class="comment">// Negative integer -1-n (eight-byte uint64_t follows)</span></div>
<div class="line"><a name="l05602"></a><span class="lineno"> 5602</span>&#160; {</div>
<div class="line"><a name="l05603"></a><span class="lineno"> 5603</span>&#160; std::uint64_t number;</div>
<div class="line"><a name="l05604"></a><span class="lineno"> 5604</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax-&gt;number_integer(<span class="keyword">static_cast&lt;</span>number_integer_t<span class="keyword">&gt;</span>(-1)</div>
<div class="line"><a name="l05605"></a><span class="lineno"> 5605</span>&#160; - <span class="keyword">static_cast&lt;</span>number_integer_t<span class="keyword">&gt;</span>(number));</div>
<div class="line"><a name="l05606"></a><span class="lineno"> 5606</span>&#160; }</div>
<div class="line"><a name="l05607"></a><span class="lineno"> 5607</span>&#160; </div>
<div class="line"><a name="l05608"></a><span class="lineno"> 5608</span>&#160; <span class="comment">// UTF-8 string (0x00..0x17 bytes follow)</span></div>
<div class="line"><a name="l05609"></a><span class="lineno"> 5609</span>&#160; <span class="keywordflow">case</span> 0x60:</div>
<div class="line"><a name="l05610"></a><span class="lineno"> 5610</span>&#160; <span class="keywordflow">case</span> 0x61:</div>
<div class="line"><a name="l05611"></a><span class="lineno"> 5611</span>&#160; <span class="keywordflow">case</span> 0x62:</div>
<div class="line"><a name="l05612"></a><span class="lineno"> 5612</span>&#160; <span class="keywordflow">case</span> 0x63:</div>
<div class="line"><a name="l05613"></a><span class="lineno"> 5613</span>&#160; <span class="keywordflow">case</span> 0x64:</div>
<div class="line"><a name="l05614"></a><span class="lineno"> 5614</span>&#160; <span class="keywordflow">case</span> 0x65:</div>
<div class="line"><a name="l05615"></a><span class="lineno"> 5615</span>&#160; <span class="keywordflow">case</span> 0x66:</div>
<div class="line"><a name="l05616"></a><span class="lineno"> 5616</span>&#160; <span class="keywordflow">case</span> 0x67:</div>
<div class="line"><a name="l05617"></a><span class="lineno"> 5617</span>&#160; <span class="keywordflow">case</span> 0x68:</div>
<div class="line"><a name="l05618"></a><span class="lineno"> 5618</span>&#160; <span class="keywordflow">case</span> 0x69:</div>
<div class="line"><a name="l05619"></a><span class="lineno"> 5619</span>&#160; <span class="keywordflow">case</span> 0x6A:</div>
<div class="line"><a name="l05620"></a><span class="lineno"> 5620</span>&#160; <span class="keywordflow">case</span> 0x6B:</div>
<div class="line"><a name="l05621"></a><span class="lineno"> 5621</span>&#160; <span class="keywordflow">case</span> 0x6C:</div>
<div class="line"><a name="l05622"></a><span class="lineno"> 5622</span>&#160; <span class="keywordflow">case</span> 0x6D:</div>
<div class="line"><a name="l05623"></a><span class="lineno"> 5623</span>&#160; <span class="keywordflow">case</span> 0x6E:</div>
<div class="line"><a name="l05624"></a><span class="lineno"> 5624</span>&#160; <span class="keywordflow">case</span> 0x6F:</div>
<div class="line"><a name="l05625"></a><span class="lineno"> 5625</span>&#160; <span class="keywordflow">case</span> 0x70:</div>
<div class="line"><a name="l05626"></a><span class="lineno"> 5626</span>&#160; <span class="keywordflow">case</span> 0x71:</div>
<div class="line"><a name="l05627"></a><span class="lineno"> 5627</span>&#160; <span class="keywordflow">case</span> 0x72:</div>
<div class="line"><a name="l05628"></a><span class="lineno"> 5628</span>&#160; <span class="keywordflow">case</span> 0x73:</div>
<div class="line"><a name="l05629"></a><span class="lineno"> 5629</span>&#160; <span class="keywordflow">case</span> 0x74:</div>
<div class="line"><a name="l05630"></a><span class="lineno"> 5630</span>&#160; <span class="keywordflow">case</span> 0x75:</div>
<div class="line"><a name="l05631"></a><span class="lineno"> 5631</span>&#160; <span class="keywordflow">case</span> 0x76:</div>
<div class="line"><a name="l05632"></a><span class="lineno"> 5632</span>&#160; <span class="keywordflow">case</span> 0x77:</div>
<div class="line"><a name="l05633"></a><span class="lineno"> 5633</span>&#160; <span class="keywordflow">case</span> 0x78: <span class="comment">// UTF-8 string (one-byte uint8_t for n follows)</span></div>
<div class="line"><a name="l05634"></a><span class="lineno"> 5634</span>&#160; <span class="keywordflow">case</span> 0x79: <span class="comment">// UTF-8 string (two-byte uint16_t for n follow)</span></div>
<div class="line"><a name="l05635"></a><span class="lineno"> 5635</span>&#160; <span class="keywordflow">case</span> 0x7A: <span class="comment">// UTF-8 string (four-byte uint32_t for n follow)</span></div>
<div class="line"><a name="l05636"></a><span class="lineno"> 5636</span>&#160; <span class="keywordflow">case</span> 0x7B: <span class="comment">// UTF-8 string (eight-byte uint64_t for n follow)</span></div>
<div class="line"><a name="l05637"></a><span class="lineno"> 5637</span>&#160; <span class="keywordflow">case</span> 0x7F: <span class="comment">// UTF-8 string (indefinite length)</span></div>
<div class="line"><a name="l05638"></a><span class="lineno"> 5638</span>&#160; {</div>
<div class="line"><a name="l05639"></a><span class="lineno"> 5639</span>&#160; string_t s;</div>
<div class="line"><a name="l05640"></a><span class="lineno"> 5640</span>&#160; <span class="keywordflow">return</span> get_cbor_string(s) and sax-&gt;string(s);</div>
<div class="line"><a name="l05641"></a><span class="lineno"> 5641</span>&#160; }</div>
<div class="line"><a name="l05642"></a><span class="lineno"> 5642</span>&#160; </div>
<div class="line"><a name="l05643"></a><span class="lineno"> 5643</span>&#160; <span class="comment">// array (0x00..0x17 data items follow)</span></div>
<div class="line"><a name="l05644"></a><span class="lineno"> 5644</span>&#160; <span class="keywordflow">case</span> 0x80:</div>
<div class="line"><a name="l05645"></a><span class="lineno"> 5645</span>&#160; <span class="keywordflow">case</span> 0x81:</div>
<div class="line"><a name="l05646"></a><span class="lineno"> 5646</span>&#160; <span class="keywordflow">case</span> 0x82:</div>
<div class="line"><a name="l05647"></a><span class="lineno"> 5647</span>&#160; <span class="keywordflow">case</span> 0x83:</div>
<div class="line"><a name="l05648"></a><span class="lineno"> 5648</span>&#160; <span class="keywordflow">case</span> 0x84:</div>
<div class="line"><a name="l05649"></a><span class="lineno"> 5649</span>&#160; <span class="keywordflow">case</span> 0x85:</div>
<div class="line"><a name="l05650"></a><span class="lineno"> 5650</span>&#160; <span class="keywordflow">case</span> 0x86:</div>
<div class="line"><a name="l05651"></a><span class="lineno"> 5651</span>&#160; <span class="keywordflow">case</span> 0x87:</div>
<div class="line"><a name="l05652"></a><span class="lineno"> 5652</span>&#160; <span class="keywordflow">case</span> 0x88:</div>
<div class="line"><a name="l05653"></a><span class="lineno"> 5653</span>&#160; <span class="keywordflow">case</span> 0x89:</div>
<div class="line"><a name="l05654"></a><span class="lineno"> 5654</span>&#160; <span class="keywordflow">case</span> 0x8A:</div>
<div class="line"><a name="l05655"></a><span class="lineno"> 5655</span>&#160; <span class="keywordflow">case</span> 0x8B:</div>
<div class="line"><a name="l05656"></a><span class="lineno"> 5656</span>&#160; <span class="keywordflow">case</span> 0x8C:</div>
<div class="line"><a name="l05657"></a><span class="lineno"> 5657</span>&#160; <span class="keywordflow">case</span> 0x8D:</div>
<div class="line"><a name="l05658"></a><span class="lineno"> 5658</span>&#160; <span class="keywordflow">case</span> 0x8E:</div>
<div class="line"><a name="l05659"></a><span class="lineno"> 5659</span>&#160; <span class="keywordflow">case</span> 0x8F:</div>
<div class="line"><a name="l05660"></a><span class="lineno"> 5660</span>&#160; <span class="keywordflow">case</span> 0x90:</div>
<div class="line"><a name="l05661"></a><span class="lineno"> 5661</span>&#160; <span class="keywordflow">case</span> 0x91:</div>
<div class="line"><a name="l05662"></a><span class="lineno"> 5662</span>&#160; <span class="keywordflow">case</span> 0x92:</div>
<div class="line"><a name="l05663"></a><span class="lineno"> 5663</span>&#160; <span class="keywordflow">case</span> 0x93:</div>
<div class="line"><a name="l05664"></a><span class="lineno"> 5664</span>&#160; <span class="keywordflow">case</span> 0x94:</div>
<div class="line"><a name="l05665"></a><span class="lineno"> 5665</span>&#160; <span class="keywordflow">case</span> 0x95:</div>
<div class="line"><a name="l05666"></a><span class="lineno"> 5666</span>&#160; <span class="keywordflow">case</span> 0x96:</div>
<div class="line"><a name="l05667"></a><span class="lineno"> 5667</span>&#160; <span class="keywordflow">case</span> 0x97:</div>
<div class="line"><a name="l05668"></a><span class="lineno"> 5668</span>&#160; <span class="keywordflow">return</span> get_cbor_array(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(current) &amp; 0x1Fu));</div>
<div class="line"><a name="l05669"></a><span class="lineno"> 5669</span>&#160; </div>
<div class="line"><a name="l05670"></a><span class="lineno"> 5670</span>&#160; <span class="keywordflow">case</span> 0x98: <span class="comment">// array (one-byte uint8_t for n follows)</span></div>
<div class="line"><a name="l05671"></a><span class="lineno"> 5671</span>&#160; {</div>
<div class="line"><a name="l05672"></a><span class="lineno"> 5672</span>&#160; std::uint8_t len;</div>
<div class="line"><a name="l05673"></a><span class="lineno"> 5673</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_array(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l05674"></a><span class="lineno"> 5674</span>&#160; }</div>
<div class="line"><a name="l05675"></a><span class="lineno"> 5675</span>&#160; </div>
<div class="line"><a name="l05676"></a><span class="lineno"> 5676</span>&#160; <span class="keywordflow">case</span> 0x99: <span class="comment">// array (two-byte uint16_t for n follow)</span></div>
<div class="line"><a name="l05677"></a><span class="lineno"> 5677</span>&#160; {</div>
<div class="line"><a name="l05678"></a><span class="lineno"> 5678</span>&#160; std::uint16_t len;</div>
<div class="line"><a name="l05679"></a><span class="lineno"> 5679</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_array(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l05680"></a><span class="lineno"> 5680</span>&#160; }</div>
<div class="line"><a name="l05681"></a><span class="lineno"> 5681</span>&#160; </div>
<div class="line"><a name="l05682"></a><span class="lineno"> 5682</span>&#160; <span class="keywordflow">case</span> 0x9A: <span class="comment">// array (four-byte uint32_t for n follow)</span></div>
<div class="line"><a name="l05683"></a><span class="lineno"> 5683</span>&#160; {</div>
<div class="line"><a name="l05684"></a><span class="lineno"> 5684</span>&#160; std::uint32_t len;</div>
<div class="line"><a name="l05685"></a><span class="lineno"> 5685</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_array(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l05686"></a><span class="lineno"> 5686</span>&#160; }</div>
<div class="line"><a name="l05687"></a><span class="lineno"> 5687</span>&#160; </div>
<div class="line"><a name="l05688"></a><span class="lineno"> 5688</span>&#160; <span class="keywordflow">case</span> 0x9B: <span class="comment">// array (eight-byte uint64_t for n follow)</span></div>
<div class="line"><a name="l05689"></a><span class="lineno"> 5689</span>&#160; {</div>
<div class="line"><a name="l05690"></a><span class="lineno"> 5690</span>&#160; std::uint64_t len;</div>
<div class="line"><a name="l05691"></a><span class="lineno"> 5691</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_array(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l05692"></a><span class="lineno"> 5692</span>&#160; }</div>
<div class="line"><a name="l05693"></a><span class="lineno"> 5693</span>&#160; </div>
<div class="line"><a name="l05694"></a><span class="lineno"> 5694</span>&#160; <span class="keywordflow">case</span> 0x9F: <span class="comment">// array (indefinite length)</span></div>
<div class="line"><a name="l05695"></a><span class="lineno"> 5695</span>&#160; <span class="keywordflow">return</span> get_cbor_array(std::size_t(-1));</div>
<div class="line"><a name="l05696"></a><span class="lineno"> 5696</span>&#160; </div>
<div class="line"><a name="l05697"></a><span class="lineno"> 5697</span>&#160; <span class="comment">// map (0x00..0x17 pairs of data items follow)</span></div>
<div class="line"><a name="l05698"></a><span class="lineno"> 5698</span>&#160; <span class="keywordflow">case</span> 0xA0:</div>
<div class="line"><a name="l05699"></a><span class="lineno"> 5699</span>&#160; <span class="keywordflow">case</span> 0xA1:</div>
<div class="line"><a name="l05700"></a><span class="lineno"> 5700</span>&#160; <span class="keywordflow">case</span> 0xA2:</div>
<div class="line"><a name="l05701"></a><span class="lineno"> 5701</span>&#160; <span class="keywordflow">case</span> 0xA3:</div>
<div class="line"><a name="l05702"></a><span class="lineno"> 5702</span>&#160; <span class="keywordflow">case</span> 0xA4:</div>
<div class="line"><a name="l05703"></a><span class="lineno"> 5703</span>&#160; <span class="keywordflow">case</span> 0xA5:</div>
<div class="line"><a name="l05704"></a><span class="lineno"> 5704</span>&#160; <span class="keywordflow">case</span> 0xA6:</div>
<div class="line"><a name="l05705"></a><span class="lineno"> 5705</span>&#160; <span class="keywordflow">case</span> 0xA7:</div>
<div class="line"><a name="l05706"></a><span class="lineno"> 5706</span>&#160; <span class="keywordflow">case</span> 0xA8:</div>
<div class="line"><a name="l05707"></a><span class="lineno"> 5707</span>&#160; <span class="keywordflow">case</span> 0xA9:</div>
<div class="line"><a name="l05708"></a><span class="lineno"> 5708</span>&#160; <span class="keywordflow">case</span> 0xAA:</div>
<div class="line"><a name="l05709"></a><span class="lineno"> 5709</span>&#160; <span class="keywordflow">case</span> 0xAB:</div>
<div class="line"><a name="l05710"></a><span class="lineno"> 5710</span>&#160; <span class="keywordflow">case</span> 0xAC:</div>
<div class="line"><a name="l05711"></a><span class="lineno"> 5711</span>&#160; <span class="keywordflow">case</span> 0xAD:</div>
<div class="line"><a name="l05712"></a><span class="lineno"> 5712</span>&#160; <span class="keywordflow">case</span> 0xAE:</div>
<div class="line"><a name="l05713"></a><span class="lineno"> 5713</span>&#160; <span class="keywordflow">case</span> 0xAF:</div>
<div class="line"><a name="l05714"></a><span class="lineno"> 5714</span>&#160; <span class="keywordflow">case</span> 0xB0:</div>
<div class="line"><a name="l05715"></a><span class="lineno"> 5715</span>&#160; <span class="keywordflow">case</span> 0xB1:</div>
<div class="line"><a name="l05716"></a><span class="lineno"> 5716</span>&#160; <span class="keywordflow">case</span> 0xB2:</div>
<div class="line"><a name="l05717"></a><span class="lineno"> 5717</span>&#160; <span class="keywordflow">case</span> 0xB3:</div>
<div class="line"><a name="l05718"></a><span class="lineno"> 5718</span>&#160; <span class="keywordflow">case</span> 0xB4:</div>
<div class="line"><a name="l05719"></a><span class="lineno"> 5719</span>&#160; <span class="keywordflow">case</span> 0xB5:</div>
<div class="line"><a name="l05720"></a><span class="lineno"> 5720</span>&#160; <span class="keywordflow">case</span> 0xB6:</div>
<div class="line"><a name="l05721"></a><span class="lineno"> 5721</span>&#160; <span class="keywordflow">case</span> 0xB7:</div>
<div class="line"><a name="l05722"></a><span class="lineno"> 5722</span>&#160; <span class="keywordflow">return</span> get_cbor_object(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(current) &amp; 0x1Fu));</div>
<div class="line"><a name="l05723"></a><span class="lineno"> 5723</span>&#160; </div>
<div class="line"><a name="l05724"></a><span class="lineno"> 5724</span>&#160; <span class="keywordflow">case</span> 0xB8: <span class="comment">// map (one-byte uint8_t for n follows)</span></div>
<div class="line"><a name="l05725"></a><span class="lineno"> 5725</span>&#160; {</div>
<div class="line"><a name="l05726"></a><span class="lineno"> 5726</span>&#160; std::uint8_t len;</div>
<div class="line"><a name="l05727"></a><span class="lineno"> 5727</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_object(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l05728"></a><span class="lineno"> 5728</span>&#160; }</div>
<div class="line"><a name="l05729"></a><span class="lineno"> 5729</span>&#160; </div>
<div class="line"><a name="l05730"></a><span class="lineno"> 5730</span>&#160; <span class="keywordflow">case</span> 0xB9: <span class="comment">// map (two-byte uint16_t for n follow)</span></div>
<div class="line"><a name="l05731"></a><span class="lineno"> 5731</span>&#160; {</div>
<div class="line"><a name="l05732"></a><span class="lineno"> 5732</span>&#160; std::uint16_t len;</div>
<div class="line"><a name="l05733"></a><span class="lineno"> 5733</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_object(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l05734"></a><span class="lineno"> 5734</span>&#160; }</div>
<div class="line"><a name="l05735"></a><span class="lineno"> 5735</span>&#160; </div>
<div class="line"><a name="l05736"></a><span class="lineno"> 5736</span>&#160; <span class="keywordflow">case</span> 0xBA: <span class="comment">// map (four-byte uint32_t for n follow)</span></div>
<div class="line"><a name="l05737"></a><span class="lineno"> 5737</span>&#160; {</div>
<div class="line"><a name="l05738"></a><span class="lineno"> 5738</span>&#160; std::uint32_t len;</div>
<div class="line"><a name="l05739"></a><span class="lineno"> 5739</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_object(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l05740"></a><span class="lineno"> 5740</span>&#160; }</div>
<div class="line"><a name="l05741"></a><span class="lineno"> 5741</span>&#160; </div>
<div class="line"><a name="l05742"></a><span class="lineno"> 5742</span>&#160; <span class="keywordflow">case</span> 0xBB: <span class="comment">// map (eight-byte uint64_t for n follow)</span></div>
<div class="line"><a name="l05743"></a><span class="lineno"> 5743</span>&#160; {</div>
<div class="line"><a name="l05744"></a><span class="lineno"> 5744</span>&#160; std::uint64_t len;</div>
<div class="line"><a name="l05745"></a><span class="lineno"> 5745</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_object(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l05746"></a><span class="lineno"> 5746</span>&#160; }</div>
<div class="line"><a name="l05747"></a><span class="lineno"> 5747</span>&#160; </div>
<div class="line"><a name="l05748"></a><span class="lineno"> 5748</span>&#160; <span class="keywordflow">case</span> 0xBF: <span class="comment">// map (indefinite length)</span></div>
<div class="line"><a name="l05749"></a><span class="lineno"> 5749</span>&#160; <span class="keywordflow">return</span> get_cbor_object(std::size_t(-1));</div>
<div class="line"><a name="l05750"></a><span class="lineno"> 5750</span>&#160; </div>
<div class="line"><a name="l05751"></a><span class="lineno"> 5751</span>&#160; <span class="keywordflow">case</span> 0xF4: <span class="comment">// false</span></div>
<div class="line"><a name="l05752"></a><span class="lineno"> 5752</span>&#160; <span class="keywordflow">return</span> sax-&gt;boolean(<span class="keyword">false</span>);</div>
<div class="line"><a name="l05753"></a><span class="lineno"> 5753</span>&#160; </div>
<div class="line"><a name="l05754"></a><span class="lineno"> 5754</span>&#160; <span class="keywordflow">case</span> 0xF5: <span class="comment">// true</span></div>
<div class="line"><a name="l05755"></a><span class="lineno"> 5755</span>&#160; <span class="keywordflow">return</span> sax-&gt;boolean(<span class="keyword">true</span>);</div>
<div class="line"><a name="l05756"></a><span class="lineno"> 5756</span>&#160; </div>
<div class="line"><a name="l05757"></a><span class="lineno"> 5757</span>&#160; <span class="keywordflow">case</span> 0xF6: <span class="comment">// null</span></div>
<div class="line"><a name="l05758"></a><span class="lineno"> 5758</span>&#160; <span class="keywordflow">return</span> sax-&gt;null();</div>
<div class="line"><a name="l05759"></a><span class="lineno"> 5759</span>&#160; </div>
<div class="line"><a name="l05760"></a><span class="lineno"> 5760</span>&#160; <span class="keywordflow">case</span> 0xF9: <span class="comment">// Half-Precision Float (two-byte IEEE 754)</span></div>
<div class="line"><a name="l05761"></a><span class="lineno"> 5761</span>&#160; {</div>
<div class="line"><a name="l05762"></a><span class="lineno"> 5762</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> byte1_raw = get();</div>
<div class="line"><a name="l05763"></a><span class="lineno"> 5763</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="stringliteral">&quot;number&quot;</span>)))</div>
<div class="line"><a name="l05764"></a><span class="lineno"> 5764</span>&#160; {</div>
<div class="line"><a name="l05765"></a><span class="lineno"> 5765</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05766"></a><span class="lineno"> 5766</span>&#160; }</div>
<div class="line"><a name="l05767"></a><span class="lineno"> 5767</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> byte2_raw = get();</div>
<div class="line"><a name="l05768"></a><span class="lineno"> 5768</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="stringliteral">&quot;number&quot;</span>)))</div>
<div class="line"><a name="l05769"></a><span class="lineno"> 5769</span>&#160; {</div>
<div class="line"><a name="l05770"></a><span class="lineno"> 5770</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05771"></a><span class="lineno"> 5771</span>&#160; }</div>
<div class="line"><a name="l05772"></a><span class="lineno"> 5772</span>&#160; </div>
<div class="line"><a name="l05773"></a><span class="lineno"> 5773</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> byte1 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(byte1_raw);</div>
<div class="line"><a name="l05774"></a><span class="lineno"> 5774</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> byte2 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(byte2_raw);</div>
<div class="line"><a name="l05775"></a><span class="lineno"> 5775</span>&#160; </div>
<div class="line"><a name="l05776"></a><span class="lineno"> 5776</span>&#160; <span class="comment">// code from RFC 7049, Appendix D, Figure 3:</span></div>
<div class="line"><a name="l05777"></a><span class="lineno"> 5777</span>&#160; <span class="comment">// As half-precision floating-point numbers were only added</span></div>
<div class="line"><a name="l05778"></a><span class="lineno"> 5778</span>&#160; <span class="comment">// to IEEE 754 in 2008, today&#39;s programming platforms often</span></div>
<div class="line"><a name="l05779"></a><span class="lineno"> 5779</span>&#160; <span class="comment">// still only have limited support for them. It is very</span></div>
<div class="line"><a name="l05780"></a><span class="lineno"> 5780</span>&#160; <span class="comment">// easy to include at least decoding support for them even</span></div>
<div class="line"><a name="l05781"></a><span class="lineno"> 5781</span>&#160; <span class="comment">// without such support. An example of a small decoder for</span></div>
<div class="line"><a name="l05782"></a><span class="lineno"> 5782</span>&#160; <span class="comment">// half-precision floating-point numbers in the C language</span></div>
<div class="line"><a name="l05783"></a><span class="lineno"> 5783</span>&#160; <span class="comment">// is shown in Fig. 3.</span></div>
<div class="line"><a name="l05784"></a><span class="lineno"> 5784</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> half = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>((byte1 &lt;&lt; 8u) + byte2);</div>
<div class="line"><a name="l05785"></a><span class="lineno"> 5785</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> val = [&amp;half]</div>
<div class="line"><a name="l05786"></a><span class="lineno"> 5786</span>&#160; {</div>
<div class="line"><a name="l05787"></a><span class="lineno"> 5787</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> exp = (half &gt;&gt; 10u) &amp; 0x1Fu;</div>
<div class="line"><a name="l05788"></a><span class="lineno"> 5788</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mant = half &amp; 0x3FFu;</div>
<div class="line"><a name="l05789"></a><span class="lineno"> 5789</span>&#160; assert(0 &lt;= exp and exp &lt;= 32);</div>
<div class="line"><a name="l05790"></a><span class="lineno"> 5790</span>&#160; assert(mant &lt;= 1024);</div>
<div class="line"><a name="l05791"></a><span class="lineno"> 5791</span>&#160; <span class="keywordflow">switch</span> (exp)</div>
<div class="line"><a name="l05792"></a><span class="lineno"> 5792</span>&#160; {</div>
<div class="line"><a name="l05793"></a><span class="lineno"> 5793</span>&#160; <span class="keywordflow">case</span> 0:</div>
<div class="line"><a name="l05794"></a><span class="lineno"> 5794</span>&#160; <span class="keywordflow">return</span> std::ldexp(mant, -24);</div>
<div class="line"><a name="l05795"></a><span class="lineno"> 5795</span>&#160; <span class="keywordflow">case</span> 31:</div>
<div class="line"><a name="l05796"></a><span class="lineno"> 5796</span>&#160; <span class="keywordflow">return</span> (mant == 0)</div>
<div class="line"><a name="l05797"></a><span class="lineno"> 5797</span>&#160; ? std::numeric_limits&lt;double&gt;::infinity()</div>
<div class="line"><a name="l05798"></a><span class="lineno"> 5798</span>&#160; : <a class="code" href="namespacestd.html">std</a>::numeric_limits&lt;double&gt;::quiet_NaN();</div>
<div class="line"><a name="l05799"></a><span class="lineno"> 5799</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l05800"></a><span class="lineno"> 5800</span>&#160; <span class="keywordflow">return</span> std::ldexp(mant + 1024, exp - 25);</div>
<div class="line"><a name="l05801"></a><span class="lineno"> 5801</span>&#160; }</div>
<div class="line"><a name="l05802"></a><span class="lineno"> 5802</span>&#160; }();</div>
<div class="line"><a name="l05803"></a><span class="lineno"> 5803</span>&#160; <span class="keywordflow">return</span> sax-&gt;number_float((half &amp; 0x8000u) != 0</div>
<div class="line"><a name="l05804"></a><span class="lineno"> 5804</span>&#160; ? <span class="keyword">static_cast&lt;</span>number_float_t<span class="keyword">&gt;</span>(-val)</div>
<div class="line"><a name="l05805"></a><span class="lineno"> 5805</span>&#160; : <span class="keyword">static_cast&lt;</span>number_float_t<span class="keyword">&gt;</span>(val), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l05806"></a><span class="lineno"> 5806</span>&#160; }</div>
<div class="line"><a name="l05807"></a><span class="lineno"> 5807</span>&#160; </div>
<div class="line"><a name="l05808"></a><span class="lineno"> 5808</span>&#160; <span class="keywordflow">case</span> 0xFA: <span class="comment">// Single-Precision Float (four-byte IEEE 754)</span></div>
<div class="line"><a name="l05809"></a><span class="lineno"> 5809</span>&#160; {</div>
<div class="line"><a name="l05810"></a><span class="lineno"> 5810</span>&#160; <span class="keywordtype">float</span> number;</div>
<div class="line"><a name="l05811"></a><span class="lineno"> 5811</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax-&gt;number_float(<span class="keyword">static_cast&lt;</span>number_float_t<span class="keyword">&gt;</span>(number), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l05812"></a><span class="lineno"> 5812</span>&#160; }</div>
<div class="line"><a name="l05813"></a><span class="lineno"> 5813</span>&#160; </div>
<div class="line"><a name="l05814"></a><span class="lineno"> 5814</span>&#160; <span class="keywordflow">case</span> 0xFB: <span class="comment">// Double-Precision Float (eight-byte IEEE 754)</span></div>
<div class="line"><a name="l05815"></a><span class="lineno"> 5815</span>&#160; {</div>
<div class="line"><a name="l05816"></a><span class="lineno"> 5816</span>&#160; <span class="keywordtype">double</span> number;</div>
<div class="line"><a name="l05817"></a><span class="lineno"> 5817</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax-&gt;number_float(<span class="keyword">static_cast&lt;</span>number_float_t<span class="keyword">&gt;</span>(number), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l05818"></a><span class="lineno"> 5818</span>&#160; }</div>
<div class="line"><a name="l05819"></a><span class="lineno"> 5819</span>&#160; </div>
<div class="line"><a name="l05820"></a><span class="lineno"> 5820</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// anything else (0xFF is handled inside the other types)</span></div>
<div class="line"><a name="l05821"></a><span class="lineno"> 5821</span>&#160; {</div>
<div class="line"><a name="l05822"></a><span class="lineno"> 5822</span>&#160; <span class="keyword">auto</span> last_token = get_token_string();</div>
<div class="line"><a name="l05823"></a><span class="lineno"> 5823</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(112, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="stringliteral">&quot;invalid byte: 0x&quot;</span> + last_token, <span class="stringliteral">&quot;value&quot;</span>)));</div>
<div class="line"><a name="l05824"></a><span class="lineno"> 5824</span>&#160; }</div>
<div class="line"><a name="l05825"></a><span class="lineno"> 5825</span>&#160; }</div>
<div class="line"><a name="l05826"></a><span class="lineno"> 5826</span>&#160; }</div>
<div class="line"><a name="l05827"></a><span class="lineno"> 5827</span>&#160; </div>
<div class="line"><a name="l05839"></a><span class="lineno"> 5839</span>&#160; <span class="keywordtype">bool</span> get_cbor_string(string_t&amp; result)</div>
<div class="line"><a name="l05840"></a><span class="lineno"> 5840</span>&#160; {</div>
<div class="line"><a name="l05841"></a><span class="lineno"> 5841</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="stringliteral">&quot;string&quot;</span>)))</div>
<div class="line"><a name="l05842"></a><span class="lineno"> 5842</span>&#160; {</div>
<div class="line"><a name="l05843"></a><span class="lineno"> 5843</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05844"></a><span class="lineno"> 5844</span>&#160; }</div>
<div class="line"><a name="l05845"></a><span class="lineno"> 5845</span>&#160; </div>
<div class="line"><a name="l05846"></a><span class="lineno"> 5846</span>&#160; <span class="keywordflow">switch</span> (current)</div>
<div class="line"><a name="l05847"></a><span class="lineno"> 5847</span>&#160; {</div>
<div class="line"><a name="l05848"></a><span class="lineno"> 5848</span>&#160; <span class="comment">// UTF-8 string (0x00..0x17 bytes follow)</span></div>
<div class="line"><a name="l05849"></a><span class="lineno"> 5849</span>&#160; <span class="keywordflow">case</span> 0x60:</div>
<div class="line"><a name="l05850"></a><span class="lineno"> 5850</span>&#160; <span class="keywordflow">case</span> 0x61:</div>
<div class="line"><a name="l05851"></a><span class="lineno"> 5851</span>&#160; <span class="keywordflow">case</span> 0x62:</div>
<div class="line"><a name="l05852"></a><span class="lineno"> 5852</span>&#160; <span class="keywordflow">case</span> 0x63:</div>
<div class="line"><a name="l05853"></a><span class="lineno"> 5853</span>&#160; <span class="keywordflow">case</span> 0x64:</div>
<div class="line"><a name="l05854"></a><span class="lineno"> 5854</span>&#160; <span class="keywordflow">case</span> 0x65:</div>
<div class="line"><a name="l05855"></a><span class="lineno"> 5855</span>&#160; <span class="keywordflow">case</span> 0x66:</div>
<div class="line"><a name="l05856"></a><span class="lineno"> 5856</span>&#160; <span class="keywordflow">case</span> 0x67:</div>
<div class="line"><a name="l05857"></a><span class="lineno"> 5857</span>&#160; <span class="keywordflow">case</span> 0x68:</div>
<div class="line"><a name="l05858"></a><span class="lineno"> 5858</span>&#160; <span class="keywordflow">case</span> 0x69:</div>
<div class="line"><a name="l05859"></a><span class="lineno"> 5859</span>&#160; <span class="keywordflow">case</span> 0x6A:</div>
<div class="line"><a name="l05860"></a><span class="lineno"> 5860</span>&#160; <span class="keywordflow">case</span> 0x6B:</div>
<div class="line"><a name="l05861"></a><span class="lineno"> 5861</span>&#160; <span class="keywordflow">case</span> 0x6C:</div>
<div class="line"><a name="l05862"></a><span class="lineno"> 5862</span>&#160; <span class="keywordflow">case</span> 0x6D:</div>
<div class="line"><a name="l05863"></a><span class="lineno"> 5863</span>&#160; <span class="keywordflow">case</span> 0x6E:</div>
<div class="line"><a name="l05864"></a><span class="lineno"> 5864</span>&#160; <span class="keywordflow">case</span> 0x6F:</div>
<div class="line"><a name="l05865"></a><span class="lineno"> 5865</span>&#160; <span class="keywordflow">case</span> 0x70:</div>
<div class="line"><a name="l05866"></a><span class="lineno"> 5866</span>&#160; <span class="keywordflow">case</span> 0x71:</div>
<div class="line"><a name="l05867"></a><span class="lineno"> 5867</span>&#160; <span class="keywordflow">case</span> 0x72:</div>
<div class="line"><a name="l05868"></a><span class="lineno"> 5868</span>&#160; <span class="keywordflow">case</span> 0x73:</div>
<div class="line"><a name="l05869"></a><span class="lineno"> 5869</span>&#160; <span class="keywordflow">case</span> 0x74:</div>
<div class="line"><a name="l05870"></a><span class="lineno"> 5870</span>&#160; <span class="keywordflow">case</span> 0x75:</div>
<div class="line"><a name="l05871"></a><span class="lineno"> 5871</span>&#160; <span class="keywordflow">case</span> 0x76:</div>
<div class="line"><a name="l05872"></a><span class="lineno"> 5872</span>&#160; <span class="keywordflow">case</span> 0x77:</div>
<div class="line"><a name="l05873"></a><span class="lineno"> 5873</span>&#160; {</div>
<div class="line"><a name="l05874"></a><span class="lineno"> 5874</span>&#160; <span class="keywordflow">return</span> get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(current) &amp; 0x1Fu, result);</div>
<div class="line"><a name="l05875"></a><span class="lineno"> 5875</span>&#160; }</div>
<div class="line"><a name="l05876"></a><span class="lineno"> 5876</span>&#160; </div>
<div class="line"><a name="l05877"></a><span class="lineno"> 5877</span>&#160; <span class="keywordflow">case</span> 0x78: <span class="comment">// UTF-8 string (one-byte uint8_t for n follows)</span></div>
<div class="line"><a name="l05878"></a><span class="lineno"> 5878</span>&#160; {</div>
<div class="line"><a name="l05879"></a><span class="lineno"> 5879</span>&#160; std::uint8_t len;</div>
<div class="line"><a name="l05880"></a><span class="lineno"> 5880</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len, result);</div>
<div class="line"><a name="l05881"></a><span class="lineno"> 5881</span>&#160; }</div>
<div class="line"><a name="l05882"></a><span class="lineno"> 5882</span>&#160; </div>
<div class="line"><a name="l05883"></a><span class="lineno"> 5883</span>&#160; <span class="keywordflow">case</span> 0x79: <span class="comment">// UTF-8 string (two-byte uint16_t for n follow)</span></div>
<div class="line"><a name="l05884"></a><span class="lineno"> 5884</span>&#160; {</div>
<div class="line"><a name="l05885"></a><span class="lineno"> 5885</span>&#160; std::uint16_t len;</div>
<div class="line"><a name="l05886"></a><span class="lineno"> 5886</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len, result);</div>
<div class="line"><a name="l05887"></a><span class="lineno"> 5887</span>&#160; }</div>
<div class="line"><a name="l05888"></a><span class="lineno"> 5888</span>&#160; </div>
<div class="line"><a name="l05889"></a><span class="lineno"> 5889</span>&#160; <span class="keywordflow">case</span> 0x7A: <span class="comment">// UTF-8 string (four-byte uint32_t for n follow)</span></div>
<div class="line"><a name="l05890"></a><span class="lineno"> 5890</span>&#160; {</div>
<div class="line"><a name="l05891"></a><span class="lineno"> 5891</span>&#160; std::uint32_t len;</div>
<div class="line"><a name="l05892"></a><span class="lineno"> 5892</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len, result);</div>
<div class="line"><a name="l05893"></a><span class="lineno"> 5893</span>&#160; }</div>
<div class="line"><a name="l05894"></a><span class="lineno"> 5894</span>&#160; </div>
<div class="line"><a name="l05895"></a><span class="lineno"> 5895</span>&#160; <span class="keywordflow">case</span> 0x7B: <span class="comment">// UTF-8 string (eight-byte uint64_t for n follow)</span></div>
<div class="line"><a name="l05896"></a><span class="lineno"> 5896</span>&#160; {</div>
<div class="line"><a name="l05897"></a><span class="lineno"> 5897</span>&#160; std::uint64_t len;</div>
<div class="line"><a name="l05898"></a><span class="lineno"> 5898</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len, result);</div>
<div class="line"><a name="l05899"></a><span class="lineno"> 5899</span>&#160; }</div>
<div class="line"><a name="l05900"></a><span class="lineno"> 5900</span>&#160; </div>
<div class="line"><a name="l05901"></a><span class="lineno"> 5901</span>&#160; <span class="keywordflow">case</span> 0x7F: <span class="comment">// UTF-8 string (indefinite length)</span></div>
<div class="line"><a name="l05902"></a><span class="lineno"> 5902</span>&#160; {</div>
<div class="line"><a name="l05903"></a><span class="lineno"> 5903</span>&#160; <span class="keywordflow">while</span> (get() != 0xFF)</div>
<div class="line"><a name="l05904"></a><span class="lineno"> 5904</span>&#160; {</div>
<div class="line"><a name="l05905"></a><span class="lineno"> 5905</span>&#160; string_t chunk;</div>
<div class="line"><a name="l05906"></a><span class="lineno"> 5906</span>&#160; <span class="keywordflow">if</span> (not get_cbor_string(chunk))</div>
<div class="line"><a name="l05907"></a><span class="lineno"> 5907</span>&#160; {</div>
<div class="line"><a name="l05908"></a><span class="lineno"> 5908</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05909"></a><span class="lineno"> 5909</span>&#160; }</div>
<div class="line"><a name="l05910"></a><span class="lineno"> 5910</span>&#160; result.append(chunk);</div>
<div class="line"><a name="l05911"></a><span class="lineno"> 5911</span>&#160; }</div>
<div class="line"><a name="l05912"></a><span class="lineno"> 5912</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l05913"></a><span class="lineno"> 5913</span>&#160; }</div>
<div class="line"><a name="l05914"></a><span class="lineno"> 5914</span>&#160; </div>
<div class="line"><a name="l05915"></a><span class="lineno"> 5915</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l05916"></a><span class="lineno"> 5916</span>&#160; {</div>
<div class="line"><a name="l05917"></a><span class="lineno"> 5917</span>&#160; <span class="keyword">auto</span> last_token = get_token_string();</div>
<div class="line"><a name="l05918"></a><span class="lineno"> 5918</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(113, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="stringliteral">&quot;expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x&quot;</span> + last_token, <span class="stringliteral">&quot;string&quot;</span>)));</div>
<div class="line"><a name="l05919"></a><span class="lineno"> 5919</span>&#160; }</div>
<div class="line"><a name="l05920"></a><span class="lineno"> 5920</span>&#160; }</div>
<div class="line"><a name="l05921"></a><span class="lineno"> 5921</span>&#160; }</div>
<div class="line"><a name="l05922"></a><span class="lineno"> 5922</span>&#160; </div>
<div class="line"><a name="l05928"></a><span class="lineno"> 5928</span>&#160; <span class="keywordtype">bool</span> get_cbor_array(<span class="keyword">const</span> std::size_t len)</div>
<div class="line"><a name="l05929"></a><span class="lineno"> 5929</span>&#160; {</div>
<div class="line"><a name="l05930"></a><span class="lineno"> 5930</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_array(len)))</div>
<div class="line"><a name="l05931"></a><span class="lineno"> 5931</span>&#160; {</div>
<div class="line"><a name="l05932"></a><span class="lineno"> 5932</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05933"></a><span class="lineno"> 5933</span>&#160; }</div>
<div class="line"><a name="l05934"></a><span class="lineno"> 5934</span>&#160; </div>
<div class="line"><a name="l05935"></a><span class="lineno"> 5935</span>&#160; <span class="keywordflow">if</span> (len != std::size_t(-1))</div>
<div class="line"><a name="l05936"></a><span class="lineno"> 5936</span>&#160; {</div>
<div class="line"><a name="l05937"></a><span class="lineno"> 5937</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; len; ++i)</div>
<div class="line"><a name="l05938"></a><span class="lineno"> 5938</span>&#160; {</div>
<div class="line"><a name="l05939"></a><span class="lineno"> 5939</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_cbor_internal()))</div>
<div class="line"><a name="l05940"></a><span class="lineno"> 5940</span>&#160; {</div>
<div class="line"><a name="l05941"></a><span class="lineno"> 5941</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05942"></a><span class="lineno"> 5942</span>&#160; }</div>
<div class="line"><a name="l05943"></a><span class="lineno"> 5943</span>&#160; }</div>
<div class="line"><a name="l05944"></a><span class="lineno"> 5944</span>&#160; }</div>
<div class="line"><a name="l05945"></a><span class="lineno"> 5945</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l05946"></a><span class="lineno"> 5946</span>&#160; {</div>
<div class="line"><a name="l05947"></a><span class="lineno"> 5947</span>&#160; <span class="keywordflow">while</span> (get() != 0xFF)</div>
<div class="line"><a name="l05948"></a><span class="lineno"> 5948</span>&#160; {</div>
<div class="line"><a name="l05949"></a><span class="lineno"> 5949</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_cbor_internal(<span class="keyword">false</span>)))</div>
<div class="line"><a name="l05950"></a><span class="lineno"> 5950</span>&#160; {</div>
<div class="line"><a name="l05951"></a><span class="lineno"> 5951</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05952"></a><span class="lineno"> 5952</span>&#160; }</div>
<div class="line"><a name="l05953"></a><span class="lineno"> 5953</span>&#160; }</div>
<div class="line"><a name="l05954"></a><span class="lineno"> 5954</span>&#160; }</div>
<div class="line"><a name="l05955"></a><span class="lineno"> 5955</span>&#160; </div>
<div class="line"><a name="l05956"></a><span class="lineno"> 5956</span>&#160; <span class="keywordflow">return</span> sax-&gt;end_array();</div>
<div class="line"><a name="l05957"></a><span class="lineno"> 5957</span>&#160; }</div>
<div class="line"><a name="l05958"></a><span class="lineno"> 5958</span>&#160; </div>
<div class="line"><a name="l05964"></a><span class="lineno"> 5964</span>&#160; <span class="keywordtype">bool</span> get_cbor_object(<span class="keyword">const</span> std::size_t len)</div>
<div class="line"><a name="l05965"></a><span class="lineno"> 5965</span>&#160; {</div>
<div class="line"><a name="l05966"></a><span class="lineno"> 5966</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_object(len)))</div>
<div class="line"><a name="l05967"></a><span class="lineno"> 5967</span>&#160; {</div>
<div class="line"><a name="l05968"></a><span class="lineno"> 5968</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05969"></a><span class="lineno"> 5969</span>&#160; }</div>
<div class="line"><a name="l05970"></a><span class="lineno"> 5970</span>&#160; </div>
<div class="line"><a name="l05971"></a><span class="lineno"> 5971</span>&#160; string_t key;</div>
<div class="line"><a name="l05972"></a><span class="lineno"> 5972</span>&#160; <span class="keywordflow">if</span> (len != std::size_t(-1))</div>
<div class="line"><a name="l05973"></a><span class="lineno"> 5973</span>&#160; {</div>
<div class="line"><a name="l05974"></a><span class="lineno"> 5974</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; len; ++i)</div>
<div class="line"><a name="l05975"></a><span class="lineno"> 5975</span>&#160; {</div>
<div class="line"><a name="l05976"></a><span class="lineno"> 5976</span>&#160; get();</div>
<div class="line"><a name="l05977"></a><span class="lineno"> 5977</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_cbor_string(key) or not sax-&gt;key(key)))</div>
<div class="line"><a name="l05978"></a><span class="lineno"> 5978</span>&#160; {</div>
<div class="line"><a name="l05979"></a><span class="lineno"> 5979</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05980"></a><span class="lineno"> 5980</span>&#160; }</div>
<div class="line"><a name="l05981"></a><span class="lineno"> 5981</span>&#160; </div>
<div class="line"><a name="l05982"></a><span class="lineno"> 5982</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_cbor_internal()))</div>
<div class="line"><a name="l05983"></a><span class="lineno"> 5983</span>&#160; {</div>
<div class="line"><a name="l05984"></a><span class="lineno"> 5984</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05985"></a><span class="lineno"> 5985</span>&#160; }</div>
<div class="line"><a name="l05986"></a><span class="lineno"> 5986</span>&#160; key.clear();</div>
<div class="line"><a name="l05987"></a><span class="lineno"> 5987</span>&#160; }</div>
<div class="line"><a name="l05988"></a><span class="lineno"> 5988</span>&#160; }</div>
<div class="line"><a name="l05989"></a><span class="lineno"> 5989</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l05990"></a><span class="lineno"> 5990</span>&#160; {</div>
<div class="line"><a name="l05991"></a><span class="lineno"> 5991</span>&#160; <span class="keywordflow">while</span> (get() != 0xFF)</div>
<div class="line"><a name="l05992"></a><span class="lineno"> 5992</span>&#160; {</div>
<div class="line"><a name="l05993"></a><span class="lineno"> 5993</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_cbor_string(key) or not sax-&gt;key(key)))</div>
<div class="line"><a name="l05994"></a><span class="lineno"> 5994</span>&#160; {</div>
<div class="line"><a name="l05995"></a><span class="lineno"> 5995</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l05996"></a><span class="lineno"> 5996</span>&#160; }</div>
<div class="line"><a name="l05997"></a><span class="lineno"> 5997</span>&#160; </div>
<div class="line"><a name="l05998"></a><span class="lineno"> 5998</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_cbor_internal()))</div>
<div class="line"><a name="l05999"></a><span class="lineno"> 5999</span>&#160; {</div>
<div class="line"><a name="l06000"></a><span class="lineno"> 6000</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06001"></a><span class="lineno"> 6001</span>&#160; }</div>
<div class="line"><a name="l06002"></a><span class="lineno"> 6002</span>&#160; key.clear();</div>
<div class="line"><a name="l06003"></a><span class="lineno"> 6003</span>&#160; }</div>
<div class="line"><a name="l06004"></a><span class="lineno"> 6004</span>&#160; }</div>
<div class="line"><a name="l06005"></a><span class="lineno"> 6005</span>&#160; </div>
<div class="line"><a name="l06006"></a><span class="lineno"> 6006</span>&#160; <span class="keywordflow">return</span> sax-&gt;end_object();</div>
<div class="line"><a name="l06007"></a><span class="lineno"> 6007</span>&#160; }</div>
<div class="line"><a name="l06008"></a><span class="lineno"> 6008</span>&#160; </div>
<div class="line"><a name="l06010"></a><span class="lineno"> 6010</span>&#160; <span class="comment">// MsgPack //</span></div>
<div class="line"><a name="l06012"></a><span class="lineno"> 6012</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l06016"></a><span class="lineno"> 6016</span>&#160; <span class="keywordtype">bool</span> parse_msgpack_internal()</div>
<div class="line"><a name="l06017"></a><span class="lineno"> 6017</span>&#160; {</div>
<div class="line"><a name="l06018"></a><span class="lineno"> 6018</span>&#160; <span class="keywordflow">switch</span> (get())</div>
<div class="line"><a name="l06019"></a><span class="lineno"> 6019</span>&#160; {</div>
<div class="line"><a name="l06020"></a><span class="lineno"> 6020</span>&#160; <span class="comment">// EOF</span></div>
<div class="line"><a name="l06021"></a><span class="lineno"> 6021</span>&#160; <span class="keywordflow">case</span> std::char_traits&lt;char&gt;::eof():</div>
<div class="line"><a name="l06022"></a><span class="lineno"> 6022</span>&#160; return unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">msgpack</a>, <span class="stringliteral">&quot;value&quot;</span>);</div>
<div class="line"><a name="l06023"></a><span class="lineno"> 6023</span>&#160; </div>
<div class="line"><a name="l06024"></a><span class="lineno"> 6024</span>&#160; <span class="comment">// positive fixint</span></div>
<div class="line"><a name="l06025"></a><span class="lineno"> 6025</span>&#160; <span class="keywordflow">case</span> 0x00:</div>
<div class="line"><a name="l06026"></a><span class="lineno"> 6026</span>&#160; <span class="keywordflow">case</span> 0x01:</div>
<div class="line"><a name="l06027"></a><span class="lineno"> 6027</span>&#160; <span class="keywordflow">case</span> 0x02:</div>
<div class="line"><a name="l06028"></a><span class="lineno"> 6028</span>&#160; <span class="keywordflow">case</span> 0x03:</div>
<div class="line"><a name="l06029"></a><span class="lineno"> 6029</span>&#160; <span class="keywordflow">case</span> 0x04:</div>
<div class="line"><a name="l06030"></a><span class="lineno"> 6030</span>&#160; <span class="keywordflow">case</span> 0x05:</div>
<div class="line"><a name="l06031"></a><span class="lineno"> 6031</span>&#160; <span class="keywordflow">case</span> 0x06:</div>
<div class="line"><a name="l06032"></a><span class="lineno"> 6032</span>&#160; <span class="keywordflow">case</span> 0x07:</div>
<div class="line"><a name="l06033"></a><span class="lineno"> 6033</span>&#160; <span class="keywordflow">case</span> 0x08:</div>
<div class="line"><a name="l06034"></a><span class="lineno"> 6034</span>&#160; <span class="keywordflow">case</span> 0x09:</div>
<div class="line"><a name="l06035"></a><span class="lineno"> 6035</span>&#160; <span class="keywordflow">case</span> 0x0A:</div>
<div class="line"><a name="l06036"></a><span class="lineno"> 6036</span>&#160; <span class="keywordflow">case</span> 0x0B:</div>
<div class="line"><a name="l06037"></a><span class="lineno"> 6037</span>&#160; <span class="keywordflow">case</span> 0x0C:</div>
<div class="line"><a name="l06038"></a><span class="lineno"> 6038</span>&#160; <span class="keywordflow">case</span> 0x0D:</div>
<div class="line"><a name="l06039"></a><span class="lineno"> 6039</span>&#160; <span class="keywordflow">case</span> 0x0E:</div>
<div class="line"><a name="l06040"></a><span class="lineno"> 6040</span>&#160; <span class="keywordflow">case</span> 0x0F:</div>
<div class="line"><a name="l06041"></a><span class="lineno"> 6041</span>&#160; <span class="keywordflow">case</span> 0x10:</div>
<div class="line"><a name="l06042"></a><span class="lineno"> 6042</span>&#160; <span class="keywordflow">case</span> 0x11:</div>
<div class="line"><a name="l06043"></a><span class="lineno"> 6043</span>&#160; <span class="keywordflow">case</span> 0x12:</div>
<div class="line"><a name="l06044"></a><span class="lineno"> 6044</span>&#160; <span class="keywordflow">case</span> 0x13:</div>
<div class="line"><a name="l06045"></a><span class="lineno"> 6045</span>&#160; <span class="keywordflow">case</span> 0x14:</div>
<div class="line"><a name="l06046"></a><span class="lineno"> 6046</span>&#160; <span class="keywordflow">case</span> 0x15:</div>
<div class="line"><a name="l06047"></a><span class="lineno"> 6047</span>&#160; <span class="keywordflow">case</span> 0x16:</div>
<div class="line"><a name="l06048"></a><span class="lineno"> 6048</span>&#160; <span class="keywordflow">case</span> 0x17:</div>
<div class="line"><a name="l06049"></a><span class="lineno"> 6049</span>&#160; <span class="keywordflow">case</span> 0x18:</div>
<div class="line"><a name="l06050"></a><span class="lineno"> 6050</span>&#160; <span class="keywordflow">case</span> 0x19:</div>
<div class="line"><a name="l06051"></a><span class="lineno"> 6051</span>&#160; <span class="keywordflow">case</span> 0x1A:</div>
<div class="line"><a name="l06052"></a><span class="lineno"> 6052</span>&#160; <span class="keywordflow">case</span> 0x1B:</div>
<div class="line"><a name="l06053"></a><span class="lineno"> 6053</span>&#160; <span class="keywordflow">case</span> 0x1C:</div>
<div class="line"><a name="l06054"></a><span class="lineno"> 6054</span>&#160; <span class="keywordflow">case</span> 0x1D:</div>
<div class="line"><a name="l06055"></a><span class="lineno"> 6055</span>&#160; <span class="keywordflow">case</span> 0x1E:</div>
<div class="line"><a name="l06056"></a><span class="lineno"> 6056</span>&#160; <span class="keywordflow">case</span> 0x1F:</div>
<div class="line"><a name="l06057"></a><span class="lineno"> 6057</span>&#160; <span class="keywordflow">case</span> 0x20:</div>
<div class="line"><a name="l06058"></a><span class="lineno"> 6058</span>&#160; <span class="keywordflow">case</span> 0x21:</div>
<div class="line"><a name="l06059"></a><span class="lineno"> 6059</span>&#160; <span class="keywordflow">case</span> 0x22:</div>
<div class="line"><a name="l06060"></a><span class="lineno"> 6060</span>&#160; <span class="keywordflow">case</span> 0x23:</div>
<div class="line"><a name="l06061"></a><span class="lineno"> 6061</span>&#160; <span class="keywordflow">case</span> 0x24:</div>
<div class="line"><a name="l06062"></a><span class="lineno"> 6062</span>&#160; <span class="keywordflow">case</span> 0x25:</div>
<div class="line"><a name="l06063"></a><span class="lineno"> 6063</span>&#160; <span class="keywordflow">case</span> 0x26:</div>
<div class="line"><a name="l06064"></a><span class="lineno"> 6064</span>&#160; <span class="keywordflow">case</span> 0x27:</div>
<div class="line"><a name="l06065"></a><span class="lineno"> 6065</span>&#160; <span class="keywordflow">case</span> 0x28:</div>
<div class="line"><a name="l06066"></a><span class="lineno"> 6066</span>&#160; <span class="keywordflow">case</span> 0x29:</div>
<div class="line"><a name="l06067"></a><span class="lineno"> 6067</span>&#160; <span class="keywordflow">case</span> 0x2A:</div>
<div class="line"><a name="l06068"></a><span class="lineno"> 6068</span>&#160; <span class="keywordflow">case</span> 0x2B:</div>
<div class="line"><a name="l06069"></a><span class="lineno"> 6069</span>&#160; <span class="keywordflow">case</span> 0x2C:</div>
<div class="line"><a name="l06070"></a><span class="lineno"> 6070</span>&#160; <span class="keywordflow">case</span> 0x2D:</div>
<div class="line"><a name="l06071"></a><span class="lineno"> 6071</span>&#160; <span class="keywordflow">case</span> 0x2E:</div>
<div class="line"><a name="l06072"></a><span class="lineno"> 6072</span>&#160; <span class="keywordflow">case</span> 0x2F:</div>
<div class="line"><a name="l06073"></a><span class="lineno"> 6073</span>&#160; <span class="keywordflow">case</span> 0x30:</div>
<div class="line"><a name="l06074"></a><span class="lineno"> 6074</span>&#160; <span class="keywordflow">case</span> 0x31:</div>
<div class="line"><a name="l06075"></a><span class="lineno"> 6075</span>&#160; <span class="keywordflow">case</span> 0x32:</div>
<div class="line"><a name="l06076"></a><span class="lineno"> 6076</span>&#160; <span class="keywordflow">case</span> 0x33:</div>
<div class="line"><a name="l06077"></a><span class="lineno"> 6077</span>&#160; <span class="keywordflow">case</span> 0x34:</div>
<div class="line"><a name="l06078"></a><span class="lineno"> 6078</span>&#160; <span class="keywordflow">case</span> 0x35:</div>
<div class="line"><a name="l06079"></a><span class="lineno"> 6079</span>&#160; <span class="keywordflow">case</span> 0x36:</div>
<div class="line"><a name="l06080"></a><span class="lineno"> 6080</span>&#160; <span class="keywordflow">case</span> 0x37:</div>
<div class="line"><a name="l06081"></a><span class="lineno"> 6081</span>&#160; <span class="keywordflow">case</span> 0x38:</div>
<div class="line"><a name="l06082"></a><span class="lineno"> 6082</span>&#160; <span class="keywordflow">case</span> 0x39:</div>
<div class="line"><a name="l06083"></a><span class="lineno"> 6083</span>&#160; <span class="keywordflow">case</span> 0x3A:</div>
<div class="line"><a name="l06084"></a><span class="lineno"> 6084</span>&#160; <span class="keywordflow">case</span> 0x3B:</div>
<div class="line"><a name="l06085"></a><span class="lineno"> 6085</span>&#160; <span class="keywordflow">case</span> 0x3C:</div>
<div class="line"><a name="l06086"></a><span class="lineno"> 6086</span>&#160; <span class="keywordflow">case</span> 0x3D:</div>
<div class="line"><a name="l06087"></a><span class="lineno"> 6087</span>&#160; <span class="keywordflow">case</span> 0x3E:</div>
<div class="line"><a name="l06088"></a><span class="lineno"> 6088</span>&#160; <span class="keywordflow">case</span> 0x3F:</div>
<div class="line"><a name="l06089"></a><span class="lineno"> 6089</span>&#160; <span class="keywordflow">case</span> 0x40:</div>
<div class="line"><a name="l06090"></a><span class="lineno"> 6090</span>&#160; <span class="keywordflow">case</span> 0x41:</div>
<div class="line"><a name="l06091"></a><span class="lineno"> 6091</span>&#160; <span class="keywordflow">case</span> 0x42:</div>
<div class="line"><a name="l06092"></a><span class="lineno"> 6092</span>&#160; <span class="keywordflow">case</span> 0x43:</div>
<div class="line"><a name="l06093"></a><span class="lineno"> 6093</span>&#160; <span class="keywordflow">case</span> 0x44:</div>
<div class="line"><a name="l06094"></a><span class="lineno"> 6094</span>&#160; <span class="keywordflow">case</span> 0x45:</div>
<div class="line"><a name="l06095"></a><span class="lineno"> 6095</span>&#160; <span class="keywordflow">case</span> 0x46:</div>
<div class="line"><a name="l06096"></a><span class="lineno"> 6096</span>&#160; <span class="keywordflow">case</span> 0x47:</div>
<div class="line"><a name="l06097"></a><span class="lineno"> 6097</span>&#160; <span class="keywordflow">case</span> 0x48:</div>
<div class="line"><a name="l06098"></a><span class="lineno"> 6098</span>&#160; <span class="keywordflow">case</span> 0x49:</div>
<div class="line"><a name="l06099"></a><span class="lineno"> 6099</span>&#160; <span class="keywordflow">case</span> 0x4A:</div>
<div class="line"><a name="l06100"></a><span class="lineno"> 6100</span>&#160; <span class="keywordflow">case</span> 0x4B:</div>
<div class="line"><a name="l06101"></a><span class="lineno"> 6101</span>&#160; <span class="keywordflow">case</span> 0x4C:</div>
<div class="line"><a name="l06102"></a><span class="lineno"> 6102</span>&#160; <span class="keywordflow">case</span> 0x4D:</div>
<div class="line"><a name="l06103"></a><span class="lineno"> 6103</span>&#160; <span class="keywordflow">case</span> 0x4E:</div>
<div class="line"><a name="l06104"></a><span class="lineno"> 6104</span>&#160; <span class="keywordflow">case</span> 0x4F:</div>
<div class="line"><a name="l06105"></a><span class="lineno"> 6105</span>&#160; <span class="keywordflow">case</span> 0x50:</div>
<div class="line"><a name="l06106"></a><span class="lineno"> 6106</span>&#160; <span class="keywordflow">case</span> 0x51:</div>
<div class="line"><a name="l06107"></a><span class="lineno"> 6107</span>&#160; <span class="keywordflow">case</span> 0x52:</div>
<div class="line"><a name="l06108"></a><span class="lineno"> 6108</span>&#160; <span class="keywordflow">case</span> 0x53:</div>
<div class="line"><a name="l06109"></a><span class="lineno"> 6109</span>&#160; <span class="keywordflow">case</span> 0x54:</div>
<div class="line"><a name="l06110"></a><span class="lineno"> 6110</span>&#160; <span class="keywordflow">case</span> 0x55:</div>
<div class="line"><a name="l06111"></a><span class="lineno"> 6111</span>&#160; <span class="keywordflow">case</span> 0x56:</div>
<div class="line"><a name="l06112"></a><span class="lineno"> 6112</span>&#160; <span class="keywordflow">case</span> 0x57:</div>
<div class="line"><a name="l06113"></a><span class="lineno"> 6113</span>&#160; <span class="keywordflow">case</span> 0x58:</div>
<div class="line"><a name="l06114"></a><span class="lineno"> 6114</span>&#160; <span class="keywordflow">case</span> 0x59:</div>
<div class="line"><a name="l06115"></a><span class="lineno"> 6115</span>&#160; <span class="keywordflow">case</span> 0x5A:</div>
<div class="line"><a name="l06116"></a><span class="lineno"> 6116</span>&#160; <span class="keywordflow">case</span> 0x5B:</div>
<div class="line"><a name="l06117"></a><span class="lineno"> 6117</span>&#160; <span class="keywordflow">case</span> 0x5C:</div>
<div class="line"><a name="l06118"></a><span class="lineno"> 6118</span>&#160; <span class="keywordflow">case</span> 0x5D:</div>
<div class="line"><a name="l06119"></a><span class="lineno"> 6119</span>&#160; <span class="keywordflow">case</span> 0x5E:</div>
<div class="line"><a name="l06120"></a><span class="lineno"> 6120</span>&#160; <span class="keywordflow">case</span> 0x5F:</div>
<div class="line"><a name="l06121"></a><span class="lineno"> 6121</span>&#160; <span class="keywordflow">case</span> 0x60:</div>
<div class="line"><a name="l06122"></a><span class="lineno"> 6122</span>&#160; <span class="keywordflow">case</span> 0x61:</div>
<div class="line"><a name="l06123"></a><span class="lineno"> 6123</span>&#160; <span class="keywordflow">case</span> 0x62:</div>
<div class="line"><a name="l06124"></a><span class="lineno"> 6124</span>&#160; <span class="keywordflow">case</span> 0x63:</div>
<div class="line"><a name="l06125"></a><span class="lineno"> 6125</span>&#160; <span class="keywordflow">case</span> 0x64:</div>
<div class="line"><a name="l06126"></a><span class="lineno"> 6126</span>&#160; <span class="keywordflow">case</span> 0x65:</div>
<div class="line"><a name="l06127"></a><span class="lineno"> 6127</span>&#160; <span class="keywordflow">case</span> 0x66:</div>
<div class="line"><a name="l06128"></a><span class="lineno"> 6128</span>&#160; <span class="keywordflow">case</span> 0x67:</div>
<div class="line"><a name="l06129"></a><span class="lineno"> 6129</span>&#160; <span class="keywordflow">case</span> 0x68:</div>
<div class="line"><a name="l06130"></a><span class="lineno"> 6130</span>&#160; <span class="keywordflow">case</span> 0x69:</div>
<div class="line"><a name="l06131"></a><span class="lineno"> 6131</span>&#160; <span class="keywordflow">case</span> 0x6A:</div>
<div class="line"><a name="l06132"></a><span class="lineno"> 6132</span>&#160; <span class="keywordflow">case</span> 0x6B:</div>
<div class="line"><a name="l06133"></a><span class="lineno"> 6133</span>&#160; <span class="keywordflow">case</span> 0x6C:</div>
<div class="line"><a name="l06134"></a><span class="lineno"> 6134</span>&#160; <span class="keywordflow">case</span> 0x6D:</div>
<div class="line"><a name="l06135"></a><span class="lineno"> 6135</span>&#160; <span class="keywordflow">case</span> 0x6E:</div>
<div class="line"><a name="l06136"></a><span class="lineno"> 6136</span>&#160; <span class="keywordflow">case</span> 0x6F:</div>
<div class="line"><a name="l06137"></a><span class="lineno"> 6137</span>&#160; <span class="keywordflow">case</span> 0x70:</div>
<div class="line"><a name="l06138"></a><span class="lineno"> 6138</span>&#160; <span class="keywordflow">case</span> 0x71:</div>
<div class="line"><a name="l06139"></a><span class="lineno"> 6139</span>&#160; <span class="keywordflow">case</span> 0x72:</div>
<div class="line"><a name="l06140"></a><span class="lineno"> 6140</span>&#160; <span class="keywordflow">case</span> 0x73:</div>
<div class="line"><a name="l06141"></a><span class="lineno"> 6141</span>&#160; <span class="keywordflow">case</span> 0x74:</div>
<div class="line"><a name="l06142"></a><span class="lineno"> 6142</span>&#160; <span class="keywordflow">case</span> 0x75:</div>
<div class="line"><a name="l06143"></a><span class="lineno"> 6143</span>&#160; <span class="keywordflow">case</span> 0x76:</div>
<div class="line"><a name="l06144"></a><span class="lineno"> 6144</span>&#160; <span class="keywordflow">case</span> 0x77:</div>
<div class="line"><a name="l06145"></a><span class="lineno"> 6145</span>&#160; <span class="keywordflow">case</span> 0x78:</div>
<div class="line"><a name="l06146"></a><span class="lineno"> 6146</span>&#160; <span class="keywordflow">case</span> 0x79:</div>
<div class="line"><a name="l06147"></a><span class="lineno"> 6147</span>&#160; <span class="keywordflow">case</span> 0x7A:</div>
<div class="line"><a name="l06148"></a><span class="lineno"> 6148</span>&#160; <span class="keywordflow">case</span> 0x7B:</div>
<div class="line"><a name="l06149"></a><span class="lineno"> 6149</span>&#160; <span class="keywordflow">case</span> 0x7C:</div>
<div class="line"><a name="l06150"></a><span class="lineno"> 6150</span>&#160; <span class="keywordflow">case</span> 0x7D:</div>
<div class="line"><a name="l06151"></a><span class="lineno"> 6151</span>&#160; <span class="keywordflow">case</span> 0x7E:</div>
<div class="line"><a name="l06152"></a><span class="lineno"> 6152</span>&#160; <span class="keywordflow">case</span> 0x7F:</div>
<div class="line"><a name="l06153"></a><span class="lineno"> 6153</span>&#160; <span class="keywordflow">return</span> sax-&gt;number_unsigned(<span class="keyword">static_cast&lt;</span>number_unsigned_t<span class="keyword">&gt;</span>(current));</div>
<div class="line"><a name="l06154"></a><span class="lineno"> 6154</span>&#160; </div>
<div class="line"><a name="l06155"></a><span class="lineno"> 6155</span>&#160; <span class="comment">// fixmap</span></div>
<div class="line"><a name="l06156"></a><span class="lineno"> 6156</span>&#160; <span class="keywordflow">case</span> 0x80:</div>
<div class="line"><a name="l06157"></a><span class="lineno"> 6157</span>&#160; <span class="keywordflow">case</span> 0x81:</div>
<div class="line"><a name="l06158"></a><span class="lineno"> 6158</span>&#160; <span class="keywordflow">case</span> 0x82:</div>
<div class="line"><a name="l06159"></a><span class="lineno"> 6159</span>&#160; <span class="keywordflow">case</span> 0x83:</div>
<div class="line"><a name="l06160"></a><span class="lineno"> 6160</span>&#160; <span class="keywordflow">case</span> 0x84:</div>
<div class="line"><a name="l06161"></a><span class="lineno"> 6161</span>&#160; <span class="keywordflow">case</span> 0x85:</div>
<div class="line"><a name="l06162"></a><span class="lineno"> 6162</span>&#160; <span class="keywordflow">case</span> 0x86:</div>
<div class="line"><a name="l06163"></a><span class="lineno"> 6163</span>&#160; <span class="keywordflow">case</span> 0x87:</div>
<div class="line"><a name="l06164"></a><span class="lineno"> 6164</span>&#160; <span class="keywordflow">case</span> 0x88:</div>
<div class="line"><a name="l06165"></a><span class="lineno"> 6165</span>&#160; <span class="keywordflow">case</span> 0x89:</div>
<div class="line"><a name="l06166"></a><span class="lineno"> 6166</span>&#160; <span class="keywordflow">case</span> 0x8A:</div>
<div class="line"><a name="l06167"></a><span class="lineno"> 6167</span>&#160; <span class="keywordflow">case</span> 0x8B:</div>
<div class="line"><a name="l06168"></a><span class="lineno"> 6168</span>&#160; <span class="keywordflow">case</span> 0x8C:</div>
<div class="line"><a name="l06169"></a><span class="lineno"> 6169</span>&#160; <span class="keywordflow">case</span> 0x8D:</div>
<div class="line"><a name="l06170"></a><span class="lineno"> 6170</span>&#160; <span class="keywordflow">case</span> 0x8E:</div>
<div class="line"><a name="l06171"></a><span class="lineno"> 6171</span>&#160; <span class="keywordflow">case</span> 0x8F:</div>
<div class="line"><a name="l06172"></a><span class="lineno"> 6172</span>&#160; <span class="keywordflow">return</span> get_msgpack_object(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(current) &amp; 0x0Fu));</div>
<div class="line"><a name="l06173"></a><span class="lineno"> 6173</span>&#160; </div>
<div class="line"><a name="l06174"></a><span class="lineno"> 6174</span>&#160; <span class="comment">// fixarray</span></div>
<div class="line"><a name="l06175"></a><span class="lineno"> 6175</span>&#160; <span class="keywordflow">case</span> 0x90:</div>
<div class="line"><a name="l06176"></a><span class="lineno"> 6176</span>&#160; <span class="keywordflow">case</span> 0x91:</div>
<div class="line"><a name="l06177"></a><span class="lineno"> 6177</span>&#160; <span class="keywordflow">case</span> 0x92:</div>
<div class="line"><a name="l06178"></a><span class="lineno"> 6178</span>&#160; <span class="keywordflow">case</span> 0x93:</div>
<div class="line"><a name="l06179"></a><span class="lineno"> 6179</span>&#160; <span class="keywordflow">case</span> 0x94:</div>
<div class="line"><a name="l06180"></a><span class="lineno"> 6180</span>&#160; <span class="keywordflow">case</span> 0x95:</div>
<div class="line"><a name="l06181"></a><span class="lineno"> 6181</span>&#160; <span class="keywordflow">case</span> 0x96:</div>
<div class="line"><a name="l06182"></a><span class="lineno"> 6182</span>&#160; <span class="keywordflow">case</span> 0x97:</div>
<div class="line"><a name="l06183"></a><span class="lineno"> 6183</span>&#160; <span class="keywordflow">case</span> 0x98:</div>
<div class="line"><a name="l06184"></a><span class="lineno"> 6184</span>&#160; <span class="keywordflow">case</span> 0x99:</div>
<div class="line"><a name="l06185"></a><span class="lineno"> 6185</span>&#160; <span class="keywordflow">case</span> 0x9A:</div>
<div class="line"><a name="l06186"></a><span class="lineno"> 6186</span>&#160; <span class="keywordflow">case</span> 0x9B:</div>
<div class="line"><a name="l06187"></a><span class="lineno"> 6187</span>&#160; <span class="keywordflow">case</span> 0x9C:</div>
<div class="line"><a name="l06188"></a><span class="lineno"> 6188</span>&#160; <span class="keywordflow">case</span> 0x9D:</div>
<div class="line"><a name="l06189"></a><span class="lineno"> 6189</span>&#160; <span class="keywordflow">case</span> 0x9E:</div>
<div class="line"><a name="l06190"></a><span class="lineno"> 6190</span>&#160; <span class="keywordflow">case</span> 0x9F:</div>
<div class="line"><a name="l06191"></a><span class="lineno"> 6191</span>&#160; <span class="keywordflow">return</span> get_msgpack_array(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(current) &amp; 0x0Fu));</div>
<div class="line"><a name="l06192"></a><span class="lineno"> 6192</span>&#160; </div>
<div class="line"><a name="l06193"></a><span class="lineno"> 6193</span>&#160; <span class="comment">// fixstr</span></div>
<div class="line"><a name="l06194"></a><span class="lineno"> 6194</span>&#160; <span class="keywordflow">case</span> 0xA0:</div>
<div class="line"><a name="l06195"></a><span class="lineno"> 6195</span>&#160; <span class="keywordflow">case</span> 0xA1:</div>
<div class="line"><a name="l06196"></a><span class="lineno"> 6196</span>&#160; <span class="keywordflow">case</span> 0xA2:</div>
<div class="line"><a name="l06197"></a><span class="lineno"> 6197</span>&#160; <span class="keywordflow">case</span> 0xA3:</div>
<div class="line"><a name="l06198"></a><span class="lineno"> 6198</span>&#160; <span class="keywordflow">case</span> 0xA4:</div>
<div class="line"><a name="l06199"></a><span class="lineno"> 6199</span>&#160; <span class="keywordflow">case</span> 0xA5:</div>
<div class="line"><a name="l06200"></a><span class="lineno"> 6200</span>&#160; <span class="keywordflow">case</span> 0xA6:</div>
<div class="line"><a name="l06201"></a><span class="lineno"> 6201</span>&#160; <span class="keywordflow">case</span> 0xA7:</div>
<div class="line"><a name="l06202"></a><span class="lineno"> 6202</span>&#160; <span class="keywordflow">case</span> 0xA8:</div>
<div class="line"><a name="l06203"></a><span class="lineno"> 6203</span>&#160; <span class="keywordflow">case</span> 0xA9:</div>
<div class="line"><a name="l06204"></a><span class="lineno"> 6204</span>&#160; <span class="keywordflow">case</span> 0xAA:</div>
<div class="line"><a name="l06205"></a><span class="lineno"> 6205</span>&#160; <span class="keywordflow">case</span> 0xAB:</div>
<div class="line"><a name="l06206"></a><span class="lineno"> 6206</span>&#160; <span class="keywordflow">case</span> 0xAC:</div>
<div class="line"><a name="l06207"></a><span class="lineno"> 6207</span>&#160; <span class="keywordflow">case</span> 0xAD:</div>
<div class="line"><a name="l06208"></a><span class="lineno"> 6208</span>&#160; <span class="keywordflow">case</span> 0xAE:</div>
<div class="line"><a name="l06209"></a><span class="lineno"> 6209</span>&#160; <span class="keywordflow">case</span> 0xAF:</div>
<div class="line"><a name="l06210"></a><span class="lineno"> 6210</span>&#160; <span class="keywordflow">case</span> 0xB0:</div>
<div class="line"><a name="l06211"></a><span class="lineno"> 6211</span>&#160; <span class="keywordflow">case</span> 0xB1:</div>
<div class="line"><a name="l06212"></a><span class="lineno"> 6212</span>&#160; <span class="keywordflow">case</span> 0xB2:</div>
<div class="line"><a name="l06213"></a><span class="lineno"> 6213</span>&#160; <span class="keywordflow">case</span> 0xB3:</div>
<div class="line"><a name="l06214"></a><span class="lineno"> 6214</span>&#160; <span class="keywordflow">case</span> 0xB4:</div>
<div class="line"><a name="l06215"></a><span class="lineno"> 6215</span>&#160; <span class="keywordflow">case</span> 0xB5:</div>
<div class="line"><a name="l06216"></a><span class="lineno"> 6216</span>&#160; <span class="keywordflow">case</span> 0xB6:</div>
<div class="line"><a name="l06217"></a><span class="lineno"> 6217</span>&#160; <span class="keywordflow">case</span> 0xB7:</div>
<div class="line"><a name="l06218"></a><span class="lineno"> 6218</span>&#160; <span class="keywordflow">case</span> 0xB8:</div>
<div class="line"><a name="l06219"></a><span class="lineno"> 6219</span>&#160; <span class="keywordflow">case</span> 0xB9:</div>
<div class="line"><a name="l06220"></a><span class="lineno"> 6220</span>&#160; <span class="keywordflow">case</span> 0xBA:</div>
<div class="line"><a name="l06221"></a><span class="lineno"> 6221</span>&#160; <span class="keywordflow">case</span> 0xBB:</div>
<div class="line"><a name="l06222"></a><span class="lineno"> 6222</span>&#160; <span class="keywordflow">case</span> 0xBC:</div>
<div class="line"><a name="l06223"></a><span class="lineno"> 6223</span>&#160; <span class="keywordflow">case</span> 0xBD:</div>
<div class="line"><a name="l06224"></a><span class="lineno"> 6224</span>&#160; <span class="keywordflow">case</span> 0xBE:</div>
<div class="line"><a name="l06225"></a><span class="lineno"> 6225</span>&#160; <span class="keywordflow">case</span> 0xBF:</div>
<div class="line"><a name="l06226"></a><span class="lineno"> 6226</span>&#160; <span class="keywordflow">case</span> 0xD9: <span class="comment">// str 8</span></div>
<div class="line"><a name="l06227"></a><span class="lineno"> 6227</span>&#160; <span class="keywordflow">case</span> 0xDA: <span class="comment">// str 16</span></div>
<div class="line"><a name="l06228"></a><span class="lineno"> 6228</span>&#160; <span class="keywordflow">case</span> 0xDB: <span class="comment">// str 32</span></div>
<div class="line"><a name="l06229"></a><span class="lineno"> 6229</span>&#160; {</div>
<div class="line"><a name="l06230"></a><span class="lineno"> 6230</span>&#160; string_t s;</div>
<div class="line"><a name="l06231"></a><span class="lineno"> 6231</span>&#160; <span class="keywordflow">return</span> get_msgpack_string(s) and sax-&gt;string(s);</div>
<div class="line"><a name="l06232"></a><span class="lineno"> 6232</span>&#160; }</div>
<div class="line"><a name="l06233"></a><span class="lineno"> 6233</span>&#160; </div>
<div class="line"><a name="l06234"></a><span class="lineno"> 6234</span>&#160; <span class="keywordflow">case</span> 0xC0: <span class="comment">// nil</span></div>
<div class="line"><a name="l06235"></a><span class="lineno"> 6235</span>&#160; <span class="keywordflow">return</span> sax-&gt;null();</div>
<div class="line"><a name="l06236"></a><span class="lineno"> 6236</span>&#160; </div>
<div class="line"><a name="l06237"></a><span class="lineno"> 6237</span>&#160; <span class="keywordflow">case</span> 0xC2: <span class="comment">// false</span></div>
<div class="line"><a name="l06238"></a><span class="lineno"> 6238</span>&#160; <span class="keywordflow">return</span> sax-&gt;boolean(<span class="keyword">false</span>);</div>
<div class="line"><a name="l06239"></a><span class="lineno"> 6239</span>&#160; </div>
<div class="line"><a name="l06240"></a><span class="lineno"> 6240</span>&#160; <span class="keywordflow">case</span> 0xC3: <span class="comment">// true</span></div>
<div class="line"><a name="l06241"></a><span class="lineno"> 6241</span>&#160; <span class="keywordflow">return</span> sax-&gt;boolean(<span class="keyword">true</span>);</div>
<div class="line"><a name="l06242"></a><span class="lineno"> 6242</span>&#160; </div>
<div class="line"><a name="l06243"></a><span class="lineno"> 6243</span>&#160; <span class="keywordflow">case</span> 0xCA: <span class="comment">// float 32</span></div>
<div class="line"><a name="l06244"></a><span class="lineno"> 6244</span>&#160; {</div>
<div class="line"><a name="l06245"></a><span class="lineno"> 6245</span>&#160; <span class="keywordtype">float</span> number;</div>
<div class="line"><a name="l06246"></a><span class="lineno"> 6246</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax-&gt;number_float(<span class="keyword">static_cast&lt;</span>number_float_t<span class="keyword">&gt;</span>(number), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l06247"></a><span class="lineno"> 6247</span>&#160; }</div>
<div class="line"><a name="l06248"></a><span class="lineno"> 6248</span>&#160; </div>
<div class="line"><a name="l06249"></a><span class="lineno"> 6249</span>&#160; <span class="keywordflow">case</span> 0xCB: <span class="comment">// float 64</span></div>
<div class="line"><a name="l06250"></a><span class="lineno"> 6250</span>&#160; {</div>
<div class="line"><a name="l06251"></a><span class="lineno"> 6251</span>&#160; <span class="keywordtype">double</span> number;</div>
<div class="line"><a name="l06252"></a><span class="lineno"> 6252</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax-&gt;number_float(<span class="keyword">static_cast&lt;</span>number_float_t<span class="keyword">&gt;</span>(number), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l06253"></a><span class="lineno"> 6253</span>&#160; }</div>
<div class="line"><a name="l06254"></a><span class="lineno"> 6254</span>&#160; </div>
<div class="line"><a name="l06255"></a><span class="lineno"> 6255</span>&#160; <span class="keywordflow">case</span> 0xCC: <span class="comment">// uint 8</span></div>
<div class="line"><a name="l06256"></a><span class="lineno"> 6256</span>&#160; {</div>
<div class="line"><a name="l06257"></a><span class="lineno"> 6257</span>&#160; std::uint8_t number;</div>
<div class="line"><a name="l06258"></a><span class="lineno"> 6258</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax-&gt;number_unsigned(number);</div>
<div class="line"><a name="l06259"></a><span class="lineno"> 6259</span>&#160; }</div>
<div class="line"><a name="l06260"></a><span class="lineno"> 6260</span>&#160; </div>
<div class="line"><a name="l06261"></a><span class="lineno"> 6261</span>&#160; <span class="keywordflow">case</span> 0xCD: <span class="comment">// uint 16</span></div>
<div class="line"><a name="l06262"></a><span class="lineno"> 6262</span>&#160; {</div>
<div class="line"><a name="l06263"></a><span class="lineno"> 6263</span>&#160; std::uint16_t number;</div>
<div class="line"><a name="l06264"></a><span class="lineno"> 6264</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax-&gt;number_unsigned(number);</div>
<div class="line"><a name="l06265"></a><span class="lineno"> 6265</span>&#160; }</div>
<div class="line"><a name="l06266"></a><span class="lineno"> 6266</span>&#160; </div>
<div class="line"><a name="l06267"></a><span class="lineno"> 6267</span>&#160; <span class="keywordflow">case</span> 0xCE: <span class="comment">// uint 32</span></div>
<div class="line"><a name="l06268"></a><span class="lineno"> 6268</span>&#160; {</div>
<div class="line"><a name="l06269"></a><span class="lineno"> 6269</span>&#160; std::uint32_t number;</div>
<div class="line"><a name="l06270"></a><span class="lineno"> 6270</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax-&gt;number_unsigned(number);</div>
<div class="line"><a name="l06271"></a><span class="lineno"> 6271</span>&#160; }</div>
<div class="line"><a name="l06272"></a><span class="lineno"> 6272</span>&#160; </div>
<div class="line"><a name="l06273"></a><span class="lineno"> 6273</span>&#160; <span class="keywordflow">case</span> 0xCF: <span class="comment">// uint 64</span></div>
<div class="line"><a name="l06274"></a><span class="lineno"> 6274</span>&#160; {</div>
<div class="line"><a name="l06275"></a><span class="lineno"> 6275</span>&#160; std::uint64_t number;</div>
<div class="line"><a name="l06276"></a><span class="lineno"> 6276</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax-&gt;number_unsigned(number);</div>
<div class="line"><a name="l06277"></a><span class="lineno"> 6277</span>&#160; }</div>
<div class="line"><a name="l06278"></a><span class="lineno"> 6278</span>&#160; </div>
<div class="line"><a name="l06279"></a><span class="lineno"> 6279</span>&#160; <span class="keywordflow">case</span> 0xD0: <span class="comment">// int 8</span></div>
<div class="line"><a name="l06280"></a><span class="lineno"> 6280</span>&#160; {</div>
<div class="line"><a name="l06281"></a><span class="lineno"> 6281</span>&#160; std::int8_t number;</div>
<div class="line"><a name="l06282"></a><span class="lineno"> 6282</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax-&gt;number_integer(number);</div>
<div class="line"><a name="l06283"></a><span class="lineno"> 6283</span>&#160; }</div>
<div class="line"><a name="l06284"></a><span class="lineno"> 6284</span>&#160; </div>
<div class="line"><a name="l06285"></a><span class="lineno"> 6285</span>&#160; <span class="keywordflow">case</span> 0xD1: <span class="comment">// int 16</span></div>
<div class="line"><a name="l06286"></a><span class="lineno"> 6286</span>&#160; {</div>
<div class="line"><a name="l06287"></a><span class="lineno"> 6287</span>&#160; std::int16_t number;</div>
<div class="line"><a name="l06288"></a><span class="lineno"> 6288</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax-&gt;number_integer(number);</div>
<div class="line"><a name="l06289"></a><span class="lineno"> 6289</span>&#160; }</div>
<div class="line"><a name="l06290"></a><span class="lineno"> 6290</span>&#160; </div>
<div class="line"><a name="l06291"></a><span class="lineno"> 6291</span>&#160; <span class="keywordflow">case</span> 0xD2: <span class="comment">// int 32</span></div>
<div class="line"><a name="l06292"></a><span class="lineno"> 6292</span>&#160; {</div>
<div class="line"><a name="l06293"></a><span class="lineno"> 6293</span>&#160; std::int32_t number;</div>
<div class="line"><a name="l06294"></a><span class="lineno"> 6294</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax-&gt;number_integer(number);</div>
<div class="line"><a name="l06295"></a><span class="lineno"> 6295</span>&#160; }</div>
<div class="line"><a name="l06296"></a><span class="lineno"> 6296</span>&#160; </div>
<div class="line"><a name="l06297"></a><span class="lineno"> 6297</span>&#160; <span class="keywordflow">case</span> 0xD3: <span class="comment">// int 64</span></div>
<div class="line"><a name="l06298"></a><span class="lineno"> 6298</span>&#160; {</div>
<div class="line"><a name="l06299"></a><span class="lineno"> 6299</span>&#160; std::int64_t number;</div>
<div class="line"><a name="l06300"></a><span class="lineno"> 6300</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax-&gt;number_integer(number);</div>
<div class="line"><a name="l06301"></a><span class="lineno"> 6301</span>&#160; }</div>
<div class="line"><a name="l06302"></a><span class="lineno"> 6302</span>&#160; </div>
<div class="line"><a name="l06303"></a><span class="lineno"> 6303</span>&#160; <span class="keywordflow">case</span> 0xDC: <span class="comment">// array 16</span></div>
<div class="line"><a name="l06304"></a><span class="lineno"> 6304</span>&#160; {</div>
<div class="line"><a name="l06305"></a><span class="lineno"> 6305</span>&#160; std::uint16_t len;</div>
<div class="line"><a name="l06306"></a><span class="lineno"> 6306</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_msgpack_array(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l06307"></a><span class="lineno"> 6307</span>&#160; }</div>
<div class="line"><a name="l06308"></a><span class="lineno"> 6308</span>&#160; </div>
<div class="line"><a name="l06309"></a><span class="lineno"> 6309</span>&#160; <span class="keywordflow">case</span> 0xDD: <span class="comment">// array 32</span></div>
<div class="line"><a name="l06310"></a><span class="lineno"> 6310</span>&#160; {</div>
<div class="line"><a name="l06311"></a><span class="lineno"> 6311</span>&#160; std::uint32_t len;</div>
<div class="line"><a name="l06312"></a><span class="lineno"> 6312</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_msgpack_array(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l06313"></a><span class="lineno"> 6313</span>&#160; }</div>
<div class="line"><a name="l06314"></a><span class="lineno"> 6314</span>&#160; </div>
<div class="line"><a name="l06315"></a><span class="lineno"> 6315</span>&#160; <span class="keywordflow">case</span> 0xDE: <span class="comment">// map 16</span></div>
<div class="line"><a name="l06316"></a><span class="lineno"> 6316</span>&#160; {</div>
<div class="line"><a name="l06317"></a><span class="lineno"> 6317</span>&#160; std::uint16_t len;</div>
<div class="line"><a name="l06318"></a><span class="lineno"> 6318</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_msgpack_object(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l06319"></a><span class="lineno"> 6319</span>&#160; }</div>
<div class="line"><a name="l06320"></a><span class="lineno"> 6320</span>&#160; </div>
<div class="line"><a name="l06321"></a><span class="lineno"> 6321</span>&#160; <span class="keywordflow">case</span> 0xDF: <span class="comment">// map 32</span></div>
<div class="line"><a name="l06322"></a><span class="lineno"> 6322</span>&#160; {</div>
<div class="line"><a name="l06323"></a><span class="lineno"> 6323</span>&#160; std::uint32_t len;</div>
<div class="line"><a name="l06324"></a><span class="lineno"> 6324</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_msgpack_object(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l06325"></a><span class="lineno"> 6325</span>&#160; }</div>
<div class="line"><a name="l06326"></a><span class="lineno"> 6326</span>&#160; </div>
<div class="line"><a name="l06327"></a><span class="lineno"> 6327</span>&#160; <span class="comment">// negative fixint</span></div>
<div class="line"><a name="l06328"></a><span class="lineno"> 6328</span>&#160; <span class="keywordflow">case</span> 0xE0:</div>
<div class="line"><a name="l06329"></a><span class="lineno"> 6329</span>&#160; <span class="keywordflow">case</span> 0xE1:</div>
<div class="line"><a name="l06330"></a><span class="lineno"> 6330</span>&#160; <span class="keywordflow">case</span> 0xE2:</div>
<div class="line"><a name="l06331"></a><span class="lineno"> 6331</span>&#160; <span class="keywordflow">case</span> 0xE3:</div>
<div class="line"><a name="l06332"></a><span class="lineno"> 6332</span>&#160; <span class="keywordflow">case</span> 0xE4:</div>
<div class="line"><a name="l06333"></a><span class="lineno"> 6333</span>&#160; <span class="keywordflow">case</span> 0xE5:</div>
<div class="line"><a name="l06334"></a><span class="lineno"> 6334</span>&#160; <span class="keywordflow">case</span> 0xE6:</div>
<div class="line"><a name="l06335"></a><span class="lineno"> 6335</span>&#160; <span class="keywordflow">case</span> 0xE7:</div>
<div class="line"><a name="l06336"></a><span class="lineno"> 6336</span>&#160; <span class="keywordflow">case</span> 0xE8:</div>
<div class="line"><a name="l06337"></a><span class="lineno"> 6337</span>&#160; <span class="keywordflow">case</span> 0xE9:</div>
<div class="line"><a name="l06338"></a><span class="lineno"> 6338</span>&#160; <span class="keywordflow">case</span> 0xEA:</div>
<div class="line"><a name="l06339"></a><span class="lineno"> 6339</span>&#160; <span class="keywordflow">case</span> 0xEB:</div>
<div class="line"><a name="l06340"></a><span class="lineno"> 6340</span>&#160; <span class="keywordflow">case</span> 0xEC:</div>
<div class="line"><a name="l06341"></a><span class="lineno"> 6341</span>&#160; <span class="keywordflow">case</span> 0xED:</div>
<div class="line"><a name="l06342"></a><span class="lineno"> 6342</span>&#160; <span class="keywordflow">case</span> 0xEE:</div>
<div class="line"><a name="l06343"></a><span class="lineno"> 6343</span>&#160; <span class="keywordflow">case</span> 0xEF:</div>
<div class="line"><a name="l06344"></a><span class="lineno"> 6344</span>&#160; <span class="keywordflow">case</span> 0xF0:</div>
<div class="line"><a name="l06345"></a><span class="lineno"> 6345</span>&#160; <span class="keywordflow">case</span> 0xF1:</div>
<div class="line"><a name="l06346"></a><span class="lineno"> 6346</span>&#160; <span class="keywordflow">case</span> 0xF2:</div>
<div class="line"><a name="l06347"></a><span class="lineno"> 6347</span>&#160; <span class="keywordflow">case</span> 0xF3:</div>
<div class="line"><a name="l06348"></a><span class="lineno"> 6348</span>&#160; <span class="keywordflow">case</span> 0xF4:</div>
<div class="line"><a name="l06349"></a><span class="lineno"> 6349</span>&#160; <span class="keywordflow">case</span> 0xF5:</div>
<div class="line"><a name="l06350"></a><span class="lineno"> 6350</span>&#160; <span class="keywordflow">case</span> 0xF6:</div>
<div class="line"><a name="l06351"></a><span class="lineno"> 6351</span>&#160; <span class="keywordflow">case</span> 0xF7:</div>
<div class="line"><a name="l06352"></a><span class="lineno"> 6352</span>&#160; <span class="keywordflow">case</span> 0xF8:</div>
<div class="line"><a name="l06353"></a><span class="lineno"> 6353</span>&#160; <span class="keywordflow">case</span> 0xF9:</div>
<div class="line"><a name="l06354"></a><span class="lineno"> 6354</span>&#160; <span class="keywordflow">case</span> 0xFA:</div>
<div class="line"><a name="l06355"></a><span class="lineno"> 6355</span>&#160; <span class="keywordflow">case</span> 0xFB:</div>
<div class="line"><a name="l06356"></a><span class="lineno"> 6356</span>&#160; <span class="keywordflow">case</span> 0xFC:</div>
<div class="line"><a name="l06357"></a><span class="lineno"> 6357</span>&#160; <span class="keywordflow">case</span> 0xFD:</div>
<div class="line"><a name="l06358"></a><span class="lineno"> 6358</span>&#160; <span class="keywordflow">case</span> 0xFE:</div>
<div class="line"><a name="l06359"></a><span class="lineno"> 6359</span>&#160; <span class="keywordflow">case</span> 0xFF:</div>
<div class="line"><a name="l06360"></a><span class="lineno"> 6360</span>&#160; <span class="keywordflow">return</span> sax-&gt;number_integer(<span class="keyword">static_cast&lt;</span>std::int8_t<span class="keyword">&gt;</span>(current));</div>
<div class="line"><a name="l06361"></a><span class="lineno"> 6361</span>&#160; </div>
<div class="line"><a name="l06362"></a><span class="lineno"> 6362</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// anything else</span></div>
<div class="line"><a name="l06363"></a><span class="lineno"> 6363</span>&#160; {</div>
<div class="line"><a name="l06364"></a><span class="lineno"> 6364</span>&#160; <span class="keyword">auto</span> last_token = get_token_string();</div>
<div class="line"><a name="l06365"></a><span class="lineno"> 6365</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(112, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, <span class="stringliteral">&quot;invalid byte: 0x&quot;</span> + last_token, <span class="stringliteral">&quot;value&quot;</span>)));</div>
<div class="line"><a name="l06366"></a><span class="lineno"> 6366</span>&#160; }</div>
<div class="line"><a name="l06367"></a><span class="lineno"> 6367</span>&#160; }</div>
<div class="line"><a name="l06368"></a><span class="lineno"> 6368</span>&#160; }</div>
<div class="line"><a name="l06369"></a><span class="lineno"> 6369</span>&#160; </div>
<div class="line"><a name="l06380"></a><span class="lineno"> 6380</span>&#160; <span class="keywordtype">bool</span> get_msgpack_string(string_t&amp; result)</div>
<div class="line"><a name="l06381"></a><span class="lineno"> 6381</span>&#160; {</div>
<div class="line"><a name="l06382"></a><span class="lineno"> 6382</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, <span class="stringliteral">&quot;string&quot;</span>)))</div>
<div class="line"><a name="l06383"></a><span class="lineno"> 6383</span>&#160; {</div>
<div class="line"><a name="l06384"></a><span class="lineno"> 6384</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06385"></a><span class="lineno"> 6385</span>&#160; }</div>
<div class="line"><a name="l06386"></a><span class="lineno"> 6386</span>&#160; </div>
<div class="line"><a name="l06387"></a><span class="lineno"> 6387</span>&#160; <span class="keywordflow">switch</span> (current)</div>
<div class="line"><a name="l06388"></a><span class="lineno"> 6388</span>&#160; {</div>
<div class="line"><a name="l06389"></a><span class="lineno"> 6389</span>&#160; <span class="comment">// fixstr</span></div>
<div class="line"><a name="l06390"></a><span class="lineno"> 6390</span>&#160; <span class="keywordflow">case</span> 0xA0:</div>
<div class="line"><a name="l06391"></a><span class="lineno"> 6391</span>&#160; <span class="keywordflow">case</span> 0xA1:</div>
<div class="line"><a name="l06392"></a><span class="lineno"> 6392</span>&#160; <span class="keywordflow">case</span> 0xA2:</div>
<div class="line"><a name="l06393"></a><span class="lineno"> 6393</span>&#160; <span class="keywordflow">case</span> 0xA3:</div>
<div class="line"><a name="l06394"></a><span class="lineno"> 6394</span>&#160; <span class="keywordflow">case</span> 0xA4:</div>
<div class="line"><a name="l06395"></a><span class="lineno"> 6395</span>&#160; <span class="keywordflow">case</span> 0xA5:</div>
<div class="line"><a name="l06396"></a><span class="lineno"> 6396</span>&#160; <span class="keywordflow">case</span> 0xA6:</div>
<div class="line"><a name="l06397"></a><span class="lineno"> 6397</span>&#160; <span class="keywordflow">case</span> 0xA7:</div>
<div class="line"><a name="l06398"></a><span class="lineno"> 6398</span>&#160; <span class="keywordflow">case</span> 0xA8:</div>
<div class="line"><a name="l06399"></a><span class="lineno"> 6399</span>&#160; <span class="keywordflow">case</span> 0xA9:</div>
<div class="line"><a name="l06400"></a><span class="lineno"> 6400</span>&#160; <span class="keywordflow">case</span> 0xAA:</div>
<div class="line"><a name="l06401"></a><span class="lineno"> 6401</span>&#160; <span class="keywordflow">case</span> 0xAB:</div>
<div class="line"><a name="l06402"></a><span class="lineno"> 6402</span>&#160; <span class="keywordflow">case</span> 0xAC:</div>
<div class="line"><a name="l06403"></a><span class="lineno"> 6403</span>&#160; <span class="keywordflow">case</span> 0xAD:</div>
<div class="line"><a name="l06404"></a><span class="lineno"> 6404</span>&#160; <span class="keywordflow">case</span> 0xAE:</div>
<div class="line"><a name="l06405"></a><span class="lineno"> 6405</span>&#160; <span class="keywordflow">case</span> 0xAF:</div>
<div class="line"><a name="l06406"></a><span class="lineno"> 6406</span>&#160; <span class="keywordflow">case</span> 0xB0:</div>
<div class="line"><a name="l06407"></a><span class="lineno"> 6407</span>&#160; <span class="keywordflow">case</span> 0xB1:</div>
<div class="line"><a name="l06408"></a><span class="lineno"> 6408</span>&#160; <span class="keywordflow">case</span> 0xB2:</div>
<div class="line"><a name="l06409"></a><span class="lineno"> 6409</span>&#160; <span class="keywordflow">case</span> 0xB3:</div>
<div class="line"><a name="l06410"></a><span class="lineno"> 6410</span>&#160; <span class="keywordflow">case</span> 0xB4:</div>
<div class="line"><a name="l06411"></a><span class="lineno"> 6411</span>&#160; <span class="keywordflow">case</span> 0xB5:</div>
<div class="line"><a name="l06412"></a><span class="lineno"> 6412</span>&#160; <span class="keywordflow">case</span> 0xB6:</div>
<div class="line"><a name="l06413"></a><span class="lineno"> 6413</span>&#160; <span class="keywordflow">case</span> 0xB7:</div>
<div class="line"><a name="l06414"></a><span class="lineno"> 6414</span>&#160; <span class="keywordflow">case</span> 0xB8:</div>
<div class="line"><a name="l06415"></a><span class="lineno"> 6415</span>&#160; <span class="keywordflow">case</span> 0xB9:</div>
<div class="line"><a name="l06416"></a><span class="lineno"> 6416</span>&#160; <span class="keywordflow">case</span> 0xBA:</div>
<div class="line"><a name="l06417"></a><span class="lineno"> 6417</span>&#160; <span class="keywordflow">case</span> 0xBB:</div>
<div class="line"><a name="l06418"></a><span class="lineno"> 6418</span>&#160; <span class="keywordflow">case</span> 0xBC:</div>
<div class="line"><a name="l06419"></a><span class="lineno"> 6419</span>&#160; <span class="keywordflow">case</span> 0xBD:</div>
<div class="line"><a name="l06420"></a><span class="lineno"> 6420</span>&#160; <span class="keywordflow">case</span> 0xBE:</div>
<div class="line"><a name="l06421"></a><span class="lineno"> 6421</span>&#160; <span class="keywordflow">case</span> 0xBF:</div>
<div class="line"><a name="l06422"></a><span class="lineno"> 6422</span>&#160; {</div>
<div class="line"><a name="l06423"></a><span class="lineno"> 6423</span>&#160; <span class="keywordflow">return</span> get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(current) &amp; 0x1Fu, result);</div>
<div class="line"><a name="l06424"></a><span class="lineno"> 6424</span>&#160; }</div>
<div class="line"><a name="l06425"></a><span class="lineno"> 6425</span>&#160; </div>
<div class="line"><a name="l06426"></a><span class="lineno"> 6426</span>&#160; <span class="keywordflow">case</span> 0xD9: <span class="comment">// str 8</span></div>
<div class="line"><a name="l06427"></a><span class="lineno"> 6427</span>&#160; {</div>
<div class="line"><a name="l06428"></a><span class="lineno"> 6428</span>&#160; std::uint8_t len;</div>
<div class="line"><a name="l06429"></a><span class="lineno"> 6429</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len, result);</div>
<div class="line"><a name="l06430"></a><span class="lineno"> 6430</span>&#160; }</div>
<div class="line"><a name="l06431"></a><span class="lineno"> 6431</span>&#160; </div>
<div class="line"><a name="l06432"></a><span class="lineno"> 6432</span>&#160; <span class="keywordflow">case</span> 0xDA: <span class="comment">// str 16</span></div>
<div class="line"><a name="l06433"></a><span class="lineno"> 6433</span>&#160; {</div>
<div class="line"><a name="l06434"></a><span class="lineno"> 6434</span>&#160; std::uint16_t len;</div>
<div class="line"><a name="l06435"></a><span class="lineno"> 6435</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len, result);</div>
<div class="line"><a name="l06436"></a><span class="lineno"> 6436</span>&#160; }</div>
<div class="line"><a name="l06437"></a><span class="lineno"> 6437</span>&#160; </div>
<div class="line"><a name="l06438"></a><span class="lineno"> 6438</span>&#160; <span class="keywordflow">case</span> 0xDB: <span class="comment">// str 32</span></div>
<div class="line"><a name="l06439"></a><span class="lineno"> 6439</span>&#160; {</div>
<div class="line"><a name="l06440"></a><span class="lineno"> 6440</span>&#160; std::uint32_t len;</div>
<div class="line"><a name="l06441"></a><span class="lineno"> 6441</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len, result);</div>
<div class="line"><a name="l06442"></a><span class="lineno"> 6442</span>&#160; }</div>
<div class="line"><a name="l06443"></a><span class="lineno"> 6443</span>&#160; </div>
<div class="line"><a name="l06444"></a><span class="lineno"> 6444</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l06445"></a><span class="lineno"> 6445</span>&#160; {</div>
<div class="line"><a name="l06446"></a><span class="lineno"> 6446</span>&#160; <span class="keyword">auto</span> last_token = get_token_string();</div>
<div class="line"><a name="l06447"></a><span class="lineno"> 6447</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(113, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, <span class="stringliteral">&quot;expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x&quot;</span> + last_token, <span class="stringliteral">&quot;string&quot;</span>)));</div>
<div class="line"><a name="l06448"></a><span class="lineno"> 6448</span>&#160; }</div>
<div class="line"><a name="l06449"></a><span class="lineno"> 6449</span>&#160; }</div>
<div class="line"><a name="l06450"></a><span class="lineno"> 6450</span>&#160; }</div>
<div class="line"><a name="l06451"></a><span class="lineno"> 6451</span>&#160; </div>
<div class="line"><a name="l06456"></a><span class="lineno"> 6456</span>&#160; <span class="keywordtype">bool</span> get_msgpack_array(<span class="keyword">const</span> std::size_t len)</div>
<div class="line"><a name="l06457"></a><span class="lineno"> 6457</span>&#160; {</div>
<div class="line"><a name="l06458"></a><span class="lineno"> 6458</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_array(len)))</div>
<div class="line"><a name="l06459"></a><span class="lineno"> 6459</span>&#160; {</div>
<div class="line"><a name="l06460"></a><span class="lineno"> 6460</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06461"></a><span class="lineno"> 6461</span>&#160; }</div>
<div class="line"><a name="l06462"></a><span class="lineno"> 6462</span>&#160; </div>
<div class="line"><a name="l06463"></a><span class="lineno"> 6463</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; len; ++i)</div>
<div class="line"><a name="l06464"></a><span class="lineno"> 6464</span>&#160; {</div>
<div class="line"><a name="l06465"></a><span class="lineno"> 6465</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_msgpack_internal()))</div>
<div class="line"><a name="l06466"></a><span class="lineno"> 6466</span>&#160; {</div>
<div class="line"><a name="l06467"></a><span class="lineno"> 6467</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06468"></a><span class="lineno"> 6468</span>&#160; }</div>
<div class="line"><a name="l06469"></a><span class="lineno"> 6469</span>&#160; }</div>
<div class="line"><a name="l06470"></a><span class="lineno"> 6470</span>&#160; </div>
<div class="line"><a name="l06471"></a><span class="lineno"> 6471</span>&#160; <span class="keywordflow">return</span> sax-&gt;end_array();</div>
<div class="line"><a name="l06472"></a><span class="lineno"> 6472</span>&#160; }</div>
<div class="line"><a name="l06473"></a><span class="lineno"> 6473</span>&#160; </div>
<div class="line"><a name="l06478"></a><span class="lineno"> 6478</span>&#160; <span class="keywordtype">bool</span> get_msgpack_object(<span class="keyword">const</span> std::size_t len)</div>
<div class="line"><a name="l06479"></a><span class="lineno"> 6479</span>&#160; {</div>
<div class="line"><a name="l06480"></a><span class="lineno"> 6480</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_object(len)))</div>
<div class="line"><a name="l06481"></a><span class="lineno"> 6481</span>&#160; {</div>
<div class="line"><a name="l06482"></a><span class="lineno"> 6482</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06483"></a><span class="lineno"> 6483</span>&#160; }</div>
<div class="line"><a name="l06484"></a><span class="lineno"> 6484</span>&#160; </div>
<div class="line"><a name="l06485"></a><span class="lineno"> 6485</span>&#160; string_t key;</div>
<div class="line"><a name="l06486"></a><span class="lineno"> 6486</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; len; ++i)</div>
<div class="line"><a name="l06487"></a><span class="lineno"> 6487</span>&#160; {</div>
<div class="line"><a name="l06488"></a><span class="lineno"> 6488</span>&#160; get();</div>
<div class="line"><a name="l06489"></a><span class="lineno"> 6489</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_msgpack_string(key) or not sax-&gt;key(key)))</div>
<div class="line"><a name="l06490"></a><span class="lineno"> 6490</span>&#160; {</div>
<div class="line"><a name="l06491"></a><span class="lineno"> 6491</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06492"></a><span class="lineno"> 6492</span>&#160; }</div>
<div class="line"><a name="l06493"></a><span class="lineno"> 6493</span>&#160; </div>
<div class="line"><a name="l06494"></a><span class="lineno"> 6494</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_msgpack_internal()))</div>
<div class="line"><a name="l06495"></a><span class="lineno"> 6495</span>&#160; {</div>
<div class="line"><a name="l06496"></a><span class="lineno"> 6496</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06497"></a><span class="lineno"> 6497</span>&#160; }</div>
<div class="line"><a name="l06498"></a><span class="lineno"> 6498</span>&#160; key.clear();</div>
<div class="line"><a name="l06499"></a><span class="lineno"> 6499</span>&#160; }</div>
<div class="line"><a name="l06500"></a><span class="lineno"> 6500</span>&#160; </div>
<div class="line"><a name="l06501"></a><span class="lineno"> 6501</span>&#160; <span class="keywordflow">return</span> sax-&gt;end_object();</div>
<div class="line"><a name="l06502"></a><span class="lineno"> 6502</span>&#160; }</div>
<div class="line"><a name="l06503"></a><span class="lineno"> 6503</span>&#160; </div>
<div class="line"><a name="l06505"></a><span class="lineno"> 6505</span>&#160; <span class="comment">// UBJSON //</span></div>
<div class="line"><a name="l06507"></a><span class="lineno"> 6507</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l06515"></a><span class="lineno"> 6515</span>&#160; <span class="keywordtype">bool</span> parse_ubjson_internal(<span class="keyword">const</span> <span class="keywordtype">bool</span> get_char = <span class="keyword">true</span>)</div>
<div class="line"><a name="l06516"></a><span class="lineno"> 6516</span>&#160; {</div>
<div class="line"><a name="l06517"></a><span class="lineno"> 6517</span>&#160; <span class="keywordflow">return</span> get_ubjson_value(get_char ? get_ignore_noop() : current);</div>
<div class="line"><a name="l06518"></a><span class="lineno"> 6518</span>&#160; }</div>
<div class="line"><a name="l06519"></a><span class="lineno"> 6519</span>&#160; </div>
<div class="line"><a name="l06534"></a><span class="lineno"> 6534</span>&#160; <span class="keywordtype">bool</span> get_ubjson_string(string_t&amp; result, <span class="keyword">const</span> <span class="keywordtype">bool</span> get_char = <span class="keyword">true</span>)</div>
<div class="line"><a name="l06535"></a><span class="lineno"> 6535</span>&#160; {</div>
<div class="line"><a name="l06536"></a><span class="lineno"> 6536</span>&#160; <span class="keywordflow">if</span> (get_char)</div>
<div class="line"><a name="l06537"></a><span class="lineno"> 6537</span>&#160; {</div>
<div class="line"><a name="l06538"></a><span class="lineno"> 6538</span>&#160; get(); <span class="comment">// TODO(niels): may we ignore N here?</span></div>
<div class="line"><a name="l06539"></a><span class="lineno"> 6539</span>&#160; }</div>
<div class="line"><a name="l06540"></a><span class="lineno"> 6540</span>&#160; </div>
<div class="line"><a name="l06541"></a><span class="lineno"> 6541</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">&quot;value&quot;</span>)))</div>
<div class="line"><a name="l06542"></a><span class="lineno"> 6542</span>&#160; {</div>
<div class="line"><a name="l06543"></a><span class="lineno"> 6543</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06544"></a><span class="lineno"> 6544</span>&#160; }</div>
<div class="line"><a name="l06545"></a><span class="lineno"> 6545</span>&#160; </div>
<div class="line"><a name="l06546"></a><span class="lineno"> 6546</span>&#160; <span class="keywordflow">switch</span> (current)</div>
<div class="line"><a name="l06547"></a><span class="lineno"> 6547</span>&#160; {</div>
<div class="line"><a name="l06548"></a><span class="lineno"> 6548</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;U&#39;</span>:</div>
<div class="line"><a name="l06549"></a><span class="lineno"> 6549</span>&#160; {</div>
<div class="line"><a name="l06550"></a><span class="lineno"> 6550</span>&#160; std::uint8_t len;</div>
<div class="line"><a name="l06551"></a><span class="lineno"> 6551</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len, result);</div>
<div class="line"><a name="l06552"></a><span class="lineno"> 6552</span>&#160; }</div>
<div class="line"><a name="l06553"></a><span class="lineno"> 6553</span>&#160; </div>
<div class="line"><a name="l06554"></a><span class="lineno"> 6554</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;i&#39;</span>:</div>
<div class="line"><a name="l06555"></a><span class="lineno"> 6555</span>&#160; {</div>
<div class="line"><a name="l06556"></a><span class="lineno"> 6556</span>&#160; std::int8_t len;</div>
<div class="line"><a name="l06557"></a><span class="lineno"> 6557</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len, result);</div>
<div class="line"><a name="l06558"></a><span class="lineno"> 6558</span>&#160; }</div>
<div class="line"><a name="l06559"></a><span class="lineno"> 6559</span>&#160; </div>
<div class="line"><a name="l06560"></a><span class="lineno"> 6560</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;I&#39;</span>:</div>
<div class="line"><a name="l06561"></a><span class="lineno"> 6561</span>&#160; {</div>
<div class="line"><a name="l06562"></a><span class="lineno"> 6562</span>&#160; std::int16_t len;</div>
<div class="line"><a name="l06563"></a><span class="lineno"> 6563</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len, result);</div>
<div class="line"><a name="l06564"></a><span class="lineno"> 6564</span>&#160; }</div>
<div class="line"><a name="l06565"></a><span class="lineno"> 6565</span>&#160; </div>
<div class="line"><a name="l06566"></a><span class="lineno"> 6566</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;l&#39;</span>:</div>
<div class="line"><a name="l06567"></a><span class="lineno"> 6567</span>&#160; {</div>
<div class="line"><a name="l06568"></a><span class="lineno"> 6568</span>&#160; std::int32_t len;</div>
<div class="line"><a name="l06569"></a><span class="lineno"> 6569</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len, result);</div>
<div class="line"><a name="l06570"></a><span class="lineno"> 6570</span>&#160; }</div>
<div class="line"><a name="l06571"></a><span class="lineno"> 6571</span>&#160; </div>
<div class="line"><a name="l06572"></a><span class="lineno"> 6572</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;L&#39;</span>:</div>
<div class="line"><a name="l06573"></a><span class="lineno"> 6573</span>&#160; {</div>
<div class="line"><a name="l06574"></a><span class="lineno"> 6574</span>&#160; std::int64_t len;</div>
<div class="line"><a name="l06575"></a><span class="lineno"> 6575</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len, result);</div>
<div class="line"><a name="l06576"></a><span class="lineno"> 6576</span>&#160; }</div>
<div class="line"><a name="l06577"></a><span class="lineno"> 6577</span>&#160; </div>
<div class="line"><a name="l06578"></a><span class="lineno"> 6578</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l06579"></a><span class="lineno"> 6579</span>&#160; <span class="keyword">auto</span> last_token = get_token_string();</div>
<div class="line"><a name="l06580"></a><span class="lineno"> 6580</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(113, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">&quot;expected length type specification (U, i, I, l, L); last byte: 0x&quot;</span> + last_token, <span class="stringliteral">&quot;string&quot;</span>)));</div>
<div class="line"><a name="l06581"></a><span class="lineno"> 6581</span>&#160; }</div>
<div class="line"><a name="l06582"></a><span class="lineno"> 6582</span>&#160; }</div>
<div class="line"><a name="l06583"></a><span class="lineno"> 6583</span>&#160; </div>
<div class="line"><a name="l06588"></a><span class="lineno"> 6588</span>&#160; <span class="keywordtype">bool</span> get_ubjson_size_value(std::size_t&amp; result)</div>
<div class="line"><a name="l06589"></a><span class="lineno"> 6589</span>&#160; {</div>
<div class="line"><a name="l06590"></a><span class="lineno"> 6590</span>&#160; <span class="keywordflow">switch</span> (get_ignore_noop())</div>
<div class="line"><a name="l06591"></a><span class="lineno"> 6591</span>&#160; {</div>
<div class="line"><a name="l06592"></a><span class="lineno"> 6592</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;U&#39;</span>:</div>
<div class="line"><a name="l06593"></a><span class="lineno"> 6593</span>&#160; {</div>
<div class="line"><a name="l06594"></a><span class="lineno"> 6594</span>&#160; std::uint8_t number;</div>
<div class="line"><a name="l06595"></a><span class="lineno"> 6595</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number)))</div>
<div class="line"><a name="l06596"></a><span class="lineno"> 6596</span>&#160; {</div>
<div class="line"><a name="l06597"></a><span class="lineno"> 6597</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06598"></a><span class="lineno"> 6598</span>&#160; }</div>
<div class="line"><a name="l06599"></a><span class="lineno"> 6599</span>&#160; result = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(number);</div>
<div class="line"><a name="l06600"></a><span class="lineno"> 6600</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l06601"></a><span class="lineno"> 6601</span>&#160; }</div>
<div class="line"><a name="l06602"></a><span class="lineno"> 6602</span>&#160; </div>
<div class="line"><a name="l06603"></a><span class="lineno"> 6603</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;i&#39;</span>:</div>
<div class="line"><a name="l06604"></a><span class="lineno"> 6604</span>&#160; {</div>
<div class="line"><a name="l06605"></a><span class="lineno"> 6605</span>&#160; std::int8_t number;</div>
<div class="line"><a name="l06606"></a><span class="lineno"> 6606</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number)))</div>
<div class="line"><a name="l06607"></a><span class="lineno"> 6607</span>&#160; {</div>
<div class="line"><a name="l06608"></a><span class="lineno"> 6608</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06609"></a><span class="lineno"> 6609</span>&#160; }</div>
<div class="line"><a name="l06610"></a><span class="lineno"> 6610</span>&#160; result = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(number);</div>
<div class="line"><a name="l06611"></a><span class="lineno"> 6611</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l06612"></a><span class="lineno"> 6612</span>&#160; }</div>
<div class="line"><a name="l06613"></a><span class="lineno"> 6613</span>&#160; </div>
<div class="line"><a name="l06614"></a><span class="lineno"> 6614</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;I&#39;</span>:</div>
<div class="line"><a name="l06615"></a><span class="lineno"> 6615</span>&#160; {</div>
<div class="line"><a name="l06616"></a><span class="lineno"> 6616</span>&#160; std::int16_t number;</div>
<div class="line"><a name="l06617"></a><span class="lineno"> 6617</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number)))</div>
<div class="line"><a name="l06618"></a><span class="lineno"> 6618</span>&#160; {</div>
<div class="line"><a name="l06619"></a><span class="lineno"> 6619</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06620"></a><span class="lineno"> 6620</span>&#160; }</div>
<div class="line"><a name="l06621"></a><span class="lineno"> 6621</span>&#160; result = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(number);</div>
<div class="line"><a name="l06622"></a><span class="lineno"> 6622</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l06623"></a><span class="lineno"> 6623</span>&#160; }</div>
<div class="line"><a name="l06624"></a><span class="lineno"> 6624</span>&#160; </div>
<div class="line"><a name="l06625"></a><span class="lineno"> 6625</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;l&#39;</span>:</div>
<div class="line"><a name="l06626"></a><span class="lineno"> 6626</span>&#160; {</div>
<div class="line"><a name="l06627"></a><span class="lineno"> 6627</span>&#160; std::int32_t number;</div>
<div class="line"><a name="l06628"></a><span class="lineno"> 6628</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number)))</div>
<div class="line"><a name="l06629"></a><span class="lineno"> 6629</span>&#160; {</div>
<div class="line"><a name="l06630"></a><span class="lineno"> 6630</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06631"></a><span class="lineno"> 6631</span>&#160; }</div>
<div class="line"><a name="l06632"></a><span class="lineno"> 6632</span>&#160; result = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(number);</div>
<div class="line"><a name="l06633"></a><span class="lineno"> 6633</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l06634"></a><span class="lineno"> 6634</span>&#160; }</div>
<div class="line"><a name="l06635"></a><span class="lineno"> 6635</span>&#160; </div>
<div class="line"><a name="l06636"></a><span class="lineno"> 6636</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;L&#39;</span>:</div>
<div class="line"><a name="l06637"></a><span class="lineno"> 6637</span>&#160; {</div>
<div class="line"><a name="l06638"></a><span class="lineno"> 6638</span>&#160; std::int64_t number;</div>
<div class="line"><a name="l06639"></a><span class="lineno"> 6639</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number)))</div>
<div class="line"><a name="l06640"></a><span class="lineno"> 6640</span>&#160; {</div>
<div class="line"><a name="l06641"></a><span class="lineno"> 6641</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06642"></a><span class="lineno"> 6642</span>&#160; }</div>
<div class="line"><a name="l06643"></a><span class="lineno"> 6643</span>&#160; result = <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(number);</div>
<div class="line"><a name="l06644"></a><span class="lineno"> 6644</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l06645"></a><span class="lineno"> 6645</span>&#160; }</div>
<div class="line"><a name="l06646"></a><span class="lineno"> 6646</span>&#160; </div>
<div class="line"><a name="l06647"></a><span class="lineno"> 6647</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l06648"></a><span class="lineno"> 6648</span>&#160; {</div>
<div class="line"><a name="l06649"></a><span class="lineno"> 6649</span>&#160; <span class="keyword">auto</span> last_token = get_token_string();</div>
<div class="line"><a name="l06650"></a><span class="lineno"> 6650</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(113, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">&quot;expected length type specification (U, i, I, l, L) after &#39;#&#39;; last byte: 0x&quot;</span> + last_token, <span class="stringliteral">&quot;size&quot;</span>)));</div>
<div class="line"><a name="l06651"></a><span class="lineno"> 6651</span>&#160; }</div>
<div class="line"><a name="l06652"></a><span class="lineno"> 6652</span>&#160; }</div>
<div class="line"><a name="l06653"></a><span class="lineno"> 6653</span>&#160; }</div>
<div class="line"><a name="l06654"></a><span class="lineno"> 6654</span>&#160; </div>
<div class="line"><a name="l06665"></a><span class="lineno"> 6665</span>&#160; <span class="keywordtype">bool</span> get_ubjson_size_type(std::pair&lt;std::size_t, int&gt;&amp; result)</div>
<div class="line"><a name="l06666"></a><span class="lineno"> 6666</span>&#160; {</div>
<div class="line"><a name="l06667"></a><span class="lineno"> 6667</span>&#160; result.first = string_t::npos; <span class="comment">// size</span></div>
<div class="line"><a name="l06668"></a><span class="lineno"> 6668</span>&#160; result.second = 0; <span class="comment">// type</span></div>
<div class="line"><a name="l06669"></a><span class="lineno"> 6669</span>&#160; </div>
<div class="line"><a name="l06670"></a><span class="lineno"> 6670</span>&#160; get_ignore_noop();</div>
<div class="line"><a name="l06671"></a><span class="lineno"> 6671</span>&#160; </div>
<div class="line"><a name="l06672"></a><span class="lineno"> 6672</span>&#160; <span class="keywordflow">if</span> (current == <span class="charliteral">&#39;$&#39;</span>)</div>
<div class="line"><a name="l06673"></a><span class="lineno"> 6673</span>&#160; {</div>
<div class="line"><a name="l06674"></a><span class="lineno"> 6674</span>&#160; result.second = get(); <span class="comment">// must not ignore &#39;N&#39;, because &#39;N&#39; maybe the type</span></div>
<div class="line"><a name="l06675"></a><span class="lineno"> 6675</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">&quot;type&quot;</span>)))</div>
<div class="line"><a name="l06676"></a><span class="lineno"> 6676</span>&#160; {</div>
<div class="line"><a name="l06677"></a><span class="lineno"> 6677</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06678"></a><span class="lineno"> 6678</span>&#160; }</div>
<div class="line"><a name="l06679"></a><span class="lineno"> 6679</span>&#160; </div>
<div class="line"><a name="l06680"></a><span class="lineno"> 6680</span>&#160; get_ignore_noop();</div>
<div class="line"><a name="l06681"></a><span class="lineno"> 6681</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(current != <span class="charliteral">&#39;#&#39;</span>))</div>
<div class="line"><a name="l06682"></a><span class="lineno"> 6682</span>&#160; {</div>
<div class="line"><a name="l06683"></a><span class="lineno"> 6683</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">&quot;value&quot;</span>)))</div>
<div class="line"><a name="l06684"></a><span class="lineno"> 6684</span>&#160; {</div>
<div class="line"><a name="l06685"></a><span class="lineno"> 6685</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06686"></a><span class="lineno"> 6686</span>&#160; }</div>
<div class="line"><a name="l06687"></a><span class="lineno"> 6687</span>&#160; <span class="keyword">auto</span> last_token = get_token_string();</div>
<div class="line"><a name="l06688"></a><span class="lineno"> 6688</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(112, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">&quot;expected &#39;#&#39; after type information; last byte: 0x&quot;</span> + last_token, <span class="stringliteral">&quot;size&quot;</span>)));</div>
<div class="line"><a name="l06689"></a><span class="lineno"> 6689</span>&#160; }</div>
<div class="line"><a name="l06690"></a><span class="lineno"> 6690</span>&#160; </div>
<div class="line"><a name="l06691"></a><span class="lineno"> 6691</span>&#160; <span class="keywordflow">return</span> get_ubjson_size_value(result.first);</div>
<div class="line"><a name="l06692"></a><span class="lineno"> 6692</span>&#160; }</div>
<div class="line"><a name="l06693"></a><span class="lineno"> 6693</span>&#160; </div>
<div class="line"><a name="l06694"></a><span class="lineno"> 6694</span>&#160; <span class="keywordflow">if</span> (current == <span class="charliteral">&#39;#&#39;</span>)</div>
<div class="line"><a name="l06695"></a><span class="lineno"> 6695</span>&#160; {</div>
<div class="line"><a name="l06696"></a><span class="lineno"> 6696</span>&#160; <span class="keywordflow">return</span> get_ubjson_size_value(result.first);</div>
<div class="line"><a name="l06697"></a><span class="lineno"> 6697</span>&#160; }</div>
<div class="line"><a name="l06698"></a><span class="lineno"> 6698</span>&#160; </div>
<div class="line"><a name="l06699"></a><span class="lineno"> 6699</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l06700"></a><span class="lineno"> 6700</span>&#160; }</div>
<div class="line"><a name="l06701"></a><span class="lineno"> 6701</span>&#160; </div>
<div class="line"><a name="l06706"></a><span class="lineno"> 6706</span>&#160; <span class="keywordtype">bool</span> get_ubjson_value(<span class="keyword">const</span> <span class="keywordtype">int</span> prefix)</div>
<div class="line"><a name="l06707"></a><span class="lineno"> 6707</span>&#160; {</div>
<div class="line"><a name="l06708"></a><span class="lineno"> 6708</span>&#160; <span class="keywordflow">switch</span> (prefix)</div>
<div class="line"><a name="l06709"></a><span class="lineno"> 6709</span>&#160; {</div>
<div class="line"><a name="l06710"></a><span class="lineno"> 6710</span>&#160; <span class="keywordflow">case</span> std::char_traits&lt;char&gt;::eof(): <span class="comment">// EOF</span></div>
<div class="line"><a name="l06711"></a><span class="lineno"> 6711</span>&#160; return unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">ubjson</a>, <span class="stringliteral">&quot;value&quot;</span>);</div>
<div class="line"><a name="l06712"></a><span class="lineno"> 6712</span>&#160; </div>
<div class="line"><a name="l06713"></a><span class="lineno"> 6713</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;T&#39;</span>: <span class="comment">// true</span></div>
<div class="line"><a name="l06714"></a><span class="lineno"> 6714</span>&#160; <span class="keywordflow">return</span> sax-&gt;boolean(<span class="keyword">true</span>);</div>
<div class="line"><a name="l06715"></a><span class="lineno"> 6715</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;F&#39;</span>: <span class="comment">// false</span></div>
<div class="line"><a name="l06716"></a><span class="lineno"> 6716</span>&#160; <span class="keywordflow">return</span> sax-&gt;boolean(<span class="keyword">false</span>);</div>
<div class="line"><a name="l06717"></a><span class="lineno"> 6717</span>&#160; </div>
<div class="line"><a name="l06718"></a><span class="lineno"> 6718</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;Z&#39;</span>: <span class="comment">// null</span></div>
<div class="line"><a name="l06719"></a><span class="lineno"> 6719</span>&#160; <span class="keywordflow">return</span> sax-&gt;null();</div>
<div class="line"><a name="l06720"></a><span class="lineno"> 6720</span>&#160; </div>
<div class="line"><a name="l06721"></a><span class="lineno"> 6721</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;U&#39;</span>:</div>
<div class="line"><a name="l06722"></a><span class="lineno"> 6722</span>&#160; {</div>
<div class="line"><a name="l06723"></a><span class="lineno"> 6723</span>&#160; std::uint8_t number;</div>
<div class="line"><a name="l06724"></a><span class="lineno"> 6724</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax-&gt;number_unsigned(number);</div>
<div class="line"><a name="l06725"></a><span class="lineno"> 6725</span>&#160; }</div>
<div class="line"><a name="l06726"></a><span class="lineno"> 6726</span>&#160; </div>
<div class="line"><a name="l06727"></a><span class="lineno"> 6727</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;i&#39;</span>:</div>
<div class="line"><a name="l06728"></a><span class="lineno"> 6728</span>&#160; {</div>
<div class="line"><a name="l06729"></a><span class="lineno"> 6729</span>&#160; std::int8_t number;</div>
<div class="line"><a name="l06730"></a><span class="lineno"> 6730</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax-&gt;number_integer(number);</div>
<div class="line"><a name="l06731"></a><span class="lineno"> 6731</span>&#160; }</div>
<div class="line"><a name="l06732"></a><span class="lineno"> 6732</span>&#160; </div>
<div class="line"><a name="l06733"></a><span class="lineno"> 6733</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;I&#39;</span>:</div>
<div class="line"><a name="l06734"></a><span class="lineno"> 6734</span>&#160; {</div>
<div class="line"><a name="l06735"></a><span class="lineno"> 6735</span>&#160; std::int16_t number;</div>
<div class="line"><a name="l06736"></a><span class="lineno"> 6736</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax-&gt;number_integer(number);</div>
<div class="line"><a name="l06737"></a><span class="lineno"> 6737</span>&#160; }</div>
<div class="line"><a name="l06738"></a><span class="lineno"> 6738</span>&#160; </div>
<div class="line"><a name="l06739"></a><span class="lineno"> 6739</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;l&#39;</span>:</div>
<div class="line"><a name="l06740"></a><span class="lineno"> 6740</span>&#160; {</div>
<div class="line"><a name="l06741"></a><span class="lineno"> 6741</span>&#160; std::int32_t number;</div>
<div class="line"><a name="l06742"></a><span class="lineno"> 6742</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax-&gt;number_integer(number);</div>
<div class="line"><a name="l06743"></a><span class="lineno"> 6743</span>&#160; }</div>
<div class="line"><a name="l06744"></a><span class="lineno"> 6744</span>&#160; </div>
<div class="line"><a name="l06745"></a><span class="lineno"> 6745</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;L&#39;</span>:</div>
<div class="line"><a name="l06746"></a><span class="lineno"> 6746</span>&#160; {</div>
<div class="line"><a name="l06747"></a><span class="lineno"> 6747</span>&#160; std::int64_t number;</div>
<div class="line"><a name="l06748"></a><span class="lineno"> 6748</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax-&gt;number_integer(number);</div>
<div class="line"><a name="l06749"></a><span class="lineno"> 6749</span>&#160; }</div>
<div class="line"><a name="l06750"></a><span class="lineno"> 6750</span>&#160; </div>
<div class="line"><a name="l06751"></a><span class="lineno"> 6751</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;d&#39;</span>:</div>
<div class="line"><a name="l06752"></a><span class="lineno"> 6752</span>&#160; {</div>
<div class="line"><a name="l06753"></a><span class="lineno"> 6753</span>&#160; <span class="keywordtype">float</span> number;</div>
<div class="line"><a name="l06754"></a><span class="lineno"> 6754</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax-&gt;number_float(<span class="keyword">static_cast&lt;</span>number_float_t<span class="keyword">&gt;</span>(number), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l06755"></a><span class="lineno"> 6755</span>&#160; }</div>
<div class="line"><a name="l06756"></a><span class="lineno"> 6756</span>&#160; </div>
<div class="line"><a name="l06757"></a><span class="lineno"> 6757</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;D&#39;</span>:</div>
<div class="line"><a name="l06758"></a><span class="lineno"> 6758</span>&#160; {</div>
<div class="line"><a name="l06759"></a><span class="lineno"> 6759</span>&#160; <span class="keywordtype">double</span> number;</div>
<div class="line"><a name="l06760"></a><span class="lineno"> 6760</span>&#160; <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax-&gt;number_float(<span class="keyword">static_cast&lt;</span>number_float_t<span class="keyword">&gt;</span>(number), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l06761"></a><span class="lineno"> 6761</span>&#160; }</div>
<div class="line"><a name="l06762"></a><span class="lineno"> 6762</span>&#160; </div>
<div class="line"><a name="l06763"></a><span class="lineno"> 6763</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;C&#39;</span>: <span class="comment">// char</span></div>
<div class="line"><a name="l06764"></a><span class="lineno"> 6764</span>&#160; {</div>
<div class="line"><a name="l06765"></a><span class="lineno"> 6765</span>&#160; get();</div>
<div class="line"><a name="l06766"></a><span class="lineno"> 6766</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">&quot;char&quot;</span>)))</div>
<div class="line"><a name="l06767"></a><span class="lineno"> 6767</span>&#160; {</div>
<div class="line"><a name="l06768"></a><span class="lineno"> 6768</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06769"></a><span class="lineno"> 6769</span>&#160; }</div>
<div class="line"><a name="l06770"></a><span class="lineno"> 6770</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(current &gt; 127))</div>
<div class="line"><a name="l06771"></a><span class="lineno"> 6771</span>&#160; {</div>
<div class="line"><a name="l06772"></a><span class="lineno"> 6772</span>&#160; <span class="keyword">auto</span> last_token = get_token_string();</div>
<div class="line"><a name="l06773"></a><span class="lineno"> 6773</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(113, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">&quot;byte after &#39;C&#39; must be in range 0x00..0x7F; last byte: 0x&quot;</span> + last_token, <span class="stringliteral">&quot;char&quot;</span>)));</div>
<div class="line"><a name="l06774"></a><span class="lineno"> 6774</span>&#160; }</div>
<div class="line"><a name="l06775"></a><span class="lineno"> 6775</span>&#160; string_t s(1, <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(current));</div>
<div class="line"><a name="l06776"></a><span class="lineno"> 6776</span>&#160; <span class="keywordflow">return</span> sax-&gt;string(s);</div>
<div class="line"><a name="l06777"></a><span class="lineno"> 6777</span>&#160; }</div>
<div class="line"><a name="l06778"></a><span class="lineno"> 6778</span>&#160; </div>
<div class="line"><a name="l06779"></a><span class="lineno"> 6779</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;S&#39;</span>: <span class="comment">// string</span></div>
<div class="line"><a name="l06780"></a><span class="lineno"> 6780</span>&#160; {</div>
<div class="line"><a name="l06781"></a><span class="lineno"> 6781</span>&#160; string_t s;</div>
<div class="line"><a name="l06782"></a><span class="lineno"> 6782</span>&#160; <span class="keywordflow">return</span> get_ubjson_string(s) and sax-&gt;string(s);</div>
<div class="line"><a name="l06783"></a><span class="lineno"> 6783</span>&#160; }</div>
<div class="line"><a name="l06784"></a><span class="lineno"> 6784</span>&#160; </div>
<div class="line"><a name="l06785"></a><span class="lineno"> 6785</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;[&#39;</span>: <span class="comment">// array</span></div>
<div class="line"><a name="l06786"></a><span class="lineno"> 6786</span>&#160; <span class="keywordflow">return</span> get_ubjson_array();</div>
<div class="line"><a name="l06787"></a><span class="lineno"> 6787</span>&#160; </div>
<div class="line"><a name="l06788"></a><span class="lineno"> 6788</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>: <span class="comment">// object</span></div>
<div class="line"><a name="l06789"></a><span class="lineno"> 6789</span>&#160; <span class="keywordflow">return</span> get_ubjson_object();</div>
<div class="line"><a name="l06790"></a><span class="lineno"> 6790</span>&#160; </div>
<div class="line"><a name="l06791"></a><span class="lineno"> 6791</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// anything else</span></div>
<div class="line"><a name="l06792"></a><span class="lineno"> 6792</span>&#160; {</div>
<div class="line"><a name="l06793"></a><span class="lineno"> 6793</span>&#160; <span class="keyword">auto</span> last_token = get_token_string();</div>
<div class="line"><a name="l06794"></a><span class="lineno"> 6794</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(112, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">&quot;invalid byte: 0x&quot;</span> + last_token, <span class="stringliteral">&quot;value&quot;</span>)));</div>
<div class="line"><a name="l06795"></a><span class="lineno"> 6795</span>&#160; }</div>
<div class="line"><a name="l06796"></a><span class="lineno"> 6796</span>&#160; }</div>
<div class="line"><a name="l06797"></a><span class="lineno"> 6797</span>&#160; }</div>
<div class="line"><a name="l06798"></a><span class="lineno"> 6798</span>&#160; </div>
<div class="line"><a name="l06802"></a><span class="lineno"> 6802</span>&#160; <span class="keywordtype">bool</span> get_ubjson_array()</div>
<div class="line"><a name="l06803"></a><span class="lineno"> 6803</span>&#160; {</div>
<div class="line"><a name="l06804"></a><span class="lineno"> 6804</span>&#160; std::pair&lt;std::size_t, int&gt; size_and_type;</div>
<div class="line"><a name="l06805"></a><span class="lineno"> 6805</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_size_type(size_and_type)))</div>
<div class="line"><a name="l06806"></a><span class="lineno"> 6806</span>&#160; {</div>
<div class="line"><a name="l06807"></a><span class="lineno"> 6807</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06808"></a><span class="lineno"> 6808</span>&#160; }</div>
<div class="line"><a name="l06809"></a><span class="lineno"> 6809</span>&#160; </div>
<div class="line"><a name="l06810"></a><span class="lineno"> 6810</span>&#160; <span class="keywordflow">if</span> (size_and_type.first != string_t::npos)</div>
<div class="line"><a name="l06811"></a><span class="lineno"> 6811</span>&#160; {</div>
<div class="line"><a name="l06812"></a><span class="lineno"> 6812</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_array(size_and_type.first)))</div>
<div class="line"><a name="l06813"></a><span class="lineno"> 6813</span>&#160; {</div>
<div class="line"><a name="l06814"></a><span class="lineno"> 6814</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06815"></a><span class="lineno"> 6815</span>&#160; }</div>
<div class="line"><a name="l06816"></a><span class="lineno"> 6816</span>&#160; </div>
<div class="line"><a name="l06817"></a><span class="lineno"> 6817</span>&#160; <span class="keywordflow">if</span> (size_and_type.second != 0)</div>
<div class="line"><a name="l06818"></a><span class="lineno"> 6818</span>&#160; {</div>
<div class="line"><a name="l06819"></a><span class="lineno"> 6819</span>&#160; <span class="keywordflow">if</span> (size_and_type.second != <span class="charliteral">&#39;N&#39;</span>)</div>
<div class="line"><a name="l06820"></a><span class="lineno"> 6820</span>&#160; {</div>
<div class="line"><a name="l06821"></a><span class="lineno"> 6821</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; size_and_type.first; ++i)</div>
<div class="line"><a name="l06822"></a><span class="lineno"> 6822</span>&#160; {</div>
<div class="line"><a name="l06823"></a><span class="lineno"> 6823</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_value(size_and_type.second)))</div>
<div class="line"><a name="l06824"></a><span class="lineno"> 6824</span>&#160; {</div>
<div class="line"><a name="l06825"></a><span class="lineno"> 6825</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06826"></a><span class="lineno"> 6826</span>&#160; }</div>
<div class="line"><a name="l06827"></a><span class="lineno"> 6827</span>&#160; }</div>
<div class="line"><a name="l06828"></a><span class="lineno"> 6828</span>&#160; }</div>
<div class="line"><a name="l06829"></a><span class="lineno"> 6829</span>&#160; }</div>
<div class="line"><a name="l06830"></a><span class="lineno"> 6830</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l06831"></a><span class="lineno"> 6831</span>&#160; {</div>
<div class="line"><a name="l06832"></a><span class="lineno"> 6832</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; size_and_type.first; ++i)</div>
<div class="line"><a name="l06833"></a><span class="lineno"> 6833</span>&#160; {</div>
<div class="line"><a name="l06834"></a><span class="lineno"> 6834</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_ubjson_internal()))</div>
<div class="line"><a name="l06835"></a><span class="lineno"> 6835</span>&#160; {</div>
<div class="line"><a name="l06836"></a><span class="lineno"> 6836</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06837"></a><span class="lineno"> 6837</span>&#160; }</div>
<div class="line"><a name="l06838"></a><span class="lineno"> 6838</span>&#160; }</div>
<div class="line"><a name="l06839"></a><span class="lineno"> 6839</span>&#160; }</div>
<div class="line"><a name="l06840"></a><span class="lineno"> 6840</span>&#160; }</div>
<div class="line"><a name="l06841"></a><span class="lineno"> 6841</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l06842"></a><span class="lineno"> 6842</span>&#160; {</div>
<div class="line"><a name="l06843"></a><span class="lineno"> 6843</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_array(std::size_t(-1))))</div>
<div class="line"><a name="l06844"></a><span class="lineno"> 6844</span>&#160; {</div>
<div class="line"><a name="l06845"></a><span class="lineno"> 6845</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06846"></a><span class="lineno"> 6846</span>&#160; }</div>
<div class="line"><a name="l06847"></a><span class="lineno"> 6847</span>&#160; </div>
<div class="line"><a name="l06848"></a><span class="lineno"> 6848</span>&#160; <span class="keywordflow">while</span> (current != <span class="charliteral">&#39;]&#39;</span>)</div>
<div class="line"><a name="l06849"></a><span class="lineno"> 6849</span>&#160; {</div>
<div class="line"><a name="l06850"></a><span class="lineno"> 6850</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_ubjson_internal(<span class="keyword">false</span>)))</div>
<div class="line"><a name="l06851"></a><span class="lineno"> 6851</span>&#160; {</div>
<div class="line"><a name="l06852"></a><span class="lineno"> 6852</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06853"></a><span class="lineno"> 6853</span>&#160; }</div>
<div class="line"><a name="l06854"></a><span class="lineno"> 6854</span>&#160; get_ignore_noop();</div>
<div class="line"><a name="l06855"></a><span class="lineno"> 6855</span>&#160; }</div>
<div class="line"><a name="l06856"></a><span class="lineno"> 6856</span>&#160; }</div>
<div class="line"><a name="l06857"></a><span class="lineno"> 6857</span>&#160; </div>
<div class="line"><a name="l06858"></a><span class="lineno"> 6858</span>&#160; <span class="keywordflow">return</span> sax-&gt;end_array();</div>
<div class="line"><a name="l06859"></a><span class="lineno"> 6859</span>&#160; }</div>
<div class="line"><a name="l06860"></a><span class="lineno"> 6860</span>&#160; </div>
<div class="line"><a name="l06864"></a><span class="lineno"> 6864</span>&#160; <span class="keywordtype">bool</span> get_ubjson_object()</div>
<div class="line"><a name="l06865"></a><span class="lineno"> 6865</span>&#160; {</div>
<div class="line"><a name="l06866"></a><span class="lineno"> 6866</span>&#160; std::pair&lt;std::size_t, int&gt; size_and_type;</div>
<div class="line"><a name="l06867"></a><span class="lineno"> 6867</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_size_type(size_and_type)))</div>
<div class="line"><a name="l06868"></a><span class="lineno"> 6868</span>&#160; {</div>
<div class="line"><a name="l06869"></a><span class="lineno"> 6869</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06870"></a><span class="lineno"> 6870</span>&#160; }</div>
<div class="line"><a name="l06871"></a><span class="lineno"> 6871</span>&#160; </div>
<div class="line"><a name="l06872"></a><span class="lineno"> 6872</span>&#160; string_t key;</div>
<div class="line"><a name="l06873"></a><span class="lineno"> 6873</span>&#160; <span class="keywordflow">if</span> (size_and_type.first != string_t::npos)</div>
<div class="line"><a name="l06874"></a><span class="lineno"> 6874</span>&#160; {</div>
<div class="line"><a name="l06875"></a><span class="lineno"> 6875</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_object(size_and_type.first)))</div>
<div class="line"><a name="l06876"></a><span class="lineno"> 6876</span>&#160; {</div>
<div class="line"><a name="l06877"></a><span class="lineno"> 6877</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06878"></a><span class="lineno"> 6878</span>&#160; }</div>
<div class="line"><a name="l06879"></a><span class="lineno"> 6879</span>&#160; </div>
<div class="line"><a name="l06880"></a><span class="lineno"> 6880</span>&#160; <span class="keywordflow">if</span> (size_and_type.second != 0)</div>
<div class="line"><a name="l06881"></a><span class="lineno"> 6881</span>&#160; {</div>
<div class="line"><a name="l06882"></a><span class="lineno"> 6882</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; size_and_type.first; ++i)</div>
<div class="line"><a name="l06883"></a><span class="lineno"> 6883</span>&#160; {</div>
<div class="line"><a name="l06884"></a><span class="lineno"> 6884</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_string(key) or not sax-&gt;key(key)))</div>
<div class="line"><a name="l06885"></a><span class="lineno"> 6885</span>&#160; {</div>
<div class="line"><a name="l06886"></a><span class="lineno"> 6886</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06887"></a><span class="lineno"> 6887</span>&#160; }</div>
<div class="line"><a name="l06888"></a><span class="lineno"> 6888</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_value(size_and_type.second)))</div>
<div class="line"><a name="l06889"></a><span class="lineno"> 6889</span>&#160; {</div>
<div class="line"><a name="l06890"></a><span class="lineno"> 6890</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06891"></a><span class="lineno"> 6891</span>&#160; }</div>
<div class="line"><a name="l06892"></a><span class="lineno"> 6892</span>&#160; key.clear();</div>
<div class="line"><a name="l06893"></a><span class="lineno"> 6893</span>&#160; }</div>
<div class="line"><a name="l06894"></a><span class="lineno"> 6894</span>&#160; }</div>
<div class="line"><a name="l06895"></a><span class="lineno"> 6895</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l06896"></a><span class="lineno"> 6896</span>&#160; {</div>
<div class="line"><a name="l06897"></a><span class="lineno"> 6897</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; size_and_type.first; ++i)</div>
<div class="line"><a name="l06898"></a><span class="lineno"> 6898</span>&#160; {</div>
<div class="line"><a name="l06899"></a><span class="lineno"> 6899</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_string(key) or not sax-&gt;key(key)))</div>
<div class="line"><a name="l06900"></a><span class="lineno"> 6900</span>&#160; {</div>
<div class="line"><a name="l06901"></a><span class="lineno"> 6901</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06902"></a><span class="lineno"> 6902</span>&#160; }</div>
<div class="line"><a name="l06903"></a><span class="lineno"> 6903</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_ubjson_internal()))</div>
<div class="line"><a name="l06904"></a><span class="lineno"> 6904</span>&#160; {</div>
<div class="line"><a name="l06905"></a><span class="lineno"> 6905</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06906"></a><span class="lineno"> 6906</span>&#160; }</div>
<div class="line"><a name="l06907"></a><span class="lineno"> 6907</span>&#160; key.clear();</div>
<div class="line"><a name="l06908"></a><span class="lineno"> 6908</span>&#160; }</div>
<div class="line"><a name="l06909"></a><span class="lineno"> 6909</span>&#160; }</div>
<div class="line"><a name="l06910"></a><span class="lineno"> 6910</span>&#160; }</div>
<div class="line"><a name="l06911"></a><span class="lineno"> 6911</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l06912"></a><span class="lineno"> 6912</span>&#160; {</div>
<div class="line"><a name="l06913"></a><span class="lineno"> 6913</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_object(std::size_t(-1))))</div>
<div class="line"><a name="l06914"></a><span class="lineno"> 6914</span>&#160; {</div>
<div class="line"><a name="l06915"></a><span class="lineno"> 6915</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06916"></a><span class="lineno"> 6916</span>&#160; }</div>
<div class="line"><a name="l06917"></a><span class="lineno"> 6917</span>&#160; </div>
<div class="line"><a name="l06918"></a><span class="lineno"> 6918</span>&#160; <span class="keywordflow">while</span> (current != <span class="charliteral">&#39;}&#39;</span>)</div>
<div class="line"><a name="l06919"></a><span class="lineno"> 6919</span>&#160; {</div>
<div class="line"><a name="l06920"></a><span class="lineno"> 6920</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_string(key, <span class="keyword">false</span>) or not sax-&gt;key(key)))</div>
<div class="line"><a name="l06921"></a><span class="lineno"> 6921</span>&#160; {</div>
<div class="line"><a name="l06922"></a><span class="lineno"> 6922</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06923"></a><span class="lineno"> 6923</span>&#160; }</div>
<div class="line"><a name="l06924"></a><span class="lineno"> 6924</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_ubjson_internal()))</div>
<div class="line"><a name="l06925"></a><span class="lineno"> 6925</span>&#160; {</div>
<div class="line"><a name="l06926"></a><span class="lineno"> 6926</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06927"></a><span class="lineno"> 6927</span>&#160; }</div>
<div class="line"><a name="l06928"></a><span class="lineno"> 6928</span>&#160; get_ignore_noop();</div>
<div class="line"><a name="l06929"></a><span class="lineno"> 6929</span>&#160; key.clear();</div>
<div class="line"><a name="l06930"></a><span class="lineno"> 6930</span>&#160; }</div>
<div class="line"><a name="l06931"></a><span class="lineno"> 6931</span>&#160; }</div>
<div class="line"><a name="l06932"></a><span class="lineno"> 6932</span>&#160; </div>
<div class="line"><a name="l06933"></a><span class="lineno"> 6933</span>&#160; <span class="keywordflow">return</span> sax-&gt;end_object();</div>
<div class="line"><a name="l06934"></a><span class="lineno"> 6934</span>&#160; }</div>
<div class="line"><a name="l06935"></a><span class="lineno"> 6935</span>&#160; </div>
<div class="line"><a name="l06937"></a><span class="lineno"> 6937</span>&#160; <span class="comment">// Utility functions //</span></div>
<div class="line"><a name="l06939"></a><span class="lineno"> 6939</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l06949"></a><span class="lineno"> 6949</span>&#160; <span class="keywordtype">int</span> get()</div>
<div class="line"><a name="l06950"></a><span class="lineno"> 6950</span>&#160; {</div>
<div class="line"><a name="l06951"></a><span class="lineno"> 6951</span>&#160; ++chars_read;</div>
<div class="line"><a name="l06952"></a><span class="lineno"> 6952</span>&#160; <span class="keywordflow">return</span> current = ia-&gt;get_character();</div>
<div class="line"><a name="l06953"></a><span class="lineno"> 6953</span>&#160; }</div>
<div class="line"><a name="l06954"></a><span class="lineno"> 6954</span>&#160; </div>
<div class="line"><a name="l06958"></a><span class="lineno"> 6958</span>&#160; <span class="keywordtype">int</span> get_ignore_noop()</div>
<div class="line"><a name="l06959"></a><span class="lineno"> 6959</span>&#160; {</div>
<div class="line"><a name="l06960"></a><span class="lineno"> 6960</span>&#160; <span class="keywordflow">do</span></div>
<div class="line"><a name="l06961"></a><span class="lineno"> 6961</span>&#160; {</div>
<div class="line"><a name="l06962"></a><span class="lineno"> 6962</span>&#160; get();</div>
<div class="line"><a name="l06963"></a><span class="lineno"> 6963</span>&#160; }</div>
<div class="line"><a name="l06964"></a><span class="lineno"> 6964</span>&#160; <span class="keywordflow">while</span> (current == <span class="charliteral">&#39;N&#39;</span>);</div>
<div class="line"><a name="l06965"></a><span class="lineno"> 6965</span>&#160; </div>
<div class="line"><a name="l06966"></a><span class="lineno"> 6966</span>&#160; <span class="keywordflow">return</span> current;</div>
<div class="line"><a name="l06967"></a><span class="lineno"> 6967</span>&#160; }</div>
<div class="line"><a name="l06968"></a><span class="lineno"> 6968</span>&#160; </div>
<div class="line"><a name="l06969"></a><span class="lineno"> 6969</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l06970"></a><span class="lineno"> 6970</span>&#160;<span class="comment"> @brief read a number from the input</span></div>
<div class="line"><a name="l06971"></a><span class="lineno"> 6971</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l06972"></a><span class="lineno"> 6972</span>&#160;<span class="comment"> @tparam NumberType the type of the number</span></div>
<div class="line"><a name="l06973"></a><span class="lineno"> 6973</span>&#160;<span class="comment"> @param[in] format the current format (for diagnostics)</span></div>
<div class="line"><a name="l06974"></a><span class="lineno"> 6974</span>&#160;<span class="comment"> @param[out] result number of type @a NumberType</span></div>
<div class="line"><a name="l06975"></a><span class="lineno"> 6975</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l06976"></a><span class="lineno"> 6976</span>&#160;<span class="comment"> @return whether conversion completed</span></div>
<div class="line"><a name="l06977"></a><span class="lineno"> 6977</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l06978"></a><span class="lineno"> 6978</span>&#160;<span class="comment"> @note This function needs to respect the system&#39;s endianess, because</span></div>
<div class="line"><a name="l06979"></a><span class="lineno"> 6979</span>&#160;<span class="comment"> bytes in CBOR, MessagePack, and UBJSON are stored in network order</span></div>
<div class="line"><a name="l06980"></a><span class="lineno"> 6980</span>&#160;<span class="comment"> (big endian) and therefore need reordering on little endian systems.</span></div>
<div class="line"><a name="l06981"></a><span class="lineno"> 6981</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l06982"></a><span class="lineno"> 6982</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> NumberType, <span class="keywordtype">bool</span> InputIsLittleEndian = false&gt;</div>
<div class="line"><a name="l06983"></a><span class="lineno"> 6983</span>&#160; <span class="keywordtype">bool</span> get_number(<span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format, NumberType&amp; result)</div>
<div class="line"><a name="l06984"></a><span class="lineno"> 6984</span>&#160; {</div>
<div class="line"><a name="l06985"></a><span class="lineno"> 6985</span>&#160; <span class="comment">// step 1: read input into array with system&#39;s byte order</span></div>
<div class="line"><a name="l06986"></a><span class="lineno"> 6986</span>&#160; std::array&lt;std::uint8_t, <span class="keyword">sizeof</span>(NumberType)&gt; vec;</div>
<div class="line"><a name="l06987"></a><span class="lineno"> 6987</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; <span class="keyword">sizeof</span>(NumberType); ++i)</div>
<div class="line"><a name="l06988"></a><span class="lineno"> 6988</span>&#160; {</div>
<div class="line"><a name="l06989"></a><span class="lineno"> 6989</span>&#160; get();</div>
<div class="line"><a name="l06990"></a><span class="lineno"> 6990</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(format, <span class="stringliteral">&quot;number&quot;</span>)))</div>
<div class="line"><a name="l06991"></a><span class="lineno"> 6991</span>&#160; {</div>
<div class="line"><a name="l06992"></a><span class="lineno"> 6992</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l06993"></a><span class="lineno"> 6993</span>&#160; }</div>
<div class="line"><a name="l06994"></a><span class="lineno"> 6994</span>&#160; </div>
<div class="line"><a name="l06995"></a><span class="lineno"> 6995</span>&#160; <span class="comment">// reverse byte order prior to conversion if necessary</span></div>
<div class="line"><a name="l06996"></a><span class="lineno"> 6996</span>&#160; <span class="keywordflow">if</span> (is_little_endian != InputIsLittleEndian)</div>
<div class="line"><a name="l06997"></a><span class="lineno"> 6997</span>&#160; {</div>
<div class="line"><a name="l06998"></a><span class="lineno"> 6998</span>&#160; vec[<span class="keyword">sizeof</span>(NumberType) - i - 1] = <span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(current);</div>
<div class="line"><a name="l06999"></a><span class="lineno"> 6999</span>&#160; }</div>
<div class="line"><a name="l07000"></a><span class="lineno"> 7000</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l07001"></a><span class="lineno"> 7001</span>&#160; {</div>
<div class="line"><a name="l07002"></a><span class="lineno"> 7002</span>&#160; vec[i] = <span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(current); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l07003"></a><span class="lineno"> 7003</span>&#160; }</div>
<div class="line"><a name="l07004"></a><span class="lineno"> 7004</span>&#160; }</div>
<div class="line"><a name="l07005"></a><span class="lineno"> 7005</span>&#160; </div>
<div class="line"><a name="l07006"></a><span class="lineno"> 7006</span>&#160; <span class="comment">// step 2: convert array into number of type T and return</span></div>
<div class="line"><a name="l07007"></a><span class="lineno"> 7007</span>&#160; std::memcpy(&amp;result, vec.data(), <span class="keyword">sizeof</span>(NumberType));</div>
<div class="line"><a name="l07008"></a><span class="lineno"> 7008</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l07009"></a><span class="lineno"> 7009</span>&#160; }</div>
<div class="line"><a name="l07010"></a><span class="lineno"> 7010</span>&#160; </div>
<div class="line"><a name="l07025"></a><span class="lineno"> 7025</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> NumberType&gt;</div>
<div class="line"><a name="l07026"></a><span class="lineno"> 7026</span>&#160; <span class="keywordtype">bool</span> get_string(<span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format,</div>
<div class="line"><a name="l07027"></a><span class="lineno"> 7027</span>&#160; <span class="keyword">const</span> NumberType len,</div>
<div class="line"><a name="l07028"></a><span class="lineno"> 7028</span>&#160; string_t&amp; result)</div>
<div class="line"><a name="l07029"></a><span class="lineno"> 7029</span>&#160; {</div>
<div class="line"><a name="l07030"></a><span class="lineno"> 7030</span>&#160; <span class="keywordtype">bool</span> success = <span class="keyword">true</span>;</div>
<div class="line"><a name="l07031"></a><span class="lineno"> 7031</span>&#160; std::generate_n(std::back_inserter(result), len, [<span class="keyword">this</span>, &amp;success, &amp;format]()</div>
<div class="line"><a name="l07032"></a><span class="lineno"> 7032</span>&#160; {</div>
<div class="line"><a name="l07033"></a><span class="lineno"> 7033</span>&#160; get();</div>
<div class="line"><a name="l07034"></a><span class="lineno"> 7034</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(format, <span class="stringliteral">&quot;string&quot;</span>)))</div>
<div class="line"><a name="l07035"></a><span class="lineno"> 7035</span>&#160; {</div>
<div class="line"><a name="l07036"></a><span class="lineno"> 7036</span>&#160; success = <span class="keyword">false</span>;</div>
<div class="line"><a name="l07037"></a><span class="lineno"> 7037</span>&#160; }</div>
<div class="line"><a name="l07038"></a><span class="lineno"> 7038</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(current);</div>
<div class="line"><a name="l07039"></a><span class="lineno"> 7039</span>&#160; });</div>
<div class="line"><a name="l07040"></a><span class="lineno"> 7040</span>&#160; <span class="keywordflow">return</span> success;</div>
<div class="line"><a name="l07041"></a><span class="lineno"> 7041</span>&#160; }</div>
<div class="line"><a name="l07042"></a><span class="lineno"> 7042</span>&#160; </div>
<div class="line"><a name="l07048"></a><span class="lineno"> 7048</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
<div class="line"><a name="l07049"></a><span class="lineno"> 7049</span>&#160; bool unexpect_eof(const <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format, const <span class="keywordtype">char</span>* context)<span class="keyword"> const</span></div>
<div class="line"><a name="l07050"></a><span class="lineno"> 7050</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l07051"></a><span class="lineno"> 7051</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(current == std::char_traits&lt;char&gt;::eof()))</div>
<div class="line"><a name="l07052"></a><span class="lineno"> 7052</span>&#160; {</div>
<div class="line"><a name="l07053"></a><span class="lineno"> 7053</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(chars_read, <span class="stringliteral">&quot;&lt;end of file&gt;&quot;</span>,</div>
<div class="line"><a name="l07054"></a><span class="lineno"> 7054</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(110, chars_read, exception_message(format, <span class="stringliteral">&quot;unexpected end of input&quot;</span>, context)));</div>
<div class="line"><a name="l07055"></a><span class="lineno"> 7055</span>&#160; }</div>
<div class="line"><a name="l07056"></a><span class="lineno"> 7056</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l07057"></a><span class="lineno"> 7057</span>&#160; }</div>
<div class="line"><a name="l07058"></a><span class="lineno"> 7058</span>&#160; </div>
<div class="line"><a name="l07062"></a><span class="lineno"> 7062</span>&#160; std::string get_token_string()<span class="keyword"> const</span></div>
<div class="line"><a name="l07063"></a><span class="lineno"> 7063</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l07064"></a><span class="lineno"> 7064</span>&#160; std::array&lt;char, 3&gt; cr{{}};</div>
<div class="line"><a name="l07065"></a><span class="lineno"> 7065</span>&#160; (std::snprintf)(cr.data(), cr.size(), <span class="stringliteral">&quot;%.2hhX&quot;</span>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(current));</div>
<div class="line"><a name="l07066"></a><span class="lineno"> 7066</span>&#160; <span class="keywordflow">return</span> std::string{cr.data()};</div>
<div class="line"><a name="l07067"></a><span class="lineno"> 7067</span>&#160; }</div>
<div class="line"><a name="l07068"></a><span class="lineno"> 7068</span>&#160; </div>
<div class="line"><a name="l07075"></a><span class="lineno"> 7075</span>&#160; std::string exception_message(<span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format,</div>
<div class="line"><a name="l07076"></a><span class="lineno"> 7076</span>&#160; <span class="keyword">const</span> std::string&amp; detail,</div>
<div class="line"><a name="l07077"></a><span class="lineno"> 7077</span>&#160; <span class="keyword">const</span> std::string&amp; context)<span class="keyword"> const</span></div>
<div class="line"><a name="l07078"></a><span class="lineno"> 7078</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l07079"></a><span class="lineno"> 7079</span>&#160; std::string error_msg = <span class="stringliteral">&quot;syntax error while parsing &quot;</span>;</div>
<div class="line"><a name="l07080"></a><span class="lineno"> 7080</span>&#160; </div>
<div class="line"><a name="l07081"></a><span class="lineno"> 7081</span>&#160; <span class="keywordflow">switch</span> (format)</div>
<div class="line"><a name="l07082"></a><span class="lineno"> 7082</span>&#160; {</div>
<div class="line"><a name="l07083"></a><span class="lineno"> 7083</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>:</div>
<div class="line"><a name="l07084"></a><span class="lineno"> 7084</span>&#160; error_msg += <span class="stringliteral">&quot;CBOR&quot;</span>;</div>
<div class="line"><a name="l07085"></a><span class="lineno"> 7085</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07086"></a><span class="lineno"> 7086</span>&#160; </div>
<div class="line"><a name="l07087"></a><span class="lineno"> 7087</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>:</div>
<div class="line"><a name="l07088"></a><span class="lineno"> 7088</span>&#160; error_msg += <span class="stringliteral">&quot;MessagePack&quot;</span>;</div>
<div class="line"><a name="l07089"></a><span class="lineno"> 7089</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07090"></a><span class="lineno"> 7090</span>&#160; </div>
<div class="line"><a name="l07091"></a><span class="lineno"> 7091</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>:</div>
<div class="line"><a name="l07092"></a><span class="lineno"> 7092</span>&#160; error_msg += <span class="stringliteral">&quot;UBJSON&quot;</span>;</div>
<div class="line"><a name="l07093"></a><span class="lineno"> 7093</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07094"></a><span class="lineno"> 7094</span>&#160; </div>
<div class="line"><a name="l07095"></a><span class="lineno"> 7095</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>:</div>
<div class="line"><a name="l07096"></a><span class="lineno"> 7096</span>&#160; error_msg += <span class="stringliteral">&quot;BSON&quot;</span>;</div>
<div class="line"><a name="l07097"></a><span class="lineno"> 7097</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07098"></a><span class="lineno"> 7098</span>&#160; </div>
<div class="line"><a name="l07099"></a><span class="lineno"> 7099</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l07100"></a><span class="lineno"> 7100</span>&#160; assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l07101"></a><span class="lineno"> 7101</span>&#160; }</div>
<div class="line"><a name="l07102"></a><span class="lineno"> 7102</span>&#160; </div>
<div class="line"><a name="l07103"></a><span class="lineno"> 7103</span>&#160; <span class="keywordflow">return</span> error_msg + <span class="stringliteral">&quot; &quot;</span> + context + <span class="stringliteral">&quot;: &quot;</span> + detail;</div>
<div class="line"><a name="l07104"></a><span class="lineno"> 7104</span>&#160; }</div>
<div class="line"><a name="l07105"></a><span class="lineno"> 7105</span>&#160; </div>
<div class="line"><a name="l07106"></a><span class="lineno"> 7106</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l07108"></a><span class="lineno"> 7108</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">input_adapter_t</a> ia = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l07109"></a><span class="lineno"> 7109</span>&#160; </div>
<div class="line"><a name="l07111"></a><span class="lineno"> 7111</span>&#160; <span class="keywordtype">int</span> current = std::char_traits&lt;char&gt;::eof();</div>
<div class="line"><a name="l07112"></a><span class="lineno"> 7112</span>&#160; </div>
<div class="line"><a name="l07114"></a><span class="lineno"> 7114</span>&#160; std::size_t chars_read = 0;</div>
<div class="line"><a name="l07115"></a><span class="lineno"> 7115</span>&#160; </div>
<div class="line"><a name="l07117"></a><span class="lineno"> 7117</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> is_little_endian = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a1e31dbfcf9567c8c2d4f0e4eb1b0230a">little_endianess</a>();</div>
<div class="line"><a name="l07118"></a><span class="lineno"> 7118</span>&#160; </div>
<div class="line"><a name="l07120"></a><span class="lineno"> 7120</span>&#160; json_sax_t* sax = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l07121"></a><span class="lineno"> 7121</span>&#160;};</div>
<div class="line"><a name="l07122"></a><span class="lineno"> 7122</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l07123"></a><span class="lineno"> 7123</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l07124"></a><span class="lineno"> 7124</span>&#160; </div>
<div class="line"><a name="l07125"></a><span class="lineno"> 7125</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/input_adapters.hpp&gt;</span></div>
<div class="line"><a name="l07126"></a><span class="lineno"> 7126</span>&#160; </div>
<div class="line"><a name="l07127"></a><span class="lineno"> 7127</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/lexer.hpp&gt;</span></div>
<div class="line"><a name="l07128"></a><span class="lineno"> 7128</span>&#160; </div>
<div class="line"><a name="l07129"></a><span class="lineno"> 7129</span>&#160; </div>
<div class="line"><a name="l07130"></a><span class="lineno"> 7130</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span> <span class="comment">// array</span></div>
<div class="line"><a name="l07131"></a><span class="lineno"> 7131</span>&#160;<span class="preprocessor">#include &lt;clocale&gt;</span> <span class="comment">// localeconv</span></div>
<div class="line"><a name="l07132"></a><span class="lineno"> 7132</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// size_t</span></div>
<div class="line"><a name="l07133"></a><span class="lineno"> 7133</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span> <span class="comment">// snprintf</span></div>
<div class="line"><a name="l07134"></a><span class="lineno"> 7134</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span> <span class="comment">// strtof, strtod, strtold, strtoll, strtoull</span></div>
<div class="line"><a name="l07135"></a><span class="lineno"> 7135</span>&#160;<span class="preprocessor">#include &lt;initializer_list&gt;</span> <span class="comment">// initializer_list</span></div>
<div class="line"><a name="l07136"></a><span class="lineno"> 7136</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// char_traits, string</span></div>
<div class="line"><a name="l07137"></a><span class="lineno"> 7137</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// move</span></div>
<div class="line"><a name="l07138"></a><span class="lineno"> 7138</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span> <span class="comment">// vector</span></div>
<div class="line"><a name="l07139"></a><span class="lineno"> 7139</span>&#160; </div>
<div class="line"><a name="l07140"></a><span class="lineno"> 7140</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/input_adapters.hpp&gt;</span></div>
<div class="line"><a name="l07141"></a><span class="lineno"> 7141</span>&#160; </div>
<div class="line"><a name="l07142"></a><span class="lineno"> 7142</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/position_t.hpp&gt;</span></div>
<div class="line"><a name="l07143"></a><span class="lineno"> 7143</span>&#160; </div>
<div class="line"><a name="l07144"></a><span class="lineno"> 7144</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l07145"></a><span class="lineno"> 7145</span>&#160; </div>
<div class="line"><a name="l07146"></a><span class="lineno"> 7146</span>&#160; </div>
<div class="line"><a name="l07147"></a><span class="lineno"> 7147</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l07148"></a><span class="lineno"> 7148</span>&#160;{</div>
<div class="line"><a name="l07149"></a><span class="lineno"> 7149</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l07150"></a><span class="lineno"> 7150</span>&#160;{</div>
<div class="line"><a name="l07152"></a><span class="lineno"> 7152</span>&#160;<span class="comment">// lexer //</span></div>
<div class="line"><a name="l07154"></a><span class="lineno"> 7154</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l07160"></a><span class="lineno"> 7160</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l07161"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html"> 7161</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a></div>
<div class="line"><a name="l07162"></a><span class="lineno"> 7162</span>&#160;{</div>
<div class="line"><a name="l07163"></a><span class="lineno"> 7163</span>&#160; <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l07164"></a><span class="lineno"> 7164</span>&#160; <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l07165"></a><span class="lineno"> 7165</span>&#160; <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l07166"></a><span class="lineno"> 7166</span>&#160; <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l07167"></a><span class="lineno"> 7167</span>&#160; </div>
<div class="line"><a name="l07168"></a><span class="lineno"> 7168</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l07170"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098"> 7170</a></span>&#160; <span class="keyword">enum class</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">token_type</a></div>
<div class="line"><a name="l07171"></a><span class="lineno"> 7171</span>&#160; {</div>
<div class="line"><a name="l07172"></a><span class="lineno"> 7172</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a42dd1a73d072bb6bf3f494f22b15db8e">uninitialized</a>, </div>
<div class="line"><a name="l07173"></a><span class="lineno"> 7173</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a85cc1a37b0aaa52de40e72f0ed4e0c0d">literal_true</a>, </div>
<div class="line"><a name="l07174"></a><span class="lineno"> 7174</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098afab1694b1b3937a079f4625fe0b6108b">literal_false</a>, </div>
<div class="line"><a name="l07175"></a><span class="lineno"> 7175</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ab7ae4c0e46d86f884677768160b26e9e">literal_null</a>, </div>
<div class="line"><a name="l07176"></a><span class="lineno"> 7176</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2b490e8bf366b4cbe3ebd99b26ce15ce">value_string</a>, </div>
<div class="line"><a name="l07177"></a><span class="lineno"> 7177</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aaf1f040fcd2f674d2e5893d7a731078f">value_unsigned</a>, </div>
<div class="line"><a name="l07178"></a><span class="lineno"> 7178</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a5064b6655d88a50ae16665cf7751c0ee">value_integer</a>, </div>
<div class="line"><a name="l07179"></a><span class="lineno"> 7179</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a0d2671a6f81efb91e77f6ac3bdb11443">value_float</a>, </div>
<div class="line"><a name="l07180"></a><span class="lineno"> 7180</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a16c226b4425b68560fea322b46dabe01">begin_array</a>, </div>
<div class="line"><a name="l07181"></a><span class="lineno"> 7181</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a9a9ffd53b6869d4eca271b1ed5b57fe8">begin_object</a>, </div>
<div class="line"><a name="l07182"></a><span class="lineno"> 7182</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2f3e68e7f111a1e5c7728742b3ca2b7f">end_array</a>, </div>
<div class="line"><a name="l07183"></a><span class="lineno"> 7183</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a7d5b4427866814de4d8f132721d59c87">end_object</a>, </div>
<div class="line"><a name="l07184"></a><span class="lineno"> 7184</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098acc3c64f8ae08c00de1b33f19a4d2913a">name_separator</a>, </div>
<div class="line"><a name="l07185"></a><span class="lineno"> 7185</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a745373036100d7392ad62c617cab59af">value_separator</a>, </div>
<div class="line"><a name="l07186"></a><span class="lineno"> 7186</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d">parse_error</a>, </div>
<div class="line"><a name="l07187"></a><span class="lineno"> 7187</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aca11f56dd477c09e06583dbdcda0985f">end_of_input</a>, </div>
<div class="line"><a name="l07188"></a><span class="lineno"> 7188</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ad2a8e6f6721cccec0b466301dd9495a5">literal_or_value</a> </div>
<div class="line"><a name="l07189"></a><span class="lineno"> 7189</span>&#160; };</div>
<div class="line"><a name="l07190"></a><span class="lineno"> 7190</span>&#160; </div>
<div class="line"><a name="l07192"></a><span class="lineno"> 7192</span>&#160; <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
<div class="line"><a name="l07193"></a><span class="lineno"> 7193</span>&#160; <a class="code" href="json_8hpp.html#a0d17bf1a54fc45a04ced6d3aa86a96e3">JSON_HEDLEY_CONST</a></div>
<div class="line"><a name="l07194"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a06f5e2129cffcc72eee84d88e126e3e3"> 7194</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a06f5e2129cffcc72eee84d88e126e3e3">token_type_name</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">token_type</a> t) noexcept</div>
<div class="line"><a name="l07195"></a><span class="lineno"> 7195</span>&#160; {</div>
<div class="line"><a name="l07196"></a><span class="lineno"> 7196</span>&#160; <span class="keywordflow">switch</span> (t)</div>
<div class="line"><a name="l07197"></a><span class="lineno"> 7197</span>&#160; {</div>
<div class="line"><a name="l07198"></a><span class="lineno"> 7198</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a42dd1a73d072bb6bf3f494f22b15db8e">token_type::uninitialized</a>:</div>
<div class="line"><a name="l07199"></a><span class="lineno"> 7199</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&lt;uninitialized&gt;&quot;</span>;</div>
<div class="line"><a name="l07200"></a><span class="lineno"> 7200</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a85cc1a37b0aaa52de40e72f0ed4e0c0d">token_type::literal_true</a>:</div>
<div class="line"><a name="l07201"></a><span class="lineno"> 7201</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;true literal&quot;</span>;</div>
<div class="line"><a name="l07202"></a><span class="lineno"> 7202</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098afab1694b1b3937a079f4625fe0b6108b">token_type::literal_false</a>:</div>
<div class="line"><a name="l07203"></a><span class="lineno"> 7203</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;false literal&quot;</span>;</div>
<div class="line"><a name="l07204"></a><span class="lineno"> 7204</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ab7ae4c0e46d86f884677768160b26e9e">token_type::literal_null</a>:</div>
<div class="line"><a name="l07205"></a><span class="lineno"> 7205</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;null literal&quot;</span>;</div>
<div class="line"><a name="l07206"></a><span class="lineno"> 7206</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2b490e8bf366b4cbe3ebd99b26ce15ce">token_type::value_string</a>:</div>
<div class="line"><a name="l07207"></a><span class="lineno"> 7207</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;string literal&quot;</span>;</div>
<div class="line"><a name="l07208"></a><span class="lineno"> 7208</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aaf1f040fcd2f674d2e5893d7a731078f">lexer::token_type::value_unsigned</a>:</div>
<div class="line"><a name="l07209"></a><span class="lineno"> 7209</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a5064b6655d88a50ae16665cf7751c0ee">lexer::token_type::value_integer</a>:</div>
<div class="line"><a name="l07210"></a><span class="lineno"> 7210</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a0d2671a6f81efb91e77f6ac3bdb11443">lexer::token_type::value_float</a>:</div>
<div class="line"><a name="l07211"></a><span class="lineno"> 7211</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;number literal&quot;</span>;</div>
<div class="line"><a name="l07212"></a><span class="lineno"> 7212</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a16c226b4425b68560fea322b46dabe01">token_type::begin_array</a>:</div>
<div class="line"><a name="l07213"></a><span class="lineno"> 7213</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;[&#39;&quot;</span>;</div>
<div class="line"><a name="l07214"></a><span class="lineno"> 7214</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a9a9ffd53b6869d4eca271b1ed5b57fe8">token_type::begin_object</a>:</div>
<div class="line"><a name="l07215"></a><span class="lineno"> 7215</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;{&#39;&quot;</span>;</div>
<div class="line"><a name="l07216"></a><span class="lineno"> 7216</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2f3e68e7f111a1e5c7728742b3ca2b7f">token_type::end_array</a>:</div>
<div class="line"><a name="l07217"></a><span class="lineno"> 7217</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;]&#39;&quot;</span>;</div>
<div class="line"><a name="l07218"></a><span class="lineno"> 7218</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a7d5b4427866814de4d8f132721d59c87">token_type::end_object</a>:</div>
<div class="line"><a name="l07219"></a><span class="lineno"> 7219</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;}&#39;&quot;</span>;</div>
<div class="line"><a name="l07220"></a><span class="lineno"> 7220</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098acc3c64f8ae08c00de1b33f19a4d2913a">token_type::name_separator</a>:</div>
<div class="line"><a name="l07221"></a><span class="lineno"> 7221</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;:&#39;&quot;</span>;</div>
<div class="line"><a name="l07222"></a><span class="lineno"> 7222</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a745373036100d7392ad62c617cab59af">token_type::value_separator</a>:</div>
<div class="line"><a name="l07223"></a><span class="lineno"> 7223</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;,&#39;&quot;</span>;</div>
<div class="line"><a name="l07224"></a><span class="lineno"> 7224</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d">token_type::parse_error</a>:</div>
<div class="line"><a name="l07225"></a><span class="lineno"> 7225</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&lt;parse error&gt;&quot;</span>;</div>
<div class="line"><a name="l07226"></a><span class="lineno"> 7226</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aca11f56dd477c09e06583dbdcda0985f">token_type::end_of_input</a>:</div>
<div class="line"><a name="l07227"></a><span class="lineno"> 7227</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;end of input&quot;</span>;</div>
<div class="line"><a name="l07228"></a><span class="lineno"> 7228</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ad2a8e6f6721cccec0b466301dd9495a5">token_type::literal_or_value</a>:</div>
<div class="line"><a name="l07229"></a><span class="lineno"> 7229</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;[&#39;, &#39;{&#39;, or a literal&quot;</span>;</div>
<div class="line"><a name="l07230"></a><span class="lineno"> 7230</span>&#160; <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a name="l07231"></a><span class="lineno"> 7231</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// catch non-enum values</span></div>
<div class="line"><a name="l07232"></a><span class="lineno"> 7232</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;unknown token&quot;</span>;</div>
<div class="line"><a name="l07233"></a><span class="lineno"> 7233</span>&#160; <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a name="l07234"></a><span class="lineno"> 7234</span>&#160; }</div>
<div class="line"><a name="l07235"></a><span class="lineno"> 7235</span>&#160; }</div>
<div class="line"><a name="l07236"></a><span class="lineno"> 7236</span>&#160; </div>
<div class="line"><a name="l07237"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#ab6818e0fc05f4a52c65aeb967dd79919"> 7237</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#ab6818e0fc05f4a52c65aeb967dd79919">lexer</a>(<a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">detail::input_adapter_t</a>&amp;&amp; adapter)</div>
<div class="line"><a name="l07238"></a><span class="lineno"> 7238</span>&#160; : ia(<a class="code" href="namespacestd.html">std</a>::move(adapter)), decimal_point_char(get_decimal_point()) {}</div>
<div class="line"><a name="l07239"></a><span class="lineno"> 7239</span>&#160; </div>
<div class="line"><a name="l07240"></a><span class="lineno"> 7240</span>&#160; <span class="comment">// delete because of pointer members</span></div>
<div class="line"><a name="l07241"></a><span class="lineno"> 7241</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#ab6818e0fc05f4a52c65aeb967dd79919">lexer</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l07242"></a><span class="lineno"> 7242</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#ab6818e0fc05f4a52c65aeb967dd79919">lexer</a>(<a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l07243"></a><span class="lineno"> 7243</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a33e97dee7c5faf1b36aff5b74a6c8f55">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l07244"></a><span class="lineno"> 7244</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a33e97dee7c5faf1b36aff5b74a6c8f55">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l07245"></a><span class="lineno"> 7245</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a2f2ef6f5aca9a0c48fcfb1290f7b2b0d">~lexer</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l07246"></a><span class="lineno"> 7246</span>&#160; </div>
<div class="line"><a name="l07247"></a><span class="lineno"> 7247</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l07249"></a><span class="lineno"> 7249</span>&#160; <span class="comment">// locales</span></div>
<div class="line"><a name="l07251"></a><span class="lineno"> 7251</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l07253"></a><span class="lineno"> 7253</span>&#160; <a class="code" href="json_8hpp.html#af5c84b7d1a43361bdc14cc6941078000">JSON_HEDLEY_PURE</a></div>
<div class="line"><a name="l07254"></a><span class="lineno"> 7254</span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> get_decimal_point() noexcept</div>
<div class="line"><a name="l07255"></a><span class="lineno"> 7255</span>&#160; {</div>
<div class="line"><a name="l07256"></a><span class="lineno"> 7256</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> loc = localeconv();</div>
<div class="line"><a name="l07257"></a><span class="lineno"> 7257</span>&#160; assert(loc != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l07258"></a><span class="lineno"> 7258</span>&#160; <span class="keywordflow">return</span> (loc-&gt;decimal_point == <span class="keyword">nullptr</span>) ? <span class="charliteral">&#39;.&#39;</span> : *(loc-&gt;decimal_point);</div>
<div class="line"><a name="l07259"></a><span class="lineno"> 7259</span>&#160; }</div>
<div class="line"><a name="l07260"></a><span class="lineno"> 7260</span>&#160; </div>
<div class="line"><a name="l07262"></a><span class="lineno"> 7262</span>&#160; <span class="comment">// scan functions</span></div>
<div class="line"><a name="l07264"></a><span class="lineno"> 7264</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l07280"></a><span class="lineno"> 7280</span>&#160; <span class="keywordtype">int</span> get_codepoint()</div>
<div class="line"><a name="l07281"></a><span class="lineno"> 7281</span>&#160; {</div>
<div class="line"><a name="l07282"></a><span class="lineno"> 7282</span>&#160; <span class="comment">// this function only makes sense after reading `\u`</span></div>
<div class="line"><a name="l07283"></a><span class="lineno"> 7283</span>&#160; assert(current == <span class="charliteral">&#39;u&#39;</span>);</div>
<div class="line"><a name="l07284"></a><span class="lineno"> 7284</span>&#160; <span class="keywordtype">int</span> codepoint = 0;</div>
<div class="line"><a name="l07285"></a><span class="lineno"> 7285</span>&#160; </div>
<div class="line"><a name="l07286"></a><span class="lineno"> 7286</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> factors = { 12u, 8u, 4u, 0u };</div>
<div class="line"><a name="l07287"></a><span class="lineno"> 7287</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> factor : factors)</div>
<div class="line"><a name="l07288"></a><span class="lineno"> 7288</span>&#160; {</div>
<div class="line"><a name="l07289"></a><span class="lineno"> 7289</span>&#160; get();</div>
<div class="line"><a name="l07290"></a><span class="lineno"> 7290</span>&#160; </div>
<div class="line"><a name="l07291"></a><span class="lineno"> 7291</span>&#160; <span class="keywordflow">if</span> (current &gt;= <span class="charliteral">&#39;0&#39;</span> and current &lt;= <span class="charliteral">&#39;9&#39;</span>)</div>
<div class="line"><a name="l07292"></a><span class="lineno"> 7292</span>&#160; {</div>
<div class="line"><a name="l07293"></a><span class="lineno"> 7293</span>&#160; codepoint += <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>((<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(current) - 0x30u) &lt;&lt; factor);</div>
<div class="line"><a name="l07294"></a><span class="lineno"> 7294</span>&#160; }</div>
<div class="line"><a name="l07295"></a><span class="lineno"> 7295</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current &gt;= <span class="charliteral">&#39;A&#39;</span> and current &lt;= <span class="charliteral">&#39;F&#39;</span>)</div>
<div class="line"><a name="l07296"></a><span class="lineno"> 7296</span>&#160; {</div>
<div class="line"><a name="l07297"></a><span class="lineno"> 7297</span>&#160; codepoint += <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>((<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(current) - 0x37u) &lt;&lt; factor);</div>
<div class="line"><a name="l07298"></a><span class="lineno"> 7298</span>&#160; }</div>
<div class="line"><a name="l07299"></a><span class="lineno"> 7299</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current &gt;= <span class="charliteral">&#39;a&#39;</span> and current &lt;= <span class="charliteral">&#39;f&#39;</span>)</div>
<div class="line"><a name="l07300"></a><span class="lineno"> 7300</span>&#160; {</div>
<div class="line"><a name="l07301"></a><span class="lineno"> 7301</span>&#160; codepoint += <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>((<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(current) - 0x57u) &lt;&lt; factor);</div>
<div class="line"><a name="l07302"></a><span class="lineno"> 7302</span>&#160; }</div>
<div class="line"><a name="l07303"></a><span class="lineno"> 7303</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l07304"></a><span class="lineno"> 7304</span>&#160; {</div>
<div class="line"><a name="l07305"></a><span class="lineno"> 7305</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l07306"></a><span class="lineno"> 7306</span>&#160; }</div>
<div class="line"><a name="l07307"></a><span class="lineno"> 7307</span>&#160; }</div>
<div class="line"><a name="l07308"></a><span class="lineno"> 7308</span>&#160; </div>
<div class="line"><a name="l07309"></a><span class="lineno"> 7309</span>&#160; assert(0x0000 &lt;= codepoint and codepoint &lt;= 0xFFFF);</div>
<div class="line"><a name="l07310"></a><span class="lineno"> 7310</span>&#160; <span class="keywordflow">return</span> codepoint;</div>
<div class="line"><a name="l07311"></a><span class="lineno"> 7311</span>&#160; }</div>
<div class="line"><a name="l07312"></a><span class="lineno"> 7312</span>&#160; </div>
<div class="line"><a name="l07328"></a><span class="lineno"> 7328</span>&#160; <span class="keywordtype">bool</span> next_byte_in_range(std::initializer_list&lt;int&gt; ranges)</div>
<div class="line"><a name="l07329"></a><span class="lineno"> 7329</span>&#160; {</div>
<div class="line"><a name="l07330"></a><span class="lineno"> 7330</span>&#160; assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6);</div>
<div class="line"><a name="l07331"></a><span class="lineno"> 7331</span>&#160; add(current);</div>
<div class="line"><a name="l07332"></a><span class="lineno"> 7332</span>&#160; </div>
<div class="line"><a name="l07333"></a><span class="lineno"> 7333</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> range = ranges.begin(); range != ranges.end(); ++range)</div>
<div class="line"><a name="l07334"></a><span class="lineno"> 7334</span>&#160; {</div>
<div class="line"><a name="l07335"></a><span class="lineno"> 7335</span>&#160; get();</div>
<div class="line"><a name="l07336"></a><span class="lineno"> 7336</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(*range &lt;= current and current &lt;= *(++range)))</div>
<div class="line"><a name="l07337"></a><span class="lineno"> 7337</span>&#160; {</div>
<div class="line"><a name="l07338"></a><span class="lineno"> 7338</span>&#160; add(current);</div>
<div class="line"><a name="l07339"></a><span class="lineno"> 7339</span>&#160; }</div>
<div class="line"><a name="l07340"></a><span class="lineno"> 7340</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l07341"></a><span class="lineno"> 7341</span>&#160; {</div>
<div class="line"><a name="l07342"></a><span class="lineno"> 7342</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: ill-formed UTF-8 byte&quot;</span>;</div>
<div class="line"><a name="l07343"></a><span class="lineno"> 7343</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l07344"></a><span class="lineno"> 7344</span>&#160; }</div>
<div class="line"><a name="l07345"></a><span class="lineno"> 7345</span>&#160; }</div>
<div class="line"><a name="l07346"></a><span class="lineno"> 7346</span>&#160; </div>
<div class="line"><a name="l07347"></a><span class="lineno"> 7347</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l07348"></a><span class="lineno"> 7348</span>&#160; }</div>
<div class="line"><a name="l07349"></a><span class="lineno"> 7349</span>&#160; </div>
<div class="line"><a name="l07365"></a><span class="lineno"> 7365</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">token_type</a> scan_string()</div>
<div class="line"><a name="l07366"></a><span class="lineno"> 7366</span>&#160; {</div>
<div class="line"><a name="l07367"></a><span class="lineno"> 7367</span>&#160; <span class="comment">// reset token_buffer (ignore opening quote)</span></div>
<div class="line"><a name="l07368"></a><span class="lineno"> 7368</span>&#160; reset();</div>
<div class="line"><a name="l07369"></a><span class="lineno"> 7369</span>&#160; </div>
<div class="line"><a name="l07370"></a><span class="lineno"> 7370</span>&#160; <span class="comment">// we entered the function by reading an open quote</span></div>
<div class="line"><a name="l07371"></a><span class="lineno"> 7371</span>&#160; assert(current == <span class="charliteral">&#39;\&quot;&#39;</span>);</div>
<div class="line"><a name="l07372"></a><span class="lineno"> 7372</span>&#160; </div>
<div class="line"><a name="l07373"></a><span class="lineno"> 7373</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
<div class="line"><a name="l07374"></a><span class="lineno"> 7374</span>&#160; {</div>
<div class="line"><a name="l07375"></a><span class="lineno"> 7375</span>&#160; <span class="comment">// get next character</span></div>
<div class="line"><a name="l07376"></a><span class="lineno"> 7376</span>&#160; <span class="keywordflow">switch</span> (get())</div>
<div class="line"><a name="l07377"></a><span class="lineno"> 7377</span>&#160; {</div>
<div class="line"><a name="l07378"></a><span class="lineno"> 7378</span>&#160; <span class="comment">// end of file while parsing string</span></div>
<div class="line"><a name="l07379"></a><span class="lineno"> 7379</span>&#160; <span class="keywordflow">case</span> std::char_traits&lt;char&gt;::eof():</div>
<div class="line"><a name="l07380"></a><span class="lineno"> 7380</span>&#160; {</div>
<div class="line"><a name="l07381"></a><span class="lineno"> 7381</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: missing closing quote&quot;</span>;</div>
<div class="line"><a name="l07382"></a><span class="lineno"> 7382</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d">token_type::parse_error</a>;</div>
<div class="line"><a name="l07383"></a><span class="lineno"> 7383</span>&#160; }</div>
<div class="line"><a name="l07384"></a><span class="lineno"> 7384</span>&#160; </div>
<div class="line"><a name="l07385"></a><span class="lineno"> 7385</span>&#160; <span class="comment">// closing quote</span></div>
<div class="line"><a name="l07386"></a><span class="lineno"> 7386</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\&quot;&#39;</span>:</div>
<div class="line"><a name="l07387"></a><span class="lineno"> 7387</span>&#160; {</div>
<div class="line"><a name="l07388"></a><span class="lineno"> 7388</span>&#160; <span class="keywordflow">return</span> token_type::value_string;</div>
<div class="line"><a name="l07389"></a><span class="lineno"> 7389</span>&#160; }</div>
<div class="line"><a name="l07390"></a><span class="lineno"> 7390</span>&#160; </div>
<div class="line"><a name="l07391"></a><span class="lineno"> 7391</span>&#160; <span class="comment">// escapes</span></div>
<div class="line"><a name="l07392"></a><span class="lineno"> 7392</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>:</div>
<div class="line"><a name="l07393"></a><span class="lineno"> 7393</span>&#160; {</div>
<div class="line"><a name="l07394"></a><span class="lineno"> 7394</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
<div class="line"><a name="l07395"></a><span class="lineno"> 7395</span>&#160; {</div>
<div class="line"><a name="l07396"></a><span class="lineno"> 7396</span>&#160; <span class="comment">// quotation mark</span></div>
<div class="line"><a name="l07397"></a><span class="lineno"> 7397</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\&quot;&#39;</span>:</div>
<div class="line"><a name="l07398"></a><span class="lineno"> 7398</span>&#160; add(<span class="charliteral">&#39;\&quot;&#39;</span>);</div>
<div class="line"><a name="l07399"></a><span class="lineno"> 7399</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07400"></a><span class="lineno"> 7400</span>&#160; <span class="comment">// reverse solidus</span></div>
<div class="line"><a name="l07401"></a><span class="lineno"> 7401</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>:</div>
<div class="line"><a name="l07402"></a><span class="lineno"> 7402</span>&#160; add(<span class="charliteral">&#39;\\&#39;</span>);</div>
<div class="line"><a name="l07403"></a><span class="lineno"> 7403</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07404"></a><span class="lineno"> 7404</span>&#160; <span class="comment">// solidus</span></div>
<div class="line"><a name="l07405"></a><span class="lineno"> 7405</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;/&#39;</span>:</div>
<div class="line"><a name="l07406"></a><span class="lineno"> 7406</span>&#160; add(<span class="charliteral">&#39;/&#39;</span>);</div>
<div class="line"><a name="l07407"></a><span class="lineno"> 7407</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07408"></a><span class="lineno"> 7408</span>&#160; <span class="comment">// backspace</span></div>
<div class="line"><a name="l07409"></a><span class="lineno"> 7409</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;b&#39;</span>:</div>
<div class="line"><a name="l07410"></a><span class="lineno"> 7410</span>&#160; add(<span class="charliteral">&#39;\b&#39;</span>);</div>
<div class="line"><a name="l07411"></a><span class="lineno"> 7411</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07412"></a><span class="lineno"> 7412</span>&#160; <span class="comment">// form feed</span></div>
<div class="line"><a name="l07413"></a><span class="lineno"> 7413</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;f&#39;</span>:</div>
<div class="line"><a name="l07414"></a><span class="lineno"> 7414</span>&#160; add(<span class="charliteral">&#39;\f&#39;</span>);</div>
<div class="line"><a name="l07415"></a><span class="lineno"> 7415</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07416"></a><span class="lineno"> 7416</span>&#160; <span class="comment">// line feed</span></div>
<div class="line"><a name="l07417"></a><span class="lineno"> 7417</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;n&#39;</span>:</div>
<div class="line"><a name="l07418"></a><span class="lineno"> 7418</span>&#160; add(<span class="charliteral">&#39;\n&#39;</span>);</div>
<div class="line"><a name="l07419"></a><span class="lineno"> 7419</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07420"></a><span class="lineno"> 7420</span>&#160; <span class="comment">// carriage return</span></div>
<div class="line"><a name="l07421"></a><span class="lineno"> 7421</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;r&#39;</span>:</div>
<div class="line"><a name="l07422"></a><span class="lineno"> 7422</span>&#160; add(<span class="charliteral">&#39;\r&#39;</span>);</div>
<div class="line"><a name="l07423"></a><span class="lineno"> 7423</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07424"></a><span class="lineno"> 7424</span>&#160; <span class="comment">// tab</span></div>
<div class="line"><a name="l07425"></a><span class="lineno"> 7425</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;t&#39;</span>:</div>
<div class="line"><a name="l07426"></a><span class="lineno"> 7426</span>&#160; add(<span class="charliteral">&#39;\t&#39;</span>);</div>
<div class="line"><a name="l07427"></a><span class="lineno"> 7427</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07428"></a><span class="lineno"> 7428</span>&#160; </div>
<div class="line"><a name="l07429"></a><span class="lineno"> 7429</span>&#160; <span class="comment">// unicode escapes</span></div>
<div class="line"><a name="l07430"></a><span class="lineno"> 7430</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;u&#39;</span>:</div>
<div class="line"><a name="l07431"></a><span class="lineno"> 7431</span>&#160; {</div>
<div class="line"><a name="l07432"></a><span class="lineno"> 7432</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> codepoint1 = get_codepoint();</div>
<div class="line"><a name="l07433"></a><span class="lineno"> 7433</span>&#160; <span class="keywordtype">int</span> codepoint = codepoint1; <span class="comment">// start with codepoint1</span></div>
<div class="line"><a name="l07434"></a><span class="lineno"> 7434</span>&#160; </div>
<div class="line"><a name="l07435"></a><span class="lineno"> 7435</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(codepoint1 == -1))</div>
<div class="line"><a name="l07436"></a><span class="lineno"> 7436</span>&#160; {</div>
<div class="line"><a name="l07437"></a><span class="lineno"> 7437</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: &#39;\\u&#39; must be followed by 4 hex digits&quot;</span>;</div>
<div class="line"><a name="l07438"></a><span class="lineno"> 7438</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07439"></a><span class="lineno"> 7439</span>&#160; }</div>
<div class="line"><a name="l07440"></a><span class="lineno"> 7440</span>&#160; </div>
<div class="line"><a name="l07441"></a><span class="lineno"> 7441</span>&#160; <span class="comment">// check if code point is a high surrogate</span></div>
<div class="line"><a name="l07442"></a><span class="lineno"> 7442</span>&#160; <span class="keywordflow">if</span> (0xD800 &lt;= codepoint1 and codepoint1 &lt;= 0xDBFF)</div>
<div class="line"><a name="l07443"></a><span class="lineno"> 7443</span>&#160; {</div>
<div class="line"><a name="l07444"></a><span class="lineno"> 7444</span>&#160; <span class="comment">// expect next \uxxxx entry</span></div>
<div class="line"><a name="l07445"></a><span class="lineno"> 7445</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() == <span class="charliteral">&#39;\\&#39;</span> and <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() == <span class="charliteral">&#39;u&#39;</span>))</div>
<div class="line"><a name="l07446"></a><span class="lineno"> 7446</span>&#160; {</div>
<div class="line"><a name="l07447"></a><span class="lineno"> 7447</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> codepoint2 = get_codepoint();</div>
<div class="line"><a name="l07448"></a><span class="lineno"> 7448</span>&#160; </div>
<div class="line"><a name="l07449"></a><span class="lineno"> 7449</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(codepoint2 == -1))</div>
<div class="line"><a name="l07450"></a><span class="lineno"> 7450</span>&#160; {</div>
<div class="line"><a name="l07451"></a><span class="lineno"> 7451</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: &#39;\\u&#39; must be followed by 4 hex digits&quot;</span>;</div>
<div class="line"><a name="l07452"></a><span class="lineno"> 7452</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07453"></a><span class="lineno"> 7453</span>&#160; }</div>
<div class="line"><a name="l07454"></a><span class="lineno"> 7454</span>&#160; </div>
<div class="line"><a name="l07455"></a><span class="lineno"> 7455</span>&#160; <span class="comment">// check if codepoint2 is a low surrogate</span></div>
<div class="line"><a name="l07456"></a><span class="lineno"> 7456</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(0xDC00 &lt;= codepoint2 and codepoint2 &lt;= 0xDFFF))</div>
<div class="line"><a name="l07457"></a><span class="lineno"> 7457</span>&#160; {</div>
<div class="line"><a name="l07458"></a><span class="lineno"> 7458</span>&#160; <span class="comment">// overwrite codepoint</span></div>
<div class="line"><a name="l07459"></a><span class="lineno"> 7459</span>&#160; codepoint = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(</div>
<div class="line"><a name="l07460"></a><span class="lineno"> 7460</span>&#160; <span class="comment">// high surrogate occupies the most significant 22 bits</span></div>
<div class="line"><a name="l07461"></a><span class="lineno"> 7461</span>&#160; (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint1) &lt;&lt; 10u)</div>
<div class="line"><a name="l07462"></a><span class="lineno"> 7462</span>&#160; <span class="comment">// low surrogate occupies the least significant 15 bits</span></div>
<div class="line"><a name="l07463"></a><span class="lineno"> 7463</span>&#160; + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint2)</div>
<div class="line"><a name="l07464"></a><span class="lineno"> 7464</span>&#160; <span class="comment">// there is still the 0xD800, 0xDC00 and 0x10000 noise</span></div>
<div class="line"><a name="l07465"></a><span class="lineno"> 7465</span>&#160; <span class="comment">// in the result so we have to subtract with:</span></div>
<div class="line"><a name="l07466"></a><span class="lineno"> 7466</span>&#160; <span class="comment">// (0xD800 &lt;&lt; 10) + DC00 - 0x10000 = 0x35FDC00</span></div>
<div class="line"><a name="l07467"></a><span class="lineno"> 7467</span>&#160; - 0x35FDC00u);</div>
<div class="line"><a name="l07468"></a><span class="lineno"> 7468</span>&#160; }</div>
<div class="line"><a name="l07469"></a><span class="lineno"> 7469</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l07470"></a><span class="lineno"> 7470</span>&#160; {</div>
<div class="line"><a name="l07471"></a><span class="lineno"> 7471</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF&quot;</span>;</div>
<div class="line"><a name="l07472"></a><span class="lineno"> 7472</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07473"></a><span class="lineno"> 7473</span>&#160; }</div>
<div class="line"><a name="l07474"></a><span class="lineno"> 7474</span>&#160; }</div>
<div class="line"><a name="l07475"></a><span class="lineno"> 7475</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l07476"></a><span class="lineno"> 7476</span>&#160; {</div>
<div class="line"><a name="l07477"></a><span class="lineno"> 7477</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF&quot;</span>;</div>
<div class="line"><a name="l07478"></a><span class="lineno"> 7478</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07479"></a><span class="lineno"> 7479</span>&#160; }</div>
<div class="line"><a name="l07480"></a><span class="lineno"> 7480</span>&#160; }</div>
<div class="line"><a name="l07481"></a><span class="lineno"> 7481</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l07482"></a><span class="lineno"> 7482</span>&#160; {</div>
<div class="line"><a name="l07483"></a><span class="lineno"> 7483</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(0xDC00 &lt;= codepoint1 and codepoint1 &lt;= 0xDFFF))</div>
<div class="line"><a name="l07484"></a><span class="lineno"> 7484</span>&#160; {</div>
<div class="line"><a name="l07485"></a><span class="lineno"> 7485</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF&quot;</span>;</div>
<div class="line"><a name="l07486"></a><span class="lineno"> 7486</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07487"></a><span class="lineno"> 7487</span>&#160; }</div>
<div class="line"><a name="l07488"></a><span class="lineno"> 7488</span>&#160; }</div>
<div class="line"><a name="l07489"></a><span class="lineno"> 7489</span>&#160; </div>
<div class="line"><a name="l07490"></a><span class="lineno"> 7490</span>&#160; <span class="comment">// result of the above calculation yields a proper codepoint</span></div>
<div class="line"><a name="l07491"></a><span class="lineno"> 7491</span>&#160; assert(0x00 &lt;= codepoint and codepoint &lt;= 0x10FFFF);</div>
<div class="line"><a name="l07492"></a><span class="lineno"> 7492</span>&#160; </div>
<div class="line"><a name="l07493"></a><span class="lineno"> 7493</span>&#160; <span class="comment">// translate codepoint into bytes</span></div>
<div class="line"><a name="l07494"></a><span class="lineno"> 7494</span>&#160; <span class="keywordflow">if</span> (codepoint &lt; 0x80)</div>
<div class="line"><a name="l07495"></a><span class="lineno"> 7495</span>&#160; {</div>
<div class="line"><a name="l07496"></a><span class="lineno"> 7496</span>&#160; <span class="comment">// 1-byte characters: 0xxxxxxx (ASCII)</span></div>
<div class="line"><a name="l07497"></a><span class="lineno"> 7497</span>&#160; add(codepoint);</div>
<div class="line"><a name="l07498"></a><span class="lineno"> 7498</span>&#160; }</div>
<div class="line"><a name="l07499"></a><span class="lineno"> 7499</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0x7FF)</div>
<div class="line"><a name="l07500"></a><span class="lineno"> 7500</span>&#160; {</div>
<div class="line"><a name="l07501"></a><span class="lineno"> 7501</span>&#160; <span class="comment">// 2-byte characters: 110xxxxx 10xxxxxx</span></div>
<div class="line"><a name="l07502"></a><span class="lineno"> 7502</span>&#160; add(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(0xC0u | (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint) &gt;&gt; 6u)));</div>
<div class="line"><a name="l07503"></a><span class="lineno"> 7503</span>&#160; add(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(0x80u | (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint) &amp; 0x3Fu)));</div>
<div class="line"><a name="l07504"></a><span class="lineno"> 7504</span>&#160; }</div>
<div class="line"><a name="l07505"></a><span class="lineno"> 7505</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0xFFFF)</div>
<div class="line"><a name="l07506"></a><span class="lineno"> 7506</span>&#160; {</div>
<div class="line"><a name="l07507"></a><span class="lineno"> 7507</span>&#160; <span class="comment">// 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx</span></div>
<div class="line"><a name="l07508"></a><span class="lineno"> 7508</span>&#160; add(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(0xE0u | (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint) &gt;&gt; 12u)));</div>
<div class="line"><a name="l07509"></a><span class="lineno"> 7509</span>&#160; add(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(0x80u | ((<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint) &gt;&gt; 6u) &amp; 0x3Fu)));</div>
<div class="line"><a name="l07510"></a><span class="lineno"> 7510</span>&#160; add(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(0x80u | (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint) &amp; 0x3Fu)));</div>
<div class="line"><a name="l07511"></a><span class="lineno"> 7511</span>&#160; }</div>
<div class="line"><a name="l07512"></a><span class="lineno"> 7512</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l07513"></a><span class="lineno"> 7513</span>&#160; {</div>
<div class="line"><a name="l07514"></a><span class="lineno"> 7514</span>&#160; <span class="comment">// 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx</span></div>
<div class="line"><a name="l07515"></a><span class="lineno"> 7515</span>&#160; add(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(0xF0u | (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint) &gt;&gt; 18u)));</div>
<div class="line"><a name="l07516"></a><span class="lineno"> 7516</span>&#160; add(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(0x80u | ((<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint) &gt;&gt; 12u) &amp; 0x3Fu)));</div>
<div class="line"><a name="l07517"></a><span class="lineno"> 7517</span>&#160; add(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(0x80u | ((<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint) &gt;&gt; 6u) &amp; 0x3Fu)));</div>
<div class="line"><a name="l07518"></a><span class="lineno"> 7518</span>&#160; add(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(0x80u | (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(codepoint) &amp; 0x3Fu)));</div>
<div class="line"><a name="l07519"></a><span class="lineno"> 7519</span>&#160; }</div>
<div class="line"><a name="l07520"></a><span class="lineno"> 7520</span>&#160; </div>
<div class="line"><a name="l07521"></a><span class="lineno"> 7521</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07522"></a><span class="lineno"> 7522</span>&#160; }</div>
<div class="line"><a name="l07523"></a><span class="lineno"> 7523</span>&#160; </div>
<div class="line"><a name="l07524"></a><span class="lineno"> 7524</span>&#160; <span class="comment">// other characters after escape</span></div>
<div class="line"><a name="l07525"></a><span class="lineno"> 7525</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l07526"></a><span class="lineno"> 7526</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: forbidden character after backslash&quot;</span>;</div>
<div class="line"><a name="l07527"></a><span class="lineno"> 7527</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07528"></a><span class="lineno"> 7528</span>&#160; }</div>
<div class="line"><a name="l07529"></a><span class="lineno"> 7529</span>&#160; </div>
<div class="line"><a name="l07530"></a><span class="lineno"> 7530</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07531"></a><span class="lineno"> 7531</span>&#160; }</div>
<div class="line"><a name="l07532"></a><span class="lineno"> 7532</span>&#160; </div>
<div class="line"><a name="l07533"></a><span class="lineno"> 7533</span>&#160; <span class="comment">// invalid control characters</span></div>
<div class="line"><a name="l07534"></a><span class="lineno"> 7534</span>&#160; <span class="keywordflow">case</span> 0x00:</div>
<div class="line"><a name="l07535"></a><span class="lineno"> 7535</span>&#160; {</div>
<div class="line"><a name="l07536"></a><span class="lineno"> 7536</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0000 (NUL) must be escaped to \\u0000&quot;</span>;</div>
<div class="line"><a name="l07537"></a><span class="lineno"> 7537</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07538"></a><span class="lineno"> 7538</span>&#160; }</div>
<div class="line"><a name="l07539"></a><span class="lineno"> 7539</span>&#160; </div>
<div class="line"><a name="l07540"></a><span class="lineno"> 7540</span>&#160; <span class="keywordflow">case</span> 0x01:</div>
<div class="line"><a name="l07541"></a><span class="lineno"> 7541</span>&#160; {</div>
<div class="line"><a name="l07542"></a><span class="lineno"> 7542</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0001 (SOH) must be escaped to \\u0001&quot;</span>;</div>
<div class="line"><a name="l07543"></a><span class="lineno"> 7543</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07544"></a><span class="lineno"> 7544</span>&#160; }</div>
<div class="line"><a name="l07545"></a><span class="lineno"> 7545</span>&#160; </div>
<div class="line"><a name="l07546"></a><span class="lineno"> 7546</span>&#160; <span class="keywordflow">case</span> 0x02:</div>
<div class="line"><a name="l07547"></a><span class="lineno"> 7547</span>&#160; {</div>
<div class="line"><a name="l07548"></a><span class="lineno"> 7548</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0002 (STX) must be escaped to \\u0002&quot;</span>;</div>
<div class="line"><a name="l07549"></a><span class="lineno"> 7549</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07550"></a><span class="lineno"> 7550</span>&#160; }</div>
<div class="line"><a name="l07551"></a><span class="lineno"> 7551</span>&#160; </div>
<div class="line"><a name="l07552"></a><span class="lineno"> 7552</span>&#160; <span class="keywordflow">case</span> 0x03:</div>
<div class="line"><a name="l07553"></a><span class="lineno"> 7553</span>&#160; {</div>
<div class="line"><a name="l07554"></a><span class="lineno"> 7554</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0003 (ETX) must be escaped to \\u0003&quot;</span>;</div>
<div class="line"><a name="l07555"></a><span class="lineno"> 7555</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07556"></a><span class="lineno"> 7556</span>&#160; }</div>
<div class="line"><a name="l07557"></a><span class="lineno"> 7557</span>&#160; </div>
<div class="line"><a name="l07558"></a><span class="lineno"> 7558</span>&#160; <span class="keywordflow">case</span> 0x04:</div>
<div class="line"><a name="l07559"></a><span class="lineno"> 7559</span>&#160; {</div>
<div class="line"><a name="l07560"></a><span class="lineno"> 7560</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0004 (EOT) must be escaped to \\u0004&quot;</span>;</div>
<div class="line"><a name="l07561"></a><span class="lineno"> 7561</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07562"></a><span class="lineno"> 7562</span>&#160; }</div>
<div class="line"><a name="l07563"></a><span class="lineno"> 7563</span>&#160; </div>
<div class="line"><a name="l07564"></a><span class="lineno"> 7564</span>&#160; <span class="keywordflow">case</span> 0x05:</div>
<div class="line"><a name="l07565"></a><span class="lineno"> 7565</span>&#160; {</div>
<div class="line"><a name="l07566"></a><span class="lineno"> 7566</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0005 (ENQ) must be escaped to \\u0005&quot;</span>;</div>
<div class="line"><a name="l07567"></a><span class="lineno"> 7567</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07568"></a><span class="lineno"> 7568</span>&#160; }</div>
<div class="line"><a name="l07569"></a><span class="lineno"> 7569</span>&#160; </div>
<div class="line"><a name="l07570"></a><span class="lineno"> 7570</span>&#160; <span class="keywordflow">case</span> 0x06:</div>
<div class="line"><a name="l07571"></a><span class="lineno"> 7571</span>&#160; {</div>
<div class="line"><a name="l07572"></a><span class="lineno"> 7572</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0006 (ACK) must be escaped to \\u0006&quot;</span>;</div>
<div class="line"><a name="l07573"></a><span class="lineno"> 7573</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07574"></a><span class="lineno"> 7574</span>&#160; }</div>
<div class="line"><a name="l07575"></a><span class="lineno"> 7575</span>&#160; </div>
<div class="line"><a name="l07576"></a><span class="lineno"> 7576</span>&#160; <span class="keywordflow">case</span> 0x07:</div>
<div class="line"><a name="l07577"></a><span class="lineno"> 7577</span>&#160; {</div>
<div class="line"><a name="l07578"></a><span class="lineno"> 7578</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0007 (BEL) must be escaped to \\u0007&quot;</span>;</div>
<div class="line"><a name="l07579"></a><span class="lineno"> 7579</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07580"></a><span class="lineno"> 7580</span>&#160; }</div>
<div class="line"><a name="l07581"></a><span class="lineno"> 7581</span>&#160; </div>
<div class="line"><a name="l07582"></a><span class="lineno"> 7582</span>&#160; <span class="keywordflow">case</span> 0x08:</div>
<div class="line"><a name="l07583"></a><span class="lineno"> 7583</span>&#160; {</div>
<div class="line"><a name="l07584"></a><span class="lineno"> 7584</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b&quot;</span>;</div>
<div class="line"><a name="l07585"></a><span class="lineno"> 7585</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07586"></a><span class="lineno"> 7586</span>&#160; }</div>
<div class="line"><a name="l07587"></a><span class="lineno"> 7587</span>&#160; </div>
<div class="line"><a name="l07588"></a><span class="lineno"> 7588</span>&#160; <span class="keywordflow">case</span> 0x09:</div>
<div class="line"><a name="l07589"></a><span class="lineno"> 7589</span>&#160; {</div>
<div class="line"><a name="l07590"></a><span class="lineno"> 7590</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t&quot;</span>;</div>
<div class="line"><a name="l07591"></a><span class="lineno"> 7591</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07592"></a><span class="lineno"> 7592</span>&#160; }</div>
<div class="line"><a name="l07593"></a><span class="lineno"> 7593</span>&#160; </div>
<div class="line"><a name="l07594"></a><span class="lineno"> 7594</span>&#160; <span class="keywordflow">case</span> 0x0A:</div>
<div class="line"><a name="l07595"></a><span class="lineno"> 7595</span>&#160; {</div>
<div class="line"><a name="l07596"></a><span class="lineno"> 7596</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n&quot;</span>;</div>
<div class="line"><a name="l07597"></a><span class="lineno"> 7597</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07598"></a><span class="lineno"> 7598</span>&#160; }</div>
<div class="line"><a name="l07599"></a><span class="lineno"> 7599</span>&#160; </div>
<div class="line"><a name="l07600"></a><span class="lineno"> 7600</span>&#160; <span class="keywordflow">case</span> 0x0B:</div>
<div class="line"><a name="l07601"></a><span class="lineno"> 7601</span>&#160; {</div>
<div class="line"><a name="l07602"></a><span class="lineno"> 7602</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+000B (VT) must be escaped to \\u000B&quot;</span>;</div>
<div class="line"><a name="l07603"></a><span class="lineno"> 7603</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07604"></a><span class="lineno"> 7604</span>&#160; }</div>
<div class="line"><a name="l07605"></a><span class="lineno"> 7605</span>&#160; </div>
<div class="line"><a name="l07606"></a><span class="lineno"> 7606</span>&#160; <span class="keywordflow">case</span> 0x0C:</div>
<div class="line"><a name="l07607"></a><span class="lineno"> 7607</span>&#160; {</div>
<div class="line"><a name="l07608"></a><span class="lineno"> 7608</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f&quot;</span>;</div>
<div class="line"><a name="l07609"></a><span class="lineno"> 7609</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07610"></a><span class="lineno"> 7610</span>&#160; }</div>
<div class="line"><a name="l07611"></a><span class="lineno"> 7611</span>&#160; </div>
<div class="line"><a name="l07612"></a><span class="lineno"> 7612</span>&#160; <span class="keywordflow">case</span> 0x0D:</div>
<div class="line"><a name="l07613"></a><span class="lineno"> 7613</span>&#160; {</div>
<div class="line"><a name="l07614"></a><span class="lineno"> 7614</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r&quot;</span>;</div>
<div class="line"><a name="l07615"></a><span class="lineno"> 7615</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07616"></a><span class="lineno"> 7616</span>&#160; }</div>
<div class="line"><a name="l07617"></a><span class="lineno"> 7617</span>&#160; </div>
<div class="line"><a name="l07618"></a><span class="lineno"> 7618</span>&#160; <span class="keywordflow">case</span> 0x0E:</div>
<div class="line"><a name="l07619"></a><span class="lineno"> 7619</span>&#160; {</div>
<div class="line"><a name="l07620"></a><span class="lineno"> 7620</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+000E (SO) must be escaped to \\u000E&quot;</span>;</div>
<div class="line"><a name="l07621"></a><span class="lineno"> 7621</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07622"></a><span class="lineno"> 7622</span>&#160; }</div>
<div class="line"><a name="l07623"></a><span class="lineno"> 7623</span>&#160; </div>
<div class="line"><a name="l07624"></a><span class="lineno"> 7624</span>&#160; <span class="keywordflow">case</span> 0x0F:</div>
<div class="line"><a name="l07625"></a><span class="lineno"> 7625</span>&#160; {</div>
<div class="line"><a name="l07626"></a><span class="lineno"> 7626</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+000F (SI) must be escaped to \\u000F&quot;</span>;</div>
<div class="line"><a name="l07627"></a><span class="lineno"> 7627</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07628"></a><span class="lineno"> 7628</span>&#160; }</div>
<div class="line"><a name="l07629"></a><span class="lineno"> 7629</span>&#160; </div>
<div class="line"><a name="l07630"></a><span class="lineno"> 7630</span>&#160; <span class="keywordflow">case</span> 0x10:</div>
<div class="line"><a name="l07631"></a><span class="lineno"> 7631</span>&#160; {</div>
<div class="line"><a name="l07632"></a><span class="lineno"> 7632</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0010 (DLE) must be escaped to \\u0010&quot;</span>;</div>
<div class="line"><a name="l07633"></a><span class="lineno"> 7633</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07634"></a><span class="lineno"> 7634</span>&#160; }</div>
<div class="line"><a name="l07635"></a><span class="lineno"> 7635</span>&#160; </div>
<div class="line"><a name="l07636"></a><span class="lineno"> 7636</span>&#160; <span class="keywordflow">case</span> 0x11:</div>
<div class="line"><a name="l07637"></a><span class="lineno"> 7637</span>&#160; {</div>
<div class="line"><a name="l07638"></a><span class="lineno"> 7638</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0011 (DC1) must be escaped to \\u0011&quot;</span>;</div>
<div class="line"><a name="l07639"></a><span class="lineno"> 7639</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07640"></a><span class="lineno"> 7640</span>&#160; }</div>
<div class="line"><a name="l07641"></a><span class="lineno"> 7641</span>&#160; </div>
<div class="line"><a name="l07642"></a><span class="lineno"> 7642</span>&#160; <span class="keywordflow">case</span> 0x12:</div>
<div class="line"><a name="l07643"></a><span class="lineno"> 7643</span>&#160; {</div>
<div class="line"><a name="l07644"></a><span class="lineno"> 7644</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0012 (DC2) must be escaped to \\u0012&quot;</span>;</div>
<div class="line"><a name="l07645"></a><span class="lineno"> 7645</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07646"></a><span class="lineno"> 7646</span>&#160; }</div>
<div class="line"><a name="l07647"></a><span class="lineno"> 7647</span>&#160; </div>
<div class="line"><a name="l07648"></a><span class="lineno"> 7648</span>&#160; <span class="keywordflow">case</span> 0x13:</div>
<div class="line"><a name="l07649"></a><span class="lineno"> 7649</span>&#160; {</div>
<div class="line"><a name="l07650"></a><span class="lineno"> 7650</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0013 (DC3) must be escaped to \\u0013&quot;</span>;</div>
<div class="line"><a name="l07651"></a><span class="lineno"> 7651</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07652"></a><span class="lineno"> 7652</span>&#160; }</div>
<div class="line"><a name="l07653"></a><span class="lineno"> 7653</span>&#160; </div>
<div class="line"><a name="l07654"></a><span class="lineno"> 7654</span>&#160; <span class="keywordflow">case</span> 0x14:</div>
<div class="line"><a name="l07655"></a><span class="lineno"> 7655</span>&#160; {</div>
<div class="line"><a name="l07656"></a><span class="lineno"> 7656</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0014 (DC4) must be escaped to \\u0014&quot;</span>;</div>
<div class="line"><a name="l07657"></a><span class="lineno"> 7657</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07658"></a><span class="lineno"> 7658</span>&#160; }</div>
<div class="line"><a name="l07659"></a><span class="lineno"> 7659</span>&#160; </div>
<div class="line"><a name="l07660"></a><span class="lineno"> 7660</span>&#160; <span class="keywordflow">case</span> 0x15:</div>
<div class="line"><a name="l07661"></a><span class="lineno"> 7661</span>&#160; {</div>
<div class="line"><a name="l07662"></a><span class="lineno"> 7662</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0015 (NAK) must be escaped to \\u0015&quot;</span>;</div>
<div class="line"><a name="l07663"></a><span class="lineno"> 7663</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07664"></a><span class="lineno"> 7664</span>&#160; }</div>
<div class="line"><a name="l07665"></a><span class="lineno"> 7665</span>&#160; </div>
<div class="line"><a name="l07666"></a><span class="lineno"> 7666</span>&#160; <span class="keywordflow">case</span> 0x16:</div>
<div class="line"><a name="l07667"></a><span class="lineno"> 7667</span>&#160; {</div>
<div class="line"><a name="l07668"></a><span class="lineno"> 7668</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0016 (SYN) must be escaped to \\u0016&quot;</span>;</div>
<div class="line"><a name="l07669"></a><span class="lineno"> 7669</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07670"></a><span class="lineno"> 7670</span>&#160; }</div>
<div class="line"><a name="l07671"></a><span class="lineno"> 7671</span>&#160; </div>
<div class="line"><a name="l07672"></a><span class="lineno"> 7672</span>&#160; <span class="keywordflow">case</span> 0x17:</div>
<div class="line"><a name="l07673"></a><span class="lineno"> 7673</span>&#160; {</div>
<div class="line"><a name="l07674"></a><span class="lineno"> 7674</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0017 (ETB) must be escaped to \\u0017&quot;</span>;</div>
<div class="line"><a name="l07675"></a><span class="lineno"> 7675</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07676"></a><span class="lineno"> 7676</span>&#160; }</div>
<div class="line"><a name="l07677"></a><span class="lineno"> 7677</span>&#160; </div>
<div class="line"><a name="l07678"></a><span class="lineno"> 7678</span>&#160; <span class="keywordflow">case</span> 0x18:</div>
<div class="line"><a name="l07679"></a><span class="lineno"> 7679</span>&#160; {</div>
<div class="line"><a name="l07680"></a><span class="lineno"> 7680</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0018 (CAN) must be escaped to \\u0018&quot;</span>;</div>
<div class="line"><a name="l07681"></a><span class="lineno"> 7681</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07682"></a><span class="lineno"> 7682</span>&#160; }</div>
<div class="line"><a name="l07683"></a><span class="lineno"> 7683</span>&#160; </div>
<div class="line"><a name="l07684"></a><span class="lineno"> 7684</span>&#160; <span class="keywordflow">case</span> 0x19:</div>
<div class="line"><a name="l07685"></a><span class="lineno"> 7685</span>&#160; {</div>
<div class="line"><a name="l07686"></a><span class="lineno"> 7686</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+0019 (EM) must be escaped to \\u0019&quot;</span>;</div>
<div class="line"><a name="l07687"></a><span class="lineno"> 7687</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07688"></a><span class="lineno"> 7688</span>&#160; }</div>
<div class="line"><a name="l07689"></a><span class="lineno"> 7689</span>&#160; </div>
<div class="line"><a name="l07690"></a><span class="lineno"> 7690</span>&#160; <span class="keywordflow">case</span> 0x1A:</div>
<div class="line"><a name="l07691"></a><span class="lineno"> 7691</span>&#160; {</div>
<div class="line"><a name="l07692"></a><span class="lineno"> 7692</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+001A (SUB) must be escaped to \\u001A&quot;</span>;</div>
<div class="line"><a name="l07693"></a><span class="lineno"> 7693</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07694"></a><span class="lineno"> 7694</span>&#160; }</div>
<div class="line"><a name="l07695"></a><span class="lineno"> 7695</span>&#160; </div>
<div class="line"><a name="l07696"></a><span class="lineno"> 7696</span>&#160; <span class="keywordflow">case</span> 0x1B:</div>
<div class="line"><a name="l07697"></a><span class="lineno"> 7697</span>&#160; {</div>
<div class="line"><a name="l07698"></a><span class="lineno"> 7698</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+001B (ESC) must be escaped to \\u001B&quot;</span>;</div>
<div class="line"><a name="l07699"></a><span class="lineno"> 7699</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07700"></a><span class="lineno"> 7700</span>&#160; }</div>
<div class="line"><a name="l07701"></a><span class="lineno"> 7701</span>&#160; </div>
<div class="line"><a name="l07702"></a><span class="lineno"> 7702</span>&#160; <span class="keywordflow">case</span> 0x1C:</div>
<div class="line"><a name="l07703"></a><span class="lineno"> 7703</span>&#160; {</div>
<div class="line"><a name="l07704"></a><span class="lineno"> 7704</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+001C (FS) must be escaped to \\u001C&quot;</span>;</div>
<div class="line"><a name="l07705"></a><span class="lineno"> 7705</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07706"></a><span class="lineno"> 7706</span>&#160; }</div>
<div class="line"><a name="l07707"></a><span class="lineno"> 7707</span>&#160; </div>
<div class="line"><a name="l07708"></a><span class="lineno"> 7708</span>&#160; <span class="keywordflow">case</span> 0x1D:</div>
<div class="line"><a name="l07709"></a><span class="lineno"> 7709</span>&#160; {</div>
<div class="line"><a name="l07710"></a><span class="lineno"> 7710</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+001D (GS) must be escaped to \\u001D&quot;</span>;</div>
<div class="line"><a name="l07711"></a><span class="lineno"> 7711</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07712"></a><span class="lineno"> 7712</span>&#160; }</div>
<div class="line"><a name="l07713"></a><span class="lineno"> 7713</span>&#160; </div>
<div class="line"><a name="l07714"></a><span class="lineno"> 7714</span>&#160; <span class="keywordflow">case</span> 0x1E:</div>
<div class="line"><a name="l07715"></a><span class="lineno"> 7715</span>&#160; {</div>
<div class="line"><a name="l07716"></a><span class="lineno"> 7716</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+001E (RS) must be escaped to \\u001E&quot;</span>;</div>
<div class="line"><a name="l07717"></a><span class="lineno"> 7717</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07718"></a><span class="lineno"> 7718</span>&#160; }</div>
<div class="line"><a name="l07719"></a><span class="lineno"> 7719</span>&#160; </div>
<div class="line"><a name="l07720"></a><span class="lineno"> 7720</span>&#160; <span class="keywordflow">case</span> 0x1F:</div>
<div class="line"><a name="l07721"></a><span class="lineno"> 7721</span>&#160; {</div>
<div class="line"><a name="l07722"></a><span class="lineno"> 7722</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: control character U+001F (US) must be escaped to \\u001F&quot;</span>;</div>
<div class="line"><a name="l07723"></a><span class="lineno"> 7723</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07724"></a><span class="lineno"> 7724</span>&#160; }</div>
<div class="line"><a name="l07725"></a><span class="lineno"> 7725</span>&#160; </div>
<div class="line"><a name="l07726"></a><span class="lineno"> 7726</span>&#160; <span class="comment">// U+0020..U+007F (except U+0022 (quote) and U+005C (backspace))</span></div>
<div class="line"><a name="l07727"></a><span class="lineno"> 7727</span>&#160; <span class="keywordflow">case</span> 0x20:</div>
<div class="line"><a name="l07728"></a><span class="lineno"> 7728</span>&#160; <span class="keywordflow">case</span> 0x21:</div>
<div class="line"><a name="l07729"></a><span class="lineno"> 7729</span>&#160; <span class="keywordflow">case</span> 0x23:</div>
<div class="line"><a name="l07730"></a><span class="lineno"> 7730</span>&#160; <span class="keywordflow">case</span> 0x24:</div>
<div class="line"><a name="l07731"></a><span class="lineno"> 7731</span>&#160; <span class="keywordflow">case</span> 0x25:</div>
<div class="line"><a name="l07732"></a><span class="lineno"> 7732</span>&#160; <span class="keywordflow">case</span> 0x26:</div>
<div class="line"><a name="l07733"></a><span class="lineno"> 7733</span>&#160; <span class="keywordflow">case</span> 0x27:</div>
<div class="line"><a name="l07734"></a><span class="lineno"> 7734</span>&#160; <span class="keywordflow">case</span> 0x28:</div>
<div class="line"><a name="l07735"></a><span class="lineno"> 7735</span>&#160; <span class="keywordflow">case</span> 0x29:</div>
<div class="line"><a name="l07736"></a><span class="lineno"> 7736</span>&#160; <span class="keywordflow">case</span> 0x2A:</div>
<div class="line"><a name="l07737"></a><span class="lineno"> 7737</span>&#160; <span class="keywordflow">case</span> 0x2B:</div>
<div class="line"><a name="l07738"></a><span class="lineno"> 7738</span>&#160; <span class="keywordflow">case</span> 0x2C:</div>
<div class="line"><a name="l07739"></a><span class="lineno"> 7739</span>&#160; <span class="keywordflow">case</span> 0x2D:</div>
<div class="line"><a name="l07740"></a><span class="lineno"> 7740</span>&#160; <span class="keywordflow">case</span> 0x2E:</div>
<div class="line"><a name="l07741"></a><span class="lineno"> 7741</span>&#160; <span class="keywordflow">case</span> 0x2F:</div>
<div class="line"><a name="l07742"></a><span class="lineno"> 7742</span>&#160; <span class="keywordflow">case</span> 0x30:</div>
<div class="line"><a name="l07743"></a><span class="lineno"> 7743</span>&#160; <span class="keywordflow">case</span> 0x31:</div>
<div class="line"><a name="l07744"></a><span class="lineno"> 7744</span>&#160; <span class="keywordflow">case</span> 0x32:</div>
<div class="line"><a name="l07745"></a><span class="lineno"> 7745</span>&#160; <span class="keywordflow">case</span> 0x33:</div>
<div class="line"><a name="l07746"></a><span class="lineno"> 7746</span>&#160; <span class="keywordflow">case</span> 0x34:</div>
<div class="line"><a name="l07747"></a><span class="lineno"> 7747</span>&#160; <span class="keywordflow">case</span> 0x35:</div>
<div class="line"><a name="l07748"></a><span class="lineno"> 7748</span>&#160; <span class="keywordflow">case</span> 0x36:</div>
<div class="line"><a name="l07749"></a><span class="lineno"> 7749</span>&#160; <span class="keywordflow">case</span> 0x37:</div>
<div class="line"><a name="l07750"></a><span class="lineno"> 7750</span>&#160; <span class="keywordflow">case</span> 0x38:</div>
<div class="line"><a name="l07751"></a><span class="lineno"> 7751</span>&#160; <span class="keywordflow">case</span> 0x39:</div>
<div class="line"><a name="l07752"></a><span class="lineno"> 7752</span>&#160; <span class="keywordflow">case</span> 0x3A:</div>
<div class="line"><a name="l07753"></a><span class="lineno"> 7753</span>&#160; <span class="keywordflow">case</span> 0x3B:</div>
<div class="line"><a name="l07754"></a><span class="lineno"> 7754</span>&#160; <span class="keywordflow">case</span> 0x3C:</div>
<div class="line"><a name="l07755"></a><span class="lineno"> 7755</span>&#160; <span class="keywordflow">case</span> 0x3D:</div>
<div class="line"><a name="l07756"></a><span class="lineno"> 7756</span>&#160; <span class="keywordflow">case</span> 0x3E:</div>
<div class="line"><a name="l07757"></a><span class="lineno"> 7757</span>&#160; <span class="keywordflow">case</span> 0x3F:</div>
<div class="line"><a name="l07758"></a><span class="lineno"> 7758</span>&#160; <span class="keywordflow">case</span> 0x40:</div>
<div class="line"><a name="l07759"></a><span class="lineno"> 7759</span>&#160; <span class="keywordflow">case</span> 0x41:</div>
<div class="line"><a name="l07760"></a><span class="lineno"> 7760</span>&#160; <span class="keywordflow">case</span> 0x42:</div>
<div class="line"><a name="l07761"></a><span class="lineno"> 7761</span>&#160; <span class="keywordflow">case</span> 0x43:</div>
<div class="line"><a name="l07762"></a><span class="lineno"> 7762</span>&#160; <span class="keywordflow">case</span> 0x44:</div>
<div class="line"><a name="l07763"></a><span class="lineno"> 7763</span>&#160; <span class="keywordflow">case</span> 0x45:</div>
<div class="line"><a name="l07764"></a><span class="lineno"> 7764</span>&#160; <span class="keywordflow">case</span> 0x46:</div>
<div class="line"><a name="l07765"></a><span class="lineno"> 7765</span>&#160; <span class="keywordflow">case</span> 0x47:</div>
<div class="line"><a name="l07766"></a><span class="lineno"> 7766</span>&#160; <span class="keywordflow">case</span> 0x48:</div>
<div class="line"><a name="l07767"></a><span class="lineno"> 7767</span>&#160; <span class="keywordflow">case</span> 0x49:</div>
<div class="line"><a name="l07768"></a><span class="lineno"> 7768</span>&#160; <span class="keywordflow">case</span> 0x4A:</div>
<div class="line"><a name="l07769"></a><span class="lineno"> 7769</span>&#160; <span class="keywordflow">case</span> 0x4B:</div>
<div class="line"><a name="l07770"></a><span class="lineno"> 7770</span>&#160; <span class="keywordflow">case</span> 0x4C:</div>
<div class="line"><a name="l07771"></a><span class="lineno"> 7771</span>&#160; <span class="keywordflow">case</span> 0x4D:</div>
<div class="line"><a name="l07772"></a><span class="lineno"> 7772</span>&#160; <span class="keywordflow">case</span> 0x4E:</div>
<div class="line"><a name="l07773"></a><span class="lineno"> 7773</span>&#160; <span class="keywordflow">case</span> 0x4F:</div>
<div class="line"><a name="l07774"></a><span class="lineno"> 7774</span>&#160; <span class="keywordflow">case</span> 0x50:</div>
<div class="line"><a name="l07775"></a><span class="lineno"> 7775</span>&#160; <span class="keywordflow">case</span> 0x51:</div>
<div class="line"><a name="l07776"></a><span class="lineno"> 7776</span>&#160; <span class="keywordflow">case</span> 0x52:</div>
<div class="line"><a name="l07777"></a><span class="lineno"> 7777</span>&#160; <span class="keywordflow">case</span> 0x53:</div>
<div class="line"><a name="l07778"></a><span class="lineno"> 7778</span>&#160; <span class="keywordflow">case</span> 0x54:</div>
<div class="line"><a name="l07779"></a><span class="lineno"> 7779</span>&#160; <span class="keywordflow">case</span> 0x55:</div>
<div class="line"><a name="l07780"></a><span class="lineno"> 7780</span>&#160; <span class="keywordflow">case</span> 0x56:</div>
<div class="line"><a name="l07781"></a><span class="lineno"> 7781</span>&#160; <span class="keywordflow">case</span> 0x57:</div>
<div class="line"><a name="l07782"></a><span class="lineno"> 7782</span>&#160; <span class="keywordflow">case</span> 0x58:</div>
<div class="line"><a name="l07783"></a><span class="lineno"> 7783</span>&#160; <span class="keywordflow">case</span> 0x59:</div>
<div class="line"><a name="l07784"></a><span class="lineno"> 7784</span>&#160; <span class="keywordflow">case</span> 0x5A:</div>
<div class="line"><a name="l07785"></a><span class="lineno"> 7785</span>&#160; <span class="keywordflow">case</span> 0x5B:</div>
<div class="line"><a name="l07786"></a><span class="lineno"> 7786</span>&#160; <span class="keywordflow">case</span> 0x5D:</div>
<div class="line"><a name="l07787"></a><span class="lineno"> 7787</span>&#160; <span class="keywordflow">case</span> 0x5E:</div>
<div class="line"><a name="l07788"></a><span class="lineno"> 7788</span>&#160; <span class="keywordflow">case</span> 0x5F:</div>
<div class="line"><a name="l07789"></a><span class="lineno"> 7789</span>&#160; <span class="keywordflow">case</span> 0x60:</div>
<div class="line"><a name="l07790"></a><span class="lineno"> 7790</span>&#160; <span class="keywordflow">case</span> 0x61:</div>
<div class="line"><a name="l07791"></a><span class="lineno"> 7791</span>&#160; <span class="keywordflow">case</span> 0x62:</div>
<div class="line"><a name="l07792"></a><span class="lineno"> 7792</span>&#160; <span class="keywordflow">case</span> 0x63:</div>
<div class="line"><a name="l07793"></a><span class="lineno"> 7793</span>&#160; <span class="keywordflow">case</span> 0x64:</div>
<div class="line"><a name="l07794"></a><span class="lineno"> 7794</span>&#160; <span class="keywordflow">case</span> 0x65:</div>
<div class="line"><a name="l07795"></a><span class="lineno"> 7795</span>&#160; <span class="keywordflow">case</span> 0x66:</div>
<div class="line"><a name="l07796"></a><span class="lineno"> 7796</span>&#160; <span class="keywordflow">case</span> 0x67:</div>
<div class="line"><a name="l07797"></a><span class="lineno"> 7797</span>&#160; <span class="keywordflow">case</span> 0x68:</div>
<div class="line"><a name="l07798"></a><span class="lineno"> 7798</span>&#160; <span class="keywordflow">case</span> 0x69:</div>
<div class="line"><a name="l07799"></a><span class="lineno"> 7799</span>&#160; <span class="keywordflow">case</span> 0x6A:</div>
<div class="line"><a name="l07800"></a><span class="lineno"> 7800</span>&#160; <span class="keywordflow">case</span> 0x6B:</div>
<div class="line"><a name="l07801"></a><span class="lineno"> 7801</span>&#160; <span class="keywordflow">case</span> 0x6C:</div>
<div class="line"><a name="l07802"></a><span class="lineno"> 7802</span>&#160; <span class="keywordflow">case</span> 0x6D:</div>
<div class="line"><a name="l07803"></a><span class="lineno"> 7803</span>&#160; <span class="keywordflow">case</span> 0x6E:</div>
<div class="line"><a name="l07804"></a><span class="lineno"> 7804</span>&#160; <span class="keywordflow">case</span> 0x6F:</div>
<div class="line"><a name="l07805"></a><span class="lineno"> 7805</span>&#160; <span class="keywordflow">case</span> 0x70:</div>
<div class="line"><a name="l07806"></a><span class="lineno"> 7806</span>&#160; <span class="keywordflow">case</span> 0x71:</div>
<div class="line"><a name="l07807"></a><span class="lineno"> 7807</span>&#160; <span class="keywordflow">case</span> 0x72:</div>
<div class="line"><a name="l07808"></a><span class="lineno"> 7808</span>&#160; <span class="keywordflow">case</span> 0x73:</div>
<div class="line"><a name="l07809"></a><span class="lineno"> 7809</span>&#160; <span class="keywordflow">case</span> 0x74:</div>
<div class="line"><a name="l07810"></a><span class="lineno"> 7810</span>&#160; <span class="keywordflow">case</span> 0x75:</div>
<div class="line"><a name="l07811"></a><span class="lineno"> 7811</span>&#160; <span class="keywordflow">case</span> 0x76:</div>
<div class="line"><a name="l07812"></a><span class="lineno"> 7812</span>&#160; <span class="keywordflow">case</span> 0x77:</div>
<div class="line"><a name="l07813"></a><span class="lineno"> 7813</span>&#160; <span class="keywordflow">case</span> 0x78:</div>
<div class="line"><a name="l07814"></a><span class="lineno"> 7814</span>&#160; <span class="keywordflow">case</span> 0x79:</div>
<div class="line"><a name="l07815"></a><span class="lineno"> 7815</span>&#160; <span class="keywordflow">case</span> 0x7A:</div>
<div class="line"><a name="l07816"></a><span class="lineno"> 7816</span>&#160; <span class="keywordflow">case</span> 0x7B:</div>
<div class="line"><a name="l07817"></a><span class="lineno"> 7817</span>&#160; <span class="keywordflow">case</span> 0x7C:</div>
<div class="line"><a name="l07818"></a><span class="lineno"> 7818</span>&#160; <span class="keywordflow">case</span> 0x7D:</div>
<div class="line"><a name="l07819"></a><span class="lineno"> 7819</span>&#160; <span class="keywordflow">case</span> 0x7E:</div>
<div class="line"><a name="l07820"></a><span class="lineno"> 7820</span>&#160; <span class="keywordflow">case</span> 0x7F:</div>
<div class="line"><a name="l07821"></a><span class="lineno"> 7821</span>&#160; {</div>
<div class="line"><a name="l07822"></a><span class="lineno"> 7822</span>&#160; add(current);</div>
<div class="line"><a name="l07823"></a><span class="lineno"> 7823</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07824"></a><span class="lineno"> 7824</span>&#160; }</div>
<div class="line"><a name="l07825"></a><span class="lineno"> 7825</span>&#160; </div>
<div class="line"><a name="l07826"></a><span class="lineno"> 7826</span>&#160; <span class="comment">// U+0080..U+07FF: bytes C2..DF 80..BF</span></div>
<div class="line"><a name="l07827"></a><span class="lineno"> 7827</span>&#160; <span class="keywordflow">case</span> 0xC2:</div>
<div class="line"><a name="l07828"></a><span class="lineno"> 7828</span>&#160; <span class="keywordflow">case</span> 0xC3:</div>
<div class="line"><a name="l07829"></a><span class="lineno"> 7829</span>&#160; <span class="keywordflow">case</span> 0xC4:</div>
<div class="line"><a name="l07830"></a><span class="lineno"> 7830</span>&#160; <span class="keywordflow">case</span> 0xC5:</div>
<div class="line"><a name="l07831"></a><span class="lineno"> 7831</span>&#160; <span class="keywordflow">case</span> 0xC6:</div>
<div class="line"><a name="l07832"></a><span class="lineno"> 7832</span>&#160; <span class="keywordflow">case</span> 0xC7:</div>
<div class="line"><a name="l07833"></a><span class="lineno"> 7833</span>&#160; <span class="keywordflow">case</span> 0xC8:</div>
<div class="line"><a name="l07834"></a><span class="lineno"> 7834</span>&#160; <span class="keywordflow">case</span> 0xC9:</div>
<div class="line"><a name="l07835"></a><span class="lineno"> 7835</span>&#160; <span class="keywordflow">case</span> 0xCA:</div>
<div class="line"><a name="l07836"></a><span class="lineno"> 7836</span>&#160; <span class="keywordflow">case</span> 0xCB:</div>
<div class="line"><a name="l07837"></a><span class="lineno"> 7837</span>&#160; <span class="keywordflow">case</span> 0xCC:</div>
<div class="line"><a name="l07838"></a><span class="lineno"> 7838</span>&#160; <span class="keywordflow">case</span> 0xCD:</div>
<div class="line"><a name="l07839"></a><span class="lineno"> 7839</span>&#160; <span class="keywordflow">case</span> 0xCE:</div>
<div class="line"><a name="l07840"></a><span class="lineno"> 7840</span>&#160; <span class="keywordflow">case</span> 0xCF:</div>
<div class="line"><a name="l07841"></a><span class="lineno"> 7841</span>&#160; <span class="keywordflow">case</span> 0xD0:</div>
<div class="line"><a name="l07842"></a><span class="lineno"> 7842</span>&#160; <span class="keywordflow">case</span> 0xD1:</div>
<div class="line"><a name="l07843"></a><span class="lineno"> 7843</span>&#160; <span class="keywordflow">case</span> 0xD2:</div>
<div class="line"><a name="l07844"></a><span class="lineno"> 7844</span>&#160; <span class="keywordflow">case</span> 0xD3:</div>
<div class="line"><a name="l07845"></a><span class="lineno"> 7845</span>&#160; <span class="keywordflow">case</span> 0xD4:</div>
<div class="line"><a name="l07846"></a><span class="lineno"> 7846</span>&#160; <span class="keywordflow">case</span> 0xD5:</div>
<div class="line"><a name="l07847"></a><span class="lineno"> 7847</span>&#160; <span class="keywordflow">case</span> 0xD6:</div>
<div class="line"><a name="l07848"></a><span class="lineno"> 7848</span>&#160; <span class="keywordflow">case</span> 0xD7:</div>
<div class="line"><a name="l07849"></a><span class="lineno"> 7849</span>&#160; <span class="keywordflow">case</span> 0xD8:</div>
<div class="line"><a name="l07850"></a><span class="lineno"> 7850</span>&#160; <span class="keywordflow">case</span> 0xD9:</div>
<div class="line"><a name="l07851"></a><span class="lineno"> 7851</span>&#160; <span class="keywordflow">case</span> 0xDA:</div>
<div class="line"><a name="l07852"></a><span class="lineno"> 7852</span>&#160; <span class="keywordflow">case</span> 0xDB:</div>
<div class="line"><a name="l07853"></a><span class="lineno"> 7853</span>&#160; <span class="keywordflow">case</span> 0xDC:</div>
<div class="line"><a name="l07854"></a><span class="lineno"> 7854</span>&#160; <span class="keywordflow">case</span> 0xDD:</div>
<div class="line"><a name="l07855"></a><span class="lineno"> 7855</span>&#160; <span class="keywordflow">case</span> 0xDE:</div>
<div class="line"><a name="l07856"></a><span class="lineno"> 7856</span>&#160; <span class="keywordflow">case</span> 0xDF:</div>
<div class="line"><a name="l07857"></a><span class="lineno"> 7857</span>&#160; {</div>
<div class="line"><a name="l07858"></a><span class="lineno"> 7858</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not next_byte_in_range({0x80, 0xBF})))</div>
<div class="line"><a name="l07859"></a><span class="lineno"> 7859</span>&#160; {</div>
<div class="line"><a name="l07860"></a><span class="lineno"> 7860</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07861"></a><span class="lineno"> 7861</span>&#160; }</div>
<div class="line"><a name="l07862"></a><span class="lineno"> 7862</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07863"></a><span class="lineno"> 7863</span>&#160; }</div>
<div class="line"><a name="l07864"></a><span class="lineno"> 7864</span>&#160; </div>
<div class="line"><a name="l07865"></a><span class="lineno"> 7865</span>&#160; <span class="comment">// U+0800..U+0FFF: bytes E0 A0..BF 80..BF</span></div>
<div class="line"><a name="l07866"></a><span class="lineno"> 7866</span>&#160; <span class="keywordflow">case</span> 0xE0:</div>
<div class="line"><a name="l07867"></a><span class="lineno"> 7867</span>&#160; {</div>
<div class="line"><a name="l07868"></a><span class="lineno"> 7868</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF}))))</div>
<div class="line"><a name="l07869"></a><span class="lineno"> 7869</span>&#160; {</div>
<div class="line"><a name="l07870"></a><span class="lineno"> 7870</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07871"></a><span class="lineno"> 7871</span>&#160; }</div>
<div class="line"><a name="l07872"></a><span class="lineno"> 7872</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07873"></a><span class="lineno"> 7873</span>&#160; }</div>
<div class="line"><a name="l07874"></a><span class="lineno"> 7874</span>&#160; </div>
<div class="line"><a name="l07875"></a><span class="lineno"> 7875</span>&#160; <span class="comment">// U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF</span></div>
<div class="line"><a name="l07876"></a><span class="lineno"> 7876</span>&#160; <span class="comment">// U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF</span></div>
<div class="line"><a name="l07877"></a><span class="lineno"> 7877</span>&#160; <span class="keywordflow">case</span> 0xE1:</div>
<div class="line"><a name="l07878"></a><span class="lineno"> 7878</span>&#160; <span class="keywordflow">case</span> 0xE2:</div>
<div class="line"><a name="l07879"></a><span class="lineno"> 7879</span>&#160; <span class="keywordflow">case</span> 0xE3:</div>
<div class="line"><a name="l07880"></a><span class="lineno"> 7880</span>&#160; <span class="keywordflow">case</span> 0xE4:</div>
<div class="line"><a name="l07881"></a><span class="lineno"> 7881</span>&#160; <span class="keywordflow">case</span> 0xE5:</div>
<div class="line"><a name="l07882"></a><span class="lineno"> 7882</span>&#160; <span class="keywordflow">case</span> 0xE6:</div>
<div class="line"><a name="l07883"></a><span class="lineno"> 7883</span>&#160; <span class="keywordflow">case</span> 0xE7:</div>
<div class="line"><a name="l07884"></a><span class="lineno"> 7884</span>&#160; <span class="keywordflow">case</span> 0xE8:</div>
<div class="line"><a name="l07885"></a><span class="lineno"> 7885</span>&#160; <span class="keywordflow">case</span> 0xE9:</div>
<div class="line"><a name="l07886"></a><span class="lineno"> 7886</span>&#160; <span class="keywordflow">case</span> 0xEA:</div>
<div class="line"><a name="l07887"></a><span class="lineno"> 7887</span>&#160; <span class="keywordflow">case</span> 0xEB:</div>
<div class="line"><a name="l07888"></a><span class="lineno"> 7888</span>&#160; <span class="keywordflow">case</span> 0xEC:</div>
<div class="line"><a name="l07889"></a><span class="lineno"> 7889</span>&#160; <span class="keywordflow">case</span> 0xEE:</div>
<div class="line"><a name="l07890"></a><span class="lineno"> 7890</span>&#160; <span class="keywordflow">case</span> 0xEF:</div>
<div class="line"><a name="l07891"></a><span class="lineno"> 7891</span>&#160; {</div>
<div class="line"><a name="l07892"></a><span class="lineno"> 7892</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF}))))</div>
<div class="line"><a name="l07893"></a><span class="lineno"> 7893</span>&#160; {</div>
<div class="line"><a name="l07894"></a><span class="lineno"> 7894</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07895"></a><span class="lineno"> 7895</span>&#160; }</div>
<div class="line"><a name="l07896"></a><span class="lineno"> 7896</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07897"></a><span class="lineno"> 7897</span>&#160; }</div>
<div class="line"><a name="l07898"></a><span class="lineno"> 7898</span>&#160; </div>
<div class="line"><a name="l07899"></a><span class="lineno"> 7899</span>&#160; <span class="comment">// U+D000..U+D7FF: bytes ED 80..9F 80..BF</span></div>
<div class="line"><a name="l07900"></a><span class="lineno"> 7900</span>&#160; <span class="keywordflow">case</span> 0xED:</div>
<div class="line"><a name="l07901"></a><span class="lineno"> 7901</span>&#160; {</div>
<div class="line"><a name="l07902"></a><span class="lineno"> 7902</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF}))))</div>
<div class="line"><a name="l07903"></a><span class="lineno"> 7903</span>&#160; {</div>
<div class="line"><a name="l07904"></a><span class="lineno"> 7904</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07905"></a><span class="lineno"> 7905</span>&#160; }</div>
<div class="line"><a name="l07906"></a><span class="lineno"> 7906</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07907"></a><span class="lineno"> 7907</span>&#160; }</div>
<div class="line"><a name="l07908"></a><span class="lineno"> 7908</span>&#160; </div>
<div class="line"><a name="l07909"></a><span class="lineno"> 7909</span>&#160; <span class="comment">// U+10000..U+3FFFF F0 90..BF 80..BF 80..BF</span></div>
<div class="line"><a name="l07910"></a><span class="lineno"> 7910</span>&#160; <span class="keywordflow">case</span> 0xF0:</div>
<div class="line"><a name="l07911"></a><span class="lineno"> 7911</span>&#160; {</div>
<div class="line"><a name="l07912"></a><span class="lineno"> 7912</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))</div>
<div class="line"><a name="l07913"></a><span class="lineno"> 7913</span>&#160; {</div>
<div class="line"><a name="l07914"></a><span class="lineno"> 7914</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07915"></a><span class="lineno"> 7915</span>&#160; }</div>
<div class="line"><a name="l07916"></a><span class="lineno"> 7916</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07917"></a><span class="lineno"> 7917</span>&#160; }</div>
<div class="line"><a name="l07918"></a><span class="lineno"> 7918</span>&#160; </div>
<div class="line"><a name="l07919"></a><span class="lineno"> 7919</span>&#160; <span class="comment">// U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF</span></div>
<div class="line"><a name="l07920"></a><span class="lineno"> 7920</span>&#160; <span class="keywordflow">case</span> 0xF1:</div>
<div class="line"><a name="l07921"></a><span class="lineno"> 7921</span>&#160; <span class="keywordflow">case</span> 0xF2:</div>
<div class="line"><a name="l07922"></a><span class="lineno"> 7922</span>&#160; <span class="keywordflow">case</span> 0xF3:</div>
<div class="line"><a name="l07923"></a><span class="lineno"> 7923</span>&#160; {</div>
<div class="line"><a name="l07924"></a><span class="lineno"> 7924</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))</div>
<div class="line"><a name="l07925"></a><span class="lineno"> 7925</span>&#160; {</div>
<div class="line"><a name="l07926"></a><span class="lineno"> 7926</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07927"></a><span class="lineno"> 7927</span>&#160; }</div>
<div class="line"><a name="l07928"></a><span class="lineno"> 7928</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07929"></a><span class="lineno"> 7929</span>&#160; }</div>
<div class="line"><a name="l07930"></a><span class="lineno"> 7930</span>&#160; </div>
<div class="line"><a name="l07931"></a><span class="lineno"> 7931</span>&#160; <span class="comment">// U+100000..U+10FFFF F4 80..8F 80..BF 80..BF</span></div>
<div class="line"><a name="l07932"></a><span class="lineno"> 7932</span>&#160; <span class="keywordflow">case</span> 0xF4:</div>
<div class="line"><a name="l07933"></a><span class="lineno"> 7933</span>&#160; {</div>
<div class="line"><a name="l07934"></a><span class="lineno"> 7934</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF}))))</div>
<div class="line"><a name="l07935"></a><span class="lineno"> 7935</span>&#160; {</div>
<div class="line"><a name="l07936"></a><span class="lineno"> 7936</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07937"></a><span class="lineno"> 7937</span>&#160; }</div>
<div class="line"><a name="l07938"></a><span class="lineno"> 7938</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l07939"></a><span class="lineno"> 7939</span>&#160; }</div>
<div class="line"><a name="l07940"></a><span class="lineno"> 7940</span>&#160; </div>
<div class="line"><a name="l07941"></a><span class="lineno"> 7941</span>&#160; <span class="comment">// remaining bytes (80..C1 and F5..FF) are ill-formed</span></div>
<div class="line"><a name="l07942"></a><span class="lineno"> 7942</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l07943"></a><span class="lineno"> 7943</span>&#160; {</div>
<div class="line"><a name="l07944"></a><span class="lineno"> 7944</span>&#160; error_message = <span class="stringliteral">&quot;invalid string: ill-formed UTF-8 byte&quot;</span>;</div>
<div class="line"><a name="l07945"></a><span class="lineno"> 7945</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l07946"></a><span class="lineno"> 7946</span>&#160; }</div>
<div class="line"><a name="l07947"></a><span class="lineno"> 7947</span>&#160; }</div>
<div class="line"><a name="l07948"></a><span class="lineno"> 7948</span>&#160; }</div>
<div class="line"><a name="l07949"></a><span class="lineno"> 7949</span>&#160; }</div>
<div class="line"><a name="l07950"></a><span class="lineno"> 7950</span>&#160; </div>
<div class="line"><a name="l07951"></a><span class="lineno"> 7951</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l07952"></a><span class="lineno"> 7952</span>&#160; static <span class="keywordtype">void</span> strtof(<span class="keywordtype">float</span>&amp; f, const <span class="keywordtype">char</span>* str, <span class="keywordtype">char</span>** endptr) noexcept</div>
<div class="line"><a name="l07953"></a><span class="lineno"> 7953</span>&#160; {</div>
<div class="line"><a name="l07954"></a><span class="lineno"> 7954</span>&#160; f = std::strtof(str, endptr);</div>
<div class="line"><a name="l07955"></a><span class="lineno"> 7955</span>&#160; }</div>
<div class="line"><a name="l07956"></a><span class="lineno"> 7956</span>&#160; </div>
<div class="line"><a name="l07957"></a><span class="lineno"> 7957</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l07958"></a><span class="lineno"> 7958</span>&#160; static <span class="keywordtype">void</span> strtof(<span class="keywordtype">double</span>&amp; f, const <span class="keywordtype">char</span>* str, <span class="keywordtype">char</span>** endptr) noexcept</div>
<div class="line"><a name="l07959"></a><span class="lineno"> 7959</span>&#160; {</div>
<div class="line"><a name="l07960"></a><span class="lineno"> 7960</span>&#160; f = std::strtod(str, endptr);</div>
<div class="line"><a name="l07961"></a><span class="lineno"> 7961</span>&#160; }</div>
<div class="line"><a name="l07962"></a><span class="lineno"> 7962</span>&#160; </div>
<div class="line"><a name="l07963"></a><span class="lineno"> 7963</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l07964"></a><span class="lineno"> 7964</span>&#160; static <span class="keywordtype">void</span> strtof(<span class="keywordtype">long</span> <span class="keywordtype">double</span>&amp; f, const <span class="keywordtype">char</span>* str, <span class="keywordtype">char</span>** endptr) noexcept</div>
<div class="line"><a name="l07965"></a><span class="lineno"> 7965</span>&#160; {</div>
<div class="line"><a name="l07966"></a><span class="lineno"> 7966</span>&#160; f = std::strtold(str, endptr);</div>
<div class="line"><a name="l07967"></a><span class="lineno"> 7967</span>&#160; }</div>
<div class="line"><a name="l07968"></a><span class="lineno"> 7968</span>&#160; </div>
<div class="line"><a name="l08009"></a><span class="lineno"> 8009</span>&#160; token_type scan_number() <span class="comment">// lgtm [cpp/use-of-goto]</span></div>
<div class="line"><a name="l08010"></a><span class="lineno"> 8010</span>&#160; {</div>
<div class="line"><a name="l08011"></a><span class="lineno"> 8011</span>&#160; <span class="comment">// reset token_buffer to store the number&#39;s bytes</span></div>
<div class="line"><a name="l08012"></a><span class="lineno"> 8012</span>&#160; reset();</div>
<div class="line"><a name="l08013"></a><span class="lineno"> 8013</span>&#160; </div>
<div class="line"><a name="l08014"></a><span class="lineno"> 8014</span>&#160; <span class="comment">// the type of the parsed number; initially set to unsigned; will be</span></div>
<div class="line"><a name="l08015"></a><span class="lineno"> 8015</span>&#160; <span class="comment">// changed if minus sign, decimal point or exponent is read</span></div>
<div class="line"><a name="l08016"></a><span class="lineno"> 8016</span>&#160; token_type number_type = token_type::value_unsigned;</div>
<div class="line"><a name="l08017"></a><span class="lineno"> 8017</span>&#160; </div>
<div class="line"><a name="l08018"></a><span class="lineno"> 8018</span>&#160; <span class="comment">// state (init): we just found out we need to scan a number</span></div>
<div class="line"><a name="l08019"></a><span class="lineno"> 8019</span>&#160; <span class="keywordflow">switch</span> (current)</div>
<div class="line"><a name="l08020"></a><span class="lineno"> 8020</span>&#160; {</div>
<div class="line"><a name="l08021"></a><span class="lineno"> 8021</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;-&#39;</span>:</div>
<div class="line"><a name="l08022"></a><span class="lineno"> 8022</span>&#160; {</div>
<div class="line"><a name="l08023"></a><span class="lineno"> 8023</span>&#160; add(current);</div>
<div class="line"><a name="l08024"></a><span class="lineno"> 8024</span>&#160; <span class="keywordflow">goto</span> scan_number_minus;</div>
<div class="line"><a name="l08025"></a><span class="lineno"> 8025</span>&#160; }</div>
<div class="line"><a name="l08026"></a><span class="lineno"> 8026</span>&#160; </div>
<div class="line"><a name="l08027"></a><span class="lineno"> 8027</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>:</div>
<div class="line"><a name="l08028"></a><span class="lineno"> 8028</span>&#160; {</div>
<div class="line"><a name="l08029"></a><span class="lineno"> 8029</span>&#160; add(current);</div>
<div class="line"><a name="l08030"></a><span class="lineno"> 8030</span>&#160; <span class="keywordflow">goto</span> scan_number_zero;</div>
<div class="line"><a name="l08031"></a><span class="lineno"> 8031</span>&#160; }</div>
<div class="line"><a name="l08032"></a><span class="lineno"> 8032</span>&#160; </div>
<div class="line"><a name="l08033"></a><span class="lineno"> 8033</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;1&#39;</span>:</div>
<div class="line"><a name="l08034"></a><span class="lineno"> 8034</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;2&#39;</span>:</div>
<div class="line"><a name="l08035"></a><span class="lineno"> 8035</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;3&#39;</span>:</div>
<div class="line"><a name="l08036"></a><span class="lineno"> 8036</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;4&#39;</span>:</div>
<div class="line"><a name="l08037"></a><span class="lineno"> 8037</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;5&#39;</span>:</div>
<div class="line"><a name="l08038"></a><span class="lineno"> 8038</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;6&#39;</span>:</div>
<div class="line"><a name="l08039"></a><span class="lineno"> 8039</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;7&#39;</span>:</div>
<div class="line"><a name="l08040"></a><span class="lineno"> 8040</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;8&#39;</span>:</div>
<div class="line"><a name="l08041"></a><span class="lineno"> 8041</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;9&#39;</span>:</div>
<div class="line"><a name="l08042"></a><span class="lineno"> 8042</span>&#160; {</div>
<div class="line"><a name="l08043"></a><span class="lineno"> 8043</span>&#160; add(current);</div>
<div class="line"><a name="l08044"></a><span class="lineno"> 8044</span>&#160; <span class="keywordflow">goto</span> scan_number_any1;</div>
<div class="line"><a name="l08045"></a><span class="lineno"> 8045</span>&#160; }</div>
<div class="line"><a name="l08046"></a><span class="lineno"> 8046</span>&#160; </div>
<div class="line"><a name="l08047"></a><span class="lineno"> 8047</span>&#160; <span class="comment">// all other characters are rejected outside scan_number()</span></div>
<div class="line"><a name="l08048"></a><span class="lineno"> 8048</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l08049"></a><span class="lineno"> 8049</span>&#160; assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l08050"></a><span class="lineno"> 8050</span>&#160; }</div>
<div class="line"><a name="l08051"></a><span class="lineno"> 8051</span>&#160; </div>
<div class="line"><a name="l08052"></a><span class="lineno"> 8052</span>&#160;scan_number_minus:</div>
<div class="line"><a name="l08053"></a><span class="lineno"> 8053</span>&#160; <span class="comment">// state: we just parsed a leading minus sign</span></div>
<div class="line"><a name="l08054"></a><span class="lineno"> 8054</span>&#160; number_type = token_type::value_integer;</div>
<div class="line"><a name="l08055"></a><span class="lineno"> 8055</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
<div class="line"><a name="l08056"></a><span class="lineno"> 8056</span>&#160; {</div>
<div class="line"><a name="l08057"></a><span class="lineno"> 8057</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>:</div>
<div class="line"><a name="l08058"></a><span class="lineno"> 8058</span>&#160; {</div>
<div class="line"><a name="l08059"></a><span class="lineno"> 8059</span>&#160; add(current);</div>
<div class="line"><a name="l08060"></a><span class="lineno"> 8060</span>&#160; <span class="keywordflow">goto</span> scan_number_zero;</div>
<div class="line"><a name="l08061"></a><span class="lineno"> 8061</span>&#160; }</div>
<div class="line"><a name="l08062"></a><span class="lineno"> 8062</span>&#160; </div>
<div class="line"><a name="l08063"></a><span class="lineno"> 8063</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;1&#39;</span>:</div>
<div class="line"><a name="l08064"></a><span class="lineno"> 8064</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;2&#39;</span>:</div>
<div class="line"><a name="l08065"></a><span class="lineno"> 8065</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;3&#39;</span>:</div>
<div class="line"><a name="l08066"></a><span class="lineno"> 8066</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;4&#39;</span>:</div>
<div class="line"><a name="l08067"></a><span class="lineno"> 8067</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;5&#39;</span>:</div>
<div class="line"><a name="l08068"></a><span class="lineno"> 8068</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;6&#39;</span>:</div>
<div class="line"><a name="l08069"></a><span class="lineno"> 8069</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;7&#39;</span>:</div>
<div class="line"><a name="l08070"></a><span class="lineno"> 8070</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;8&#39;</span>:</div>
<div class="line"><a name="l08071"></a><span class="lineno"> 8071</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;9&#39;</span>:</div>
<div class="line"><a name="l08072"></a><span class="lineno"> 8072</span>&#160; {</div>
<div class="line"><a name="l08073"></a><span class="lineno"> 8073</span>&#160; add(current);</div>
<div class="line"><a name="l08074"></a><span class="lineno"> 8074</span>&#160; <span class="keywordflow">goto</span> scan_number_any1;</div>
<div class="line"><a name="l08075"></a><span class="lineno"> 8075</span>&#160; }</div>
<div class="line"><a name="l08076"></a><span class="lineno"> 8076</span>&#160; </div>
<div class="line"><a name="l08077"></a><span class="lineno"> 8077</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l08078"></a><span class="lineno"> 8078</span>&#160; {</div>
<div class="line"><a name="l08079"></a><span class="lineno"> 8079</span>&#160; error_message = <span class="stringliteral">&quot;invalid number; expected digit after &#39;-&#39;&quot;</span>;</div>
<div class="line"><a name="l08080"></a><span class="lineno"> 8080</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l08081"></a><span class="lineno"> 8081</span>&#160; }</div>
<div class="line"><a name="l08082"></a><span class="lineno"> 8082</span>&#160; }</div>
<div class="line"><a name="l08083"></a><span class="lineno"> 8083</span>&#160; </div>
<div class="line"><a name="l08084"></a><span class="lineno"> 8084</span>&#160;scan_number_zero:</div>
<div class="line"><a name="l08085"></a><span class="lineno"> 8085</span>&#160; <span class="comment">// state: we just parse a zero (maybe with a leading minus sign)</span></div>
<div class="line"><a name="l08086"></a><span class="lineno"> 8086</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
<div class="line"><a name="l08087"></a><span class="lineno"> 8087</span>&#160; {</div>
<div class="line"><a name="l08088"></a><span class="lineno"> 8088</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;.&#39;</span>:</div>
<div class="line"><a name="l08089"></a><span class="lineno"> 8089</span>&#160; {</div>
<div class="line"><a name="l08090"></a><span class="lineno"> 8090</span>&#160; add(decimal_point_char);</div>
<div class="line"><a name="l08091"></a><span class="lineno"> 8091</span>&#160; <span class="keywordflow">goto</span> scan_number_decimal1;</div>
<div class="line"><a name="l08092"></a><span class="lineno"> 8092</span>&#160; }</div>
<div class="line"><a name="l08093"></a><span class="lineno"> 8093</span>&#160; </div>
<div class="line"><a name="l08094"></a><span class="lineno"> 8094</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;e&#39;</span>:</div>
<div class="line"><a name="l08095"></a><span class="lineno"> 8095</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;E&#39;</span>:</div>
<div class="line"><a name="l08096"></a><span class="lineno"> 8096</span>&#160; {</div>
<div class="line"><a name="l08097"></a><span class="lineno"> 8097</span>&#160; add(current);</div>
<div class="line"><a name="l08098"></a><span class="lineno"> 8098</span>&#160; <span class="keywordflow">goto</span> scan_number_exponent;</div>
<div class="line"><a name="l08099"></a><span class="lineno"> 8099</span>&#160; }</div>
<div class="line"><a name="l08100"></a><span class="lineno"> 8100</span>&#160; </div>
<div class="line"><a name="l08101"></a><span class="lineno"> 8101</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l08102"></a><span class="lineno"> 8102</span>&#160; <span class="keywordflow">goto</span> scan_number_done;</div>
<div class="line"><a name="l08103"></a><span class="lineno"> 8103</span>&#160; }</div>
<div class="line"><a name="l08104"></a><span class="lineno"> 8104</span>&#160; </div>
<div class="line"><a name="l08105"></a><span class="lineno"> 8105</span>&#160;scan_number_any1:</div>
<div class="line"><a name="l08106"></a><span class="lineno"> 8106</span>&#160; <span class="comment">// state: we just parsed a number 0-9 (maybe with a leading minus sign)</span></div>
<div class="line"><a name="l08107"></a><span class="lineno"> 8107</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
<div class="line"><a name="l08108"></a><span class="lineno"> 8108</span>&#160; {</div>
<div class="line"><a name="l08109"></a><span class="lineno"> 8109</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>:</div>
<div class="line"><a name="l08110"></a><span class="lineno"> 8110</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;1&#39;</span>:</div>
<div class="line"><a name="l08111"></a><span class="lineno"> 8111</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;2&#39;</span>:</div>
<div class="line"><a name="l08112"></a><span class="lineno"> 8112</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;3&#39;</span>:</div>
<div class="line"><a name="l08113"></a><span class="lineno"> 8113</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;4&#39;</span>:</div>
<div class="line"><a name="l08114"></a><span class="lineno"> 8114</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;5&#39;</span>:</div>
<div class="line"><a name="l08115"></a><span class="lineno"> 8115</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;6&#39;</span>:</div>
<div class="line"><a name="l08116"></a><span class="lineno"> 8116</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;7&#39;</span>:</div>
<div class="line"><a name="l08117"></a><span class="lineno"> 8117</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;8&#39;</span>:</div>
<div class="line"><a name="l08118"></a><span class="lineno"> 8118</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;9&#39;</span>:</div>
<div class="line"><a name="l08119"></a><span class="lineno"> 8119</span>&#160; {</div>
<div class="line"><a name="l08120"></a><span class="lineno"> 8120</span>&#160; add(current);</div>
<div class="line"><a name="l08121"></a><span class="lineno"> 8121</span>&#160; <span class="keywordflow">goto</span> scan_number_any1;</div>
<div class="line"><a name="l08122"></a><span class="lineno"> 8122</span>&#160; }</div>
<div class="line"><a name="l08123"></a><span class="lineno"> 8123</span>&#160; </div>
<div class="line"><a name="l08124"></a><span class="lineno"> 8124</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;.&#39;</span>:</div>
<div class="line"><a name="l08125"></a><span class="lineno"> 8125</span>&#160; {</div>
<div class="line"><a name="l08126"></a><span class="lineno"> 8126</span>&#160; add(decimal_point_char);</div>
<div class="line"><a name="l08127"></a><span class="lineno"> 8127</span>&#160; <span class="keywordflow">goto</span> scan_number_decimal1;</div>
<div class="line"><a name="l08128"></a><span class="lineno"> 8128</span>&#160; }</div>
<div class="line"><a name="l08129"></a><span class="lineno"> 8129</span>&#160; </div>
<div class="line"><a name="l08130"></a><span class="lineno"> 8130</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;e&#39;</span>:</div>
<div class="line"><a name="l08131"></a><span class="lineno"> 8131</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;E&#39;</span>:</div>
<div class="line"><a name="l08132"></a><span class="lineno"> 8132</span>&#160; {</div>
<div class="line"><a name="l08133"></a><span class="lineno"> 8133</span>&#160; add(current);</div>
<div class="line"><a name="l08134"></a><span class="lineno"> 8134</span>&#160; <span class="keywordflow">goto</span> scan_number_exponent;</div>
<div class="line"><a name="l08135"></a><span class="lineno"> 8135</span>&#160; }</div>
<div class="line"><a name="l08136"></a><span class="lineno"> 8136</span>&#160; </div>
<div class="line"><a name="l08137"></a><span class="lineno"> 8137</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l08138"></a><span class="lineno"> 8138</span>&#160; <span class="keywordflow">goto</span> scan_number_done;</div>
<div class="line"><a name="l08139"></a><span class="lineno"> 8139</span>&#160; }</div>
<div class="line"><a name="l08140"></a><span class="lineno"> 8140</span>&#160; </div>
<div class="line"><a name="l08141"></a><span class="lineno"> 8141</span>&#160;scan_number_decimal1:</div>
<div class="line"><a name="l08142"></a><span class="lineno"> 8142</span>&#160; <span class="comment">// state: we just parsed a decimal point</span></div>
<div class="line"><a name="l08143"></a><span class="lineno"> 8143</span>&#160; number_type = token_type::value_float;</div>
<div class="line"><a name="l08144"></a><span class="lineno"> 8144</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
<div class="line"><a name="l08145"></a><span class="lineno"> 8145</span>&#160; {</div>
<div class="line"><a name="l08146"></a><span class="lineno"> 8146</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>:</div>
<div class="line"><a name="l08147"></a><span class="lineno"> 8147</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;1&#39;</span>:</div>
<div class="line"><a name="l08148"></a><span class="lineno"> 8148</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;2&#39;</span>:</div>
<div class="line"><a name="l08149"></a><span class="lineno"> 8149</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;3&#39;</span>:</div>
<div class="line"><a name="l08150"></a><span class="lineno"> 8150</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;4&#39;</span>:</div>
<div class="line"><a name="l08151"></a><span class="lineno"> 8151</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;5&#39;</span>:</div>
<div class="line"><a name="l08152"></a><span class="lineno"> 8152</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;6&#39;</span>:</div>
<div class="line"><a name="l08153"></a><span class="lineno"> 8153</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;7&#39;</span>:</div>
<div class="line"><a name="l08154"></a><span class="lineno"> 8154</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;8&#39;</span>:</div>
<div class="line"><a name="l08155"></a><span class="lineno"> 8155</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;9&#39;</span>:</div>
<div class="line"><a name="l08156"></a><span class="lineno"> 8156</span>&#160; {</div>
<div class="line"><a name="l08157"></a><span class="lineno"> 8157</span>&#160; add(current);</div>
<div class="line"><a name="l08158"></a><span class="lineno"> 8158</span>&#160; <span class="keywordflow">goto</span> scan_number_decimal2;</div>
<div class="line"><a name="l08159"></a><span class="lineno"> 8159</span>&#160; }</div>
<div class="line"><a name="l08160"></a><span class="lineno"> 8160</span>&#160; </div>
<div class="line"><a name="l08161"></a><span class="lineno"> 8161</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l08162"></a><span class="lineno"> 8162</span>&#160; {</div>
<div class="line"><a name="l08163"></a><span class="lineno"> 8163</span>&#160; error_message = <span class="stringliteral">&quot;invalid number; expected digit after &#39;.&#39;&quot;</span>;</div>
<div class="line"><a name="l08164"></a><span class="lineno"> 8164</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l08165"></a><span class="lineno"> 8165</span>&#160; }</div>
<div class="line"><a name="l08166"></a><span class="lineno"> 8166</span>&#160; }</div>
<div class="line"><a name="l08167"></a><span class="lineno"> 8167</span>&#160; </div>
<div class="line"><a name="l08168"></a><span class="lineno"> 8168</span>&#160;scan_number_decimal2:</div>
<div class="line"><a name="l08169"></a><span class="lineno"> 8169</span>&#160; <span class="comment">// we just parsed at least one number after a decimal point</span></div>
<div class="line"><a name="l08170"></a><span class="lineno"> 8170</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
<div class="line"><a name="l08171"></a><span class="lineno"> 8171</span>&#160; {</div>
<div class="line"><a name="l08172"></a><span class="lineno"> 8172</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>:</div>
<div class="line"><a name="l08173"></a><span class="lineno"> 8173</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;1&#39;</span>:</div>
<div class="line"><a name="l08174"></a><span class="lineno"> 8174</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;2&#39;</span>:</div>
<div class="line"><a name="l08175"></a><span class="lineno"> 8175</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;3&#39;</span>:</div>
<div class="line"><a name="l08176"></a><span class="lineno"> 8176</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;4&#39;</span>:</div>
<div class="line"><a name="l08177"></a><span class="lineno"> 8177</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;5&#39;</span>:</div>
<div class="line"><a name="l08178"></a><span class="lineno"> 8178</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;6&#39;</span>:</div>
<div class="line"><a name="l08179"></a><span class="lineno"> 8179</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;7&#39;</span>:</div>
<div class="line"><a name="l08180"></a><span class="lineno"> 8180</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;8&#39;</span>:</div>
<div class="line"><a name="l08181"></a><span class="lineno"> 8181</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;9&#39;</span>:</div>
<div class="line"><a name="l08182"></a><span class="lineno"> 8182</span>&#160; {</div>
<div class="line"><a name="l08183"></a><span class="lineno"> 8183</span>&#160; add(current);</div>
<div class="line"><a name="l08184"></a><span class="lineno"> 8184</span>&#160; <span class="keywordflow">goto</span> scan_number_decimal2;</div>
<div class="line"><a name="l08185"></a><span class="lineno"> 8185</span>&#160; }</div>
<div class="line"><a name="l08186"></a><span class="lineno"> 8186</span>&#160; </div>
<div class="line"><a name="l08187"></a><span class="lineno"> 8187</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;e&#39;</span>:</div>
<div class="line"><a name="l08188"></a><span class="lineno"> 8188</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;E&#39;</span>:</div>
<div class="line"><a name="l08189"></a><span class="lineno"> 8189</span>&#160; {</div>
<div class="line"><a name="l08190"></a><span class="lineno"> 8190</span>&#160; add(current);</div>
<div class="line"><a name="l08191"></a><span class="lineno"> 8191</span>&#160; <span class="keywordflow">goto</span> scan_number_exponent;</div>
<div class="line"><a name="l08192"></a><span class="lineno"> 8192</span>&#160; }</div>
<div class="line"><a name="l08193"></a><span class="lineno"> 8193</span>&#160; </div>
<div class="line"><a name="l08194"></a><span class="lineno"> 8194</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l08195"></a><span class="lineno"> 8195</span>&#160; <span class="keywordflow">goto</span> scan_number_done;</div>
<div class="line"><a name="l08196"></a><span class="lineno"> 8196</span>&#160; }</div>
<div class="line"><a name="l08197"></a><span class="lineno"> 8197</span>&#160; </div>
<div class="line"><a name="l08198"></a><span class="lineno"> 8198</span>&#160;scan_number_exponent:</div>
<div class="line"><a name="l08199"></a><span class="lineno"> 8199</span>&#160; <span class="comment">// we just parsed an exponent</span></div>
<div class="line"><a name="l08200"></a><span class="lineno"> 8200</span>&#160; number_type = token_type::value_float;</div>
<div class="line"><a name="l08201"></a><span class="lineno"> 8201</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
<div class="line"><a name="l08202"></a><span class="lineno"> 8202</span>&#160; {</div>
<div class="line"><a name="l08203"></a><span class="lineno"> 8203</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;+&#39;</span>:</div>
<div class="line"><a name="l08204"></a><span class="lineno"> 8204</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;-&#39;</span>:</div>
<div class="line"><a name="l08205"></a><span class="lineno"> 8205</span>&#160; {</div>
<div class="line"><a name="l08206"></a><span class="lineno"> 8206</span>&#160; add(current);</div>
<div class="line"><a name="l08207"></a><span class="lineno"> 8207</span>&#160; <span class="keywordflow">goto</span> scan_number_sign;</div>
<div class="line"><a name="l08208"></a><span class="lineno"> 8208</span>&#160; }</div>
<div class="line"><a name="l08209"></a><span class="lineno"> 8209</span>&#160; </div>
<div class="line"><a name="l08210"></a><span class="lineno"> 8210</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>:</div>
<div class="line"><a name="l08211"></a><span class="lineno"> 8211</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;1&#39;</span>:</div>
<div class="line"><a name="l08212"></a><span class="lineno"> 8212</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;2&#39;</span>:</div>
<div class="line"><a name="l08213"></a><span class="lineno"> 8213</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;3&#39;</span>:</div>
<div class="line"><a name="l08214"></a><span class="lineno"> 8214</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;4&#39;</span>:</div>
<div class="line"><a name="l08215"></a><span class="lineno"> 8215</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;5&#39;</span>:</div>
<div class="line"><a name="l08216"></a><span class="lineno"> 8216</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;6&#39;</span>:</div>
<div class="line"><a name="l08217"></a><span class="lineno"> 8217</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;7&#39;</span>:</div>
<div class="line"><a name="l08218"></a><span class="lineno"> 8218</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;8&#39;</span>:</div>
<div class="line"><a name="l08219"></a><span class="lineno"> 8219</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;9&#39;</span>:</div>
<div class="line"><a name="l08220"></a><span class="lineno"> 8220</span>&#160; {</div>
<div class="line"><a name="l08221"></a><span class="lineno"> 8221</span>&#160; add(current);</div>
<div class="line"><a name="l08222"></a><span class="lineno"> 8222</span>&#160; <span class="keywordflow">goto</span> scan_number_any2;</div>
<div class="line"><a name="l08223"></a><span class="lineno"> 8223</span>&#160; }</div>
<div class="line"><a name="l08224"></a><span class="lineno"> 8224</span>&#160; </div>
<div class="line"><a name="l08225"></a><span class="lineno"> 8225</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l08226"></a><span class="lineno"> 8226</span>&#160; {</div>
<div class="line"><a name="l08227"></a><span class="lineno"> 8227</span>&#160; error_message =</div>
<div class="line"><a name="l08228"></a><span class="lineno"> 8228</span>&#160; <span class="stringliteral">&quot;invalid number; expected &#39;+&#39;, &#39;-&#39;, or digit after exponent&quot;</span>;</div>
<div class="line"><a name="l08229"></a><span class="lineno"> 8229</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l08230"></a><span class="lineno"> 8230</span>&#160; }</div>
<div class="line"><a name="l08231"></a><span class="lineno"> 8231</span>&#160; }</div>
<div class="line"><a name="l08232"></a><span class="lineno"> 8232</span>&#160; </div>
<div class="line"><a name="l08233"></a><span class="lineno"> 8233</span>&#160;scan_number_sign:</div>
<div class="line"><a name="l08234"></a><span class="lineno"> 8234</span>&#160; <span class="comment">// we just parsed an exponent sign</span></div>
<div class="line"><a name="l08235"></a><span class="lineno"> 8235</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
<div class="line"><a name="l08236"></a><span class="lineno"> 8236</span>&#160; {</div>
<div class="line"><a name="l08237"></a><span class="lineno"> 8237</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>:</div>
<div class="line"><a name="l08238"></a><span class="lineno"> 8238</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;1&#39;</span>:</div>
<div class="line"><a name="l08239"></a><span class="lineno"> 8239</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;2&#39;</span>:</div>
<div class="line"><a name="l08240"></a><span class="lineno"> 8240</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;3&#39;</span>:</div>
<div class="line"><a name="l08241"></a><span class="lineno"> 8241</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;4&#39;</span>:</div>
<div class="line"><a name="l08242"></a><span class="lineno"> 8242</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;5&#39;</span>:</div>
<div class="line"><a name="l08243"></a><span class="lineno"> 8243</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;6&#39;</span>:</div>
<div class="line"><a name="l08244"></a><span class="lineno"> 8244</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;7&#39;</span>:</div>
<div class="line"><a name="l08245"></a><span class="lineno"> 8245</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;8&#39;</span>:</div>
<div class="line"><a name="l08246"></a><span class="lineno"> 8246</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;9&#39;</span>:</div>
<div class="line"><a name="l08247"></a><span class="lineno"> 8247</span>&#160; {</div>
<div class="line"><a name="l08248"></a><span class="lineno"> 8248</span>&#160; add(current);</div>
<div class="line"><a name="l08249"></a><span class="lineno"> 8249</span>&#160; <span class="keywordflow">goto</span> scan_number_any2;</div>
<div class="line"><a name="l08250"></a><span class="lineno"> 8250</span>&#160; }</div>
<div class="line"><a name="l08251"></a><span class="lineno"> 8251</span>&#160; </div>
<div class="line"><a name="l08252"></a><span class="lineno"> 8252</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l08253"></a><span class="lineno"> 8253</span>&#160; {</div>
<div class="line"><a name="l08254"></a><span class="lineno"> 8254</span>&#160; error_message = <span class="stringliteral">&quot;invalid number; expected digit after exponent sign&quot;</span>;</div>
<div class="line"><a name="l08255"></a><span class="lineno"> 8255</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l08256"></a><span class="lineno"> 8256</span>&#160; }</div>
<div class="line"><a name="l08257"></a><span class="lineno"> 8257</span>&#160; }</div>
<div class="line"><a name="l08258"></a><span class="lineno"> 8258</span>&#160; </div>
<div class="line"><a name="l08259"></a><span class="lineno"> 8259</span>&#160;scan_number_any2:</div>
<div class="line"><a name="l08260"></a><span class="lineno"> 8260</span>&#160; <span class="comment">// we just parsed a number after the exponent or exponent sign</span></div>
<div class="line"><a name="l08261"></a><span class="lineno"> 8261</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
<div class="line"><a name="l08262"></a><span class="lineno"> 8262</span>&#160; {</div>
<div class="line"><a name="l08263"></a><span class="lineno"> 8263</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>:</div>
<div class="line"><a name="l08264"></a><span class="lineno"> 8264</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;1&#39;</span>:</div>
<div class="line"><a name="l08265"></a><span class="lineno"> 8265</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;2&#39;</span>:</div>
<div class="line"><a name="l08266"></a><span class="lineno"> 8266</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;3&#39;</span>:</div>
<div class="line"><a name="l08267"></a><span class="lineno"> 8267</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;4&#39;</span>:</div>
<div class="line"><a name="l08268"></a><span class="lineno"> 8268</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;5&#39;</span>:</div>
<div class="line"><a name="l08269"></a><span class="lineno"> 8269</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;6&#39;</span>:</div>
<div class="line"><a name="l08270"></a><span class="lineno"> 8270</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;7&#39;</span>:</div>
<div class="line"><a name="l08271"></a><span class="lineno"> 8271</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;8&#39;</span>:</div>
<div class="line"><a name="l08272"></a><span class="lineno"> 8272</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;9&#39;</span>:</div>
<div class="line"><a name="l08273"></a><span class="lineno"> 8273</span>&#160; {</div>
<div class="line"><a name="l08274"></a><span class="lineno"> 8274</span>&#160; add(current);</div>
<div class="line"><a name="l08275"></a><span class="lineno"> 8275</span>&#160; <span class="keywordflow">goto</span> scan_number_any2;</div>
<div class="line"><a name="l08276"></a><span class="lineno"> 8276</span>&#160; }</div>
<div class="line"><a name="l08277"></a><span class="lineno"> 8277</span>&#160; </div>
<div class="line"><a name="l08278"></a><span class="lineno"> 8278</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l08279"></a><span class="lineno"> 8279</span>&#160; <span class="keywordflow">goto</span> scan_number_done;</div>
<div class="line"><a name="l08280"></a><span class="lineno"> 8280</span>&#160; }</div>
<div class="line"><a name="l08281"></a><span class="lineno"> 8281</span>&#160; </div>
<div class="line"><a name="l08282"></a><span class="lineno"> 8282</span>&#160;scan_number_done:</div>
<div class="line"><a name="l08283"></a><span class="lineno"> 8283</span>&#160; <span class="comment">// unget the character after the number (we only read it to know that</span></div>
<div class="line"><a name="l08284"></a><span class="lineno"> 8284</span>&#160; <span class="comment">// we are done scanning a number)</span></div>
<div class="line"><a name="l08285"></a><span class="lineno"> 8285</span>&#160; unget();</div>
<div class="line"><a name="l08286"></a><span class="lineno"> 8286</span>&#160; </div>
<div class="line"><a name="l08287"></a><span class="lineno"> 8287</span>&#160; <span class="keywordtype">char</span>* endptr = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l08288"></a><span class="lineno"> 8288</span>&#160; errno = 0;</div>
<div class="line"><a name="l08289"></a><span class="lineno"> 8289</span>&#160; </div>
<div class="line"><a name="l08290"></a><span class="lineno"> 8290</span>&#160; <span class="comment">// try to parse integers first and fall back to floats</span></div>
<div class="line"><a name="l08291"></a><span class="lineno"> 8291</span>&#160; <span class="keywordflow">if</span> (number_type == token_type::value_unsigned)</div>
<div class="line"><a name="l08292"></a><span class="lineno"> 8292</span>&#160; {</div>
<div class="line"><a name="l08293"></a><span class="lineno"> 8293</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> x = std::strtoull(token_buffer.data(), &amp;endptr, 10);</div>
<div class="line"><a name="l08294"></a><span class="lineno"> 8294</span>&#160; </div>
<div class="line"><a name="l08295"></a><span class="lineno"> 8295</span>&#160; <span class="comment">// we checked the number format before</span></div>
<div class="line"><a name="l08296"></a><span class="lineno"> 8296</span>&#160; assert(endptr == token_buffer.data() + token_buffer.size());</div>
<div class="line"><a name="l08297"></a><span class="lineno"> 8297</span>&#160; </div>
<div class="line"><a name="l08298"></a><span class="lineno"> 8298</span>&#160; <span class="keywordflow">if</span> (errno == 0)</div>
<div class="line"><a name="l08299"></a><span class="lineno"> 8299</span>&#160; {</div>
<div class="line"><a name="l08300"></a><span class="lineno"> 8300</span>&#160; value_unsigned = <span class="keyword">static_cast&lt;</span>number_unsigned_t<span class="keyword">&gt;</span>(x);</div>
<div class="line"><a name="l08301"></a><span class="lineno"> 8301</span>&#160; <span class="keywordflow">if</span> (value_unsigned == x)</div>
<div class="line"><a name="l08302"></a><span class="lineno"> 8302</span>&#160; {</div>
<div class="line"><a name="l08303"></a><span class="lineno"> 8303</span>&#160; <span class="keywordflow">return</span> token_type::value_unsigned;</div>
<div class="line"><a name="l08304"></a><span class="lineno"> 8304</span>&#160; }</div>
<div class="line"><a name="l08305"></a><span class="lineno"> 8305</span>&#160; }</div>
<div class="line"><a name="l08306"></a><span class="lineno"> 8306</span>&#160; }</div>
<div class="line"><a name="l08307"></a><span class="lineno"> 8307</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (number_type == token_type::value_integer)</div>
<div class="line"><a name="l08308"></a><span class="lineno"> 8308</span>&#160; {</div>
<div class="line"><a name="l08309"></a><span class="lineno"> 8309</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> x = std::strtoll(token_buffer.data(), &amp;endptr, 10);</div>
<div class="line"><a name="l08310"></a><span class="lineno"> 8310</span>&#160; </div>
<div class="line"><a name="l08311"></a><span class="lineno"> 8311</span>&#160; <span class="comment">// we checked the number format before</span></div>
<div class="line"><a name="l08312"></a><span class="lineno"> 8312</span>&#160; assert(endptr == token_buffer.data() + token_buffer.size());</div>
<div class="line"><a name="l08313"></a><span class="lineno"> 8313</span>&#160; </div>
<div class="line"><a name="l08314"></a><span class="lineno"> 8314</span>&#160; <span class="keywordflow">if</span> (errno == 0)</div>
<div class="line"><a name="l08315"></a><span class="lineno"> 8315</span>&#160; {</div>
<div class="line"><a name="l08316"></a><span class="lineno"> 8316</span>&#160; value_integer = <span class="keyword">static_cast&lt;</span>number_integer_t<span class="keyword">&gt;</span>(x);</div>
<div class="line"><a name="l08317"></a><span class="lineno"> 8317</span>&#160; <span class="keywordflow">if</span> (value_integer == x)</div>
<div class="line"><a name="l08318"></a><span class="lineno"> 8318</span>&#160; {</div>
<div class="line"><a name="l08319"></a><span class="lineno"> 8319</span>&#160; <span class="keywordflow">return</span> token_type::value_integer;</div>
<div class="line"><a name="l08320"></a><span class="lineno"> 8320</span>&#160; }</div>
<div class="line"><a name="l08321"></a><span class="lineno"> 8321</span>&#160; }</div>
<div class="line"><a name="l08322"></a><span class="lineno"> 8322</span>&#160; }</div>
<div class="line"><a name="l08323"></a><span class="lineno"> 8323</span>&#160; </div>
<div class="line"><a name="l08324"></a><span class="lineno"> 8324</span>&#160; <span class="comment">// this code is reached if we parse a floating-point number or if an</span></div>
<div class="line"><a name="l08325"></a><span class="lineno"> 8325</span>&#160; <span class="comment">// integer conversion above failed</span></div>
<div class="line"><a name="l08326"></a><span class="lineno"> 8326</span>&#160; strtof(value_float, token_buffer.data(), &amp;endptr);</div>
<div class="line"><a name="l08327"></a><span class="lineno"> 8327</span>&#160; </div>
<div class="line"><a name="l08328"></a><span class="lineno"> 8328</span>&#160; <span class="comment">// we checked the number format before</span></div>
<div class="line"><a name="l08329"></a><span class="lineno"> 8329</span>&#160; assert(endptr == token_buffer.data() + token_buffer.size());</div>
<div class="line"><a name="l08330"></a><span class="lineno"> 8330</span>&#160; </div>
<div class="line"><a name="l08331"></a><span class="lineno"> 8331</span>&#160; <span class="keywordflow">return</span> token_type::value_float;</div>
<div class="line"><a name="l08332"></a><span class="lineno"> 8332</span>&#160; }</div>
<div class="line"><a name="l08333"></a><span class="lineno"> 8333</span>&#160; </div>
<div class="line"><a name="l08339"></a><span class="lineno"> 8339</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l08340"></a><span class="lineno"> 8340</span>&#160; token_type scan_literal(const <span class="keywordtype">char</span>* literal_text, const <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> length,</div>
<div class="line"><a name="l08341"></a><span class="lineno"> 8341</span>&#160; token_type return_type)</div>
<div class="line"><a name="l08342"></a><span class="lineno"> 8342</span>&#160; {</div>
<div class="line"><a name="l08343"></a><span class="lineno"> 8343</span>&#160; assert(current == literal_text[0]);</div>
<div class="line"><a name="l08344"></a><span class="lineno"> 8344</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 1; i &lt; length; ++i)</div>
<div class="line"><a name="l08345"></a><span class="lineno"> 8345</span>&#160; {</div>
<div class="line"><a name="l08346"></a><span class="lineno"> 8346</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() != literal_text[i]))</div>
<div class="line"><a name="l08347"></a><span class="lineno"> 8347</span>&#160; {</div>
<div class="line"><a name="l08348"></a><span class="lineno"> 8348</span>&#160; error_message = <span class="stringliteral">&quot;invalid literal&quot;</span>;</div>
<div class="line"><a name="l08349"></a><span class="lineno"> 8349</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l08350"></a><span class="lineno"> 8350</span>&#160; }</div>
<div class="line"><a name="l08351"></a><span class="lineno"> 8351</span>&#160; }</div>
<div class="line"><a name="l08352"></a><span class="lineno"> 8352</span>&#160; <span class="keywordflow">return</span> return_type;</div>
<div class="line"><a name="l08353"></a><span class="lineno"> 8353</span>&#160; }</div>
<div class="line"><a name="l08354"></a><span class="lineno"> 8354</span>&#160; </div>
<div class="line"><a name="l08356"></a><span class="lineno"> 8356</span>&#160; <span class="comment">// input management</span></div>
<div class="line"><a name="l08358"></a><span class="lineno"> 8358</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l08360"></a><span class="lineno"> 8360</span>&#160; <span class="keywordtype">void</span> reset() noexcept</div>
<div class="line"><a name="l08361"></a><span class="lineno"> 8361</span>&#160; {</div>
<div class="line"><a name="l08362"></a><span class="lineno"> 8362</span>&#160; token_buffer.clear();</div>
<div class="line"><a name="l08363"></a><span class="lineno"> 8363</span>&#160; token_string.clear();</div>
<div class="line"><a name="l08364"></a><span class="lineno"> 8364</span>&#160; token_string.push_back(std::char_traits&lt;char&gt;::to_char_type(current));</div>
<div class="line"><a name="l08365"></a><span class="lineno"> 8365</span>&#160; }</div>
<div class="line"><a name="l08366"></a><span class="lineno"> 8366</span>&#160; </div>
<div class="line"><a name="l08367"></a><span class="lineno"> 8367</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l08368"></a><span class="lineno"> 8368</span>&#160;<span class="comment"> @brief get next character from the input</span></div>
<div class="line"><a name="l08369"></a><span class="lineno"> 8369</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l08370"></a><span class="lineno"> 8370</span>&#160;<span class="comment"> This function provides the interface to the used input adapter. It does</span></div>
<div class="line"><a name="l08371"></a><span class="lineno"> 8371</span>&#160;<span class="comment"> not throw in case the input reached EOF, but returns a</span></div>
<div class="line"><a name="l08372"></a><span class="lineno"> 8372</span>&#160;<span class="comment"> `std::char_traits&lt;char&gt;::eof()` in that case. Stores the scanned characters</span></div>
<div class="line"><a name="l08373"></a><span class="lineno"> 8373</span>&#160;<span class="comment"> for use in error messages.</span></div>
<div class="line"><a name="l08374"></a><span class="lineno"> 8374</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l08375"></a><span class="lineno"> 8375</span>&#160;<span class="comment"> @return character read from the input</span></div>
<div class="line"><a name="l08376"></a><span class="lineno"> 8376</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l08377"></a><span class="lineno"> 8377</span>&#160; std::char_traits&lt;char&gt;::int_type <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>()</div>
<div class="line"><a name="l08378"></a><span class="lineno"> 8378</span>&#160; {</div>
<div class="line"><a name="l08379"></a><span class="lineno"> 8379</span>&#160; ++position.chars_read_total;</div>
<div class="line"><a name="l08380"></a><span class="lineno"> 8380</span>&#160; ++position.chars_read_current_line;</div>
<div class="line"><a name="l08381"></a><span class="lineno"> 8381</span>&#160; </div>
<div class="line"><a name="l08382"></a><span class="lineno"> 8382</span>&#160; <span class="keywordflow">if</span> (next_unget)</div>
<div class="line"><a name="l08383"></a><span class="lineno"> 8383</span>&#160; {</div>
<div class="line"><a name="l08384"></a><span class="lineno"> 8384</span>&#160; <span class="comment">// just reset the next_unget variable and work with current</span></div>
<div class="line"><a name="l08385"></a><span class="lineno"> 8385</span>&#160; next_unget = <span class="keyword">false</span>;</div>
<div class="line"><a name="l08386"></a><span class="lineno"> 8386</span>&#160; }</div>
<div class="line"><a name="l08387"></a><span class="lineno"> 8387</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l08388"></a><span class="lineno"> 8388</span>&#160; {</div>
<div class="line"><a name="l08389"></a><span class="lineno"> 8389</span>&#160; current = ia-&gt;get_character();</div>
<div class="line"><a name="l08390"></a><span class="lineno"> 8390</span>&#160; }</div>
<div class="line"><a name="l08391"></a><span class="lineno"> 8391</span>&#160; </div>
<div class="line"><a name="l08392"></a><span class="lineno"> 8392</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(current != std::char_traits&lt;char&gt;::eof()))</div>
<div class="line"><a name="l08393"></a><span class="lineno"> 8393</span>&#160; {</div>
<div class="line"><a name="l08394"></a><span class="lineno"> 8394</span>&#160; token_string.push_back(std::char_traits&lt;char&gt;::to_char_type(current));</div>
<div class="line"><a name="l08395"></a><span class="lineno"> 8395</span>&#160; }</div>
<div class="line"><a name="l08396"></a><span class="lineno"> 8396</span>&#160; </div>
<div class="line"><a name="l08397"></a><span class="lineno"> 8397</span>&#160; <span class="keywordflow">if</span> (current == <span class="charliteral">&#39;\n&#39;</span>)</div>
<div class="line"><a name="l08398"></a><span class="lineno"> 8398</span>&#160; {</div>
<div class="line"><a name="l08399"></a><span class="lineno"> 8399</span>&#160; ++position.lines_read;</div>
<div class="line"><a name="l08400"></a><span class="lineno"> 8400</span>&#160; position.chars_read_current_line = 0;</div>
<div class="line"><a name="l08401"></a><span class="lineno"> 8401</span>&#160; }</div>
<div class="line"><a name="l08402"></a><span class="lineno"> 8402</span>&#160; </div>
<div class="line"><a name="l08403"></a><span class="lineno"> 8403</span>&#160; <span class="keywordflow">return</span> current;</div>
<div class="line"><a name="l08404"></a><span class="lineno"> 8404</span>&#160; }</div>
<div class="line"><a name="l08405"></a><span class="lineno"> 8405</span>&#160; </div>
<div class="line"><a name="l08414"></a><span class="lineno"> 8414</span>&#160; <span class="keywordtype">void</span> unget()</div>
<div class="line"><a name="l08415"></a><span class="lineno"> 8415</span>&#160; {</div>
<div class="line"><a name="l08416"></a><span class="lineno"> 8416</span>&#160; next_unget = <span class="keyword">true</span>;</div>
<div class="line"><a name="l08417"></a><span class="lineno"> 8417</span>&#160; </div>
<div class="line"><a name="l08418"></a><span class="lineno"> 8418</span>&#160; --position.chars_read_total;</div>
<div class="line"><a name="l08419"></a><span class="lineno"> 8419</span>&#160; </div>
<div class="line"><a name="l08420"></a><span class="lineno"> 8420</span>&#160; <span class="comment">// in case we &quot;unget&quot; a newline, we have to also decrement the lines_read</span></div>
<div class="line"><a name="l08421"></a><span class="lineno"> 8421</span>&#160; <span class="keywordflow">if</span> (position.chars_read_current_line == 0)</div>
<div class="line"><a name="l08422"></a><span class="lineno"> 8422</span>&#160; {</div>
<div class="line"><a name="l08423"></a><span class="lineno"> 8423</span>&#160; <span class="keywordflow">if</span> (position.lines_read &gt; 0)</div>
<div class="line"><a name="l08424"></a><span class="lineno"> 8424</span>&#160; {</div>
<div class="line"><a name="l08425"></a><span class="lineno"> 8425</span>&#160; --position.lines_read;</div>
<div class="line"><a name="l08426"></a><span class="lineno"> 8426</span>&#160; }</div>
<div class="line"><a name="l08427"></a><span class="lineno"> 8427</span>&#160; }</div>
<div class="line"><a name="l08428"></a><span class="lineno"> 8428</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l08429"></a><span class="lineno"> 8429</span>&#160; {</div>
<div class="line"><a name="l08430"></a><span class="lineno"> 8430</span>&#160; --position.chars_read_current_line;</div>
<div class="line"><a name="l08431"></a><span class="lineno"> 8431</span>&#160; }</div>
<div class="line"><a name="l08432"></a><span class="lineno"> 8432</span>&#160; </div>
<div class="line"><a name="l08433"></a><span class="lineno"> 8433</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(current != std::char_traits&lt;char&gt;::eof()))</div>
<div class="line"><a name="l08434"></a><span class="lineno"> 8434</span>&#160; {</div>
<div class="line"><a name="l08435"></a><span class="lineno"> 8435</span>&#160; assert(not token_string.empty());</div>
<div class="line"><a name="l08436"></a><span class="lineno"> 8436</span>&#160; token_string.pop_back();</div>
<div class="line"><a name="l08437"></a><span class="lineno"> 8437</span>&#160; }</div>
<div class="line"><a name="l08438"></a><span class="lineno"> 8438</span>&#160; }</div>
<div class="line"><a name="l08439"></a><span class="lineno"> 8439</span>&#160; </div>
<div class="line"><a name="l08441"></a><span class="lineno"> 8441</span>&#160; <span class="keywordtype">void</span> add(<span class="keywordtype">int</span> c)</div>
<div class="line"><a name="l08442"></a><span class="lineno"> 8442</span>&#160; {</div>
<div class="line"><a name="l08443"></a><span class="lineno"> 8443</span>&#160; token_buffer.push_back(std::char_traits&lt;char&gt;::to_char_type(c));</div>
<div class="line"><a name="l08444"></a><span class="lineno"> 8444</span>&#160; }</div>
<div class="line"><a name="l08445"></a><span class="lineno"> 8445</span>&#160; </div>
<div class="line"><a name="l08446"></a><span class="lineno"> 8446</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l08448"></a><span class="lineno"> 8448</span>&#160; <span class="comment">// value getters</span></div>
<div class="line"><a name="l08450"></a><span class="lineno"> 8450</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l08452"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#afa338d17c0a7e834c73104258a2c8ced"> 8452</a></span>&#160; constexpr number_integer_t <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#afa338d17c0a7e834c73104258a2c8ced">get_number_integer</a>() const noexcept</div>
<div class="line"><a name="l08453"></a><span class="lineno"> 8453</span>&#160; {</div>
<div class="line"><a name="l08454"></a><span class="lineno"> 8454</span>&#160; <span class="keywordflow">return</span> value_integer;</div>
<div class="line"><a name="l08455"></a><span class="lineno"> 8455</span>&#160; }</div>
<div class="line"><a name="l08456"></a><span class="lineno"> 8456</span>&#160; </div>
<div class="line"><a name="l08458"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a56640fb92293e0c17742ca3c814d74d6"> 8458</a></span>&#160; constexpr number_unsigned_t <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a56640fb92293e0c17742ca3c814d74d6">get_number_unsigned</a>() const noexcept</div>
<div class="line"><a name="l08459"></a><span class="lineno"> 8459</span>&#160; {</div>
<div class="line"><a name="l08460"></a><span class="lineno"> 8460</span>&#160; <span class="keywordflow">return</span> value_unsigned;</div>
<div class="line"><a name="l08461"></a><span class="lineno"> 8461</span>&#160; }</div>
<div class="line"><a name="l08462"></a><span class="lineno"> 8462</span>&#160; </div>
<div class="line"><a name="l08464"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#ac013af35a21e9387993b19da5b3e0ae2"> 8464</a></span>&#160; constexpr number_float_t <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#ac013af35a21e9387993b19da5b3e0ae2">get_number_float</a>() const noexcept</div>
<div class="line"><a name="l08465"></a><span class="lineno"> 8465</span>&#160; {</div>
<div class="line"><a name="l08466"></a><span class="lineno"> 8466</span>&#160; <span class="keywordflow">return</span> value_float;</div>
<div class="line"><a name="l08467"></a><span class="lineno"> 8467</span>&#160; }</div>
<div class="line"><a name="l08468"></a><span class="lineno"> 8468</span>&#160; </div>
<div class="line"><a name="l08470"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d"> 8470</a></span>&#160; string_t&amp; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">get_string</a>()</div>
<div class="line"><a name="l08471"></a><span class="lineno"> 8471</span>&#160; {</div>
<div class="line"><a name="l08472"></a><span class="lineno"> 8472</span>&#160; <span class="keywordflow">return</span> token_buffer;</div>
<div class="line"><a name="l08473"></a><span class="lineno"> 8473</span>&#160; }</div>
<div class="line"><a name="l08474"></a><span class="lineno"> 8474</span>&#160; </div>
<div class="line"><a name="l08476"></a><span class="lineno"> 8476</span>&#160; <span class="comment">// diagnostics</span></div>
<div class="line"><a name="l08478"></a><span class="lineno"> 8478</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l08480"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622"> 8480</a></span>&#160; constexpr <a class="code" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>() const noexcept</div>
<div class="line"><a name="l08481"></a><span class="lineno"> 8481</span>&#160; {</div>
<div class="line"><a name="l08482"></a><span class="lineno"> 8482</span>&#160; <span class="keywordflow">return</span> position;</div>
<div class="line"><a name="l08483"></a><span class="lineno"> 8483</span>&#160; }</div>
<div class="line"><a name="l08484"></a><span class="lineno"> 8484</span>&#160; </div>
<div class="line"><a name="l08488"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a"> 8488</a></span>&#160; std::string <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l08489"></a><span class="lineno"> 8489</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l08490"></a><span class="lineno"> 8490</span>&#160; <span class="comment">// escape control characters</span></div>
<div class="line"><a name="l08491"></a><span class="lineno"> 8491</span>&#160; std::string result;</div>
<div class="line"><a name="l08492"></a><span class="lineno"> 8492</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> c : token_string)</div>
<div class="line"><a name="l08493"></a><span class="lineno"> 8493</span>&#160; {</div>
<div class="line"><a name="l08494"></a><span class="lineno"> 8494</span>&#160; <span class="keywordflow">if</span> (<span class="stringliteral">&#39;\x00&#39;</span> &lt;= c and c &lt;= <span class="stringliteral">&#39;\x1F&#39;</span>)</div>
<div class="line"><a name="l08495"></a><span class="lineno"> 8495</span>&#160; {</div>
<div class="line"><a name="l08496"></a><span class="lineno"> 8496</span>&#160; <span class="comment">// escape control characters</span></div>
<div class="line"><a name="l08497"></a><span class="lineno"> 8497</span>&#160; std::array&lt;char, 9&gt; cs{{}};</div>
<div class="line"><a name="l08498"></a><span class="lineno"> 8498</span>&#160; (std::snprintf)(cs.data(), cs.size(), <span class="stringliteral">&quot;&lt;U+%.4X&gt;&quot;</span>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(c));</div>
<div class="line"><a name="l08499"></a><span class="lineno"> 8499</span>&#160; result += cs.data();</div>
<div class="line"><a name="l08500"></a><span class="lineno"> 8500</span>&#160; }</div>
<div class="line"><a name="l08501"></a><span class="lineno"> 8501</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l08502"></a><span class="lineno"> 8502</span>&#160; {</div>
<div class="line"><a name="l08503"></a><span class="lineno"> 8503</span>&#160; <span class="comment">// add character as is</span></div>
<div class="line"><a name="l08504"></a><span class="lineno"> 8504</span>&#160; result.push_back(c);</div>
<div class="line"><a name="l08505"></a><span class="lineno"> 8505</span>&#160; }</div>
<div class="line"><a name="l08506"></a><span class="lineno"> 8506</span>&#160; }</div>
<div class="line"><a name="l08507"></a><span class="lineno"> 8507</span>&#160; </div>
<div class="line"><a name="l08508"></a><span class="lineno"> 8508</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l08509"></a><span class="lineno"> 8509</span>&#160; }</div>
<div class="line"><a name="l08510"></a><span class="lineno"> 8510</span>&#160; </div>
<div class="line"><a name="l08512"></a><span class="lineno"> 8512</span>&#160; <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
<div class="line"><a name="l08513"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a14cf32c36b043db47510ae183d38ce5b"> 8513</a></span>&#160; constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a14cf32c36b043db47510ae183d38ce5b">get_error_message</a>() const noexcept</div>
<div class="line"><a name="l08514"></a><span class="lineno"> 8514</span>&#160; {</div>
<div class="line"><a name="l08515"></a><span class="lineno"> 8515</span>&#160; <span class="keywordflow">return</span> error_message;</div>
<div class="line"><a name="l08516"></a><span class="lineno"> 8516</span>&#160; }</div>
<div class="line"><a name="l08517"></a><span class="lineno"> 8517</span>&#160; </div>
<div class="line"><a name="l08519"></a><span class="lineno"> 8519</span>&#160; <span class="comment">// actual scanner</span></div>
<div class="line"><a name="l08521"></a><span class="lineno"> 8521</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l08526"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a709afd52def2e258dac0b8a67dc4ea26"> 8526</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a709afd52def2e258dac0b8a67dc4ea26">skip_bom</a>()</div>
<div class="line"><a name="l08527"></a><span class="lineno"> 8527</span>&#160; {</div>
<div class="line"><a name="l08528"></a><span class="lineno"> 8528</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() == 0xEF)</div>
<div class="line"><a name="l08529"></a><span class="lineno"> 8529</span>&#160; {</div>
<div class="line"><a name="l08530"></a><span class="lineno"> 8530</span>&#160; <span class="comment">// check if we completely parse the BOM</span></div>
<div class="line"><a name="l08531"></a><span class="lineno"> 8531</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() == 0xBB and <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() == 0xBF;</div>
<div class="line"><a name="l08532"></a><span class="lineno"> 8532</span>&#160; }</div>
<div class="line"><a name="l08533"></a><span class="lineno"> 8533</span>&#160; </div>
<div class="line"><a name="l08534"></a><span class="lineno"> 8534</span>&#160; <span class="comment">// the first character is not the beginning of the BOM; unget it to</span></div>
<div class="line"><a name="l08535"></a><span class="lineno"> 8535</span>&#160; <span class="comment">// process is later</span></div>
<div class="line"><a name="l08536"></a><span class="lineno"> 8536</span>&#160; unget();</div>
<div class="line"><a name="l08537"></a><span class="lineno"> 8537</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l08538"></a><span class="lineno"> 8538</span>&#160; }</div>
<div class="line"><a name="l08539"></a><span class="lineno"> 8539</span>&#160; </div>
<div class="line"><a name="l08540"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#aac3041cd2b9291e64fee38db422863c9"> 8540</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">token_type</a> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#aac3041cd2b9291e64fee38db422863c9">scan</a>()</div>
<div class="line"><a name="l08541"></a><span class="lineno"> 8541</span>&#160; {</div>
<div class="line"><a name="l08542"></a><span class="lineno"> 8542</span>&#160; <span class="comment">// initially, skip the BOM</span></div>
<div class="line"><a name="l08543"></a><span class="lineno"> 8543</span>&#160; <span class="keywordflow">if</span> (position.chars_read_total == 0 and not skip_bom())</div>
<div class="line"><a name="l08544"></a><span class="lineno"> 8544</span>&#160; {</div>
<div class="line"><a name="l08545"></a><span class="lineno"> 8545</span>&#160; error_message = <span class="stringliteral">&quot;invalid BOM; must be 0xEF 0xBB 0xBF if given&quot;</span>;</div>
<div class="line"><a name="l08546"></a><span class="lineno"> 8546</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l08547"></a><span class="lineno"> 8547</span>&#160; }</div>
<div class="line"><a name="l08548"></a><span class="lineno"> 8548</span>&#160; </div>
<div class="line"><a name="l08549"></a><span class="lineno"> 8549</span>&#160; <span class="comment">// read next character and ignore whitespace</span></div>
<div class="line"><a name="l08550"></a><span class="lineno"> 8550</span>&#160; <span class="keywordflow">do</span></div>
<div class="line"><a name="l08551"></a><span class="lineno"> 8551</span>&#160; {</div>
<div class="line"><a name="l08552"></a><span class="lineno"> 8552</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>();</div>
<div class="line"><a name="l08553"></a><span class="lineno"> 8553</span>&#160; }</div>
<div class="line"><a name="l08554"></a><span class="lineno"> 8554</span>&#160; <span class="keywordflow">while</span> (current == <span class="charliteral">&#39; &#39;</span> or current == <span class="charliteral">&#39;\t&#39;</span> or current == <span class="charliteral">&#39;\n&#39;</span> or current == <span class="charliteral">&#39;\r&#39;</span>);</div>
<div class="line"><a name="l08555"></a><span class="lineno"> 8555</span>&#160; </div>
<div class="line"><a name="l08556"></a><span class="lineno"> 8556</span>&#160; <span class="keywordflow">switch</span> (current)</div>
<div class="line"><a name="l08557"></a><span class="lineno"> 8557</span>&#160; {</div>
<div class="line"><a name="l08558"></a><span class="lineno"> 8558</span>&#160; <span class="comment">// structural characters</span></div>
<div class="line"><a name="l08559"></a><span class="lineno"> 8559</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;[&#39;</span>:</div>
<div class="line"><a name="l08560"></a><span class="lineno"> 8560</span>&#160; <span class="keywordflow">return</span> token_type::begin_array;</div>
<div class="line"><a name="l08561"></a><span class="lineno"> 8561</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;]&#39;</span>:</div>
<div class="line"><a name="l08562"></a><span class="lineno"> 8562</span>&#160; <span class="keywordflow">return</span> token_type::end_array;</div>
<div class="line"><a name="l08563"></a><span class="lineno"> 8563</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div>
<div class="line"><a name="l08564"></a><span class="lineno"> 8564</span>&#160; <span class="keywordflow">return</span> token_type::begin_object;</div>
<div class="line"><a name="l08565"></a><span class="lineno"> 8565</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div>
<div class="line"><a name="l08566"></a><span class="lineno"> 8566</span>&#160; <span class="keywordflow">return</span> token_type::end_object;</div>
<div class="line"><a name="l08567"></a><span class="lineno"> 8567</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;:&#39;</span>:</div>
<div class="line"><a name="l08568"></a><span class="lineno"> 8568</span>&#160; <span class="keywordflow">return</span> token_type::name_separator;</div>
<div class="line"><a name="l08569"></a><span class="lineno"> 8569</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;,&#39;</span>:</div>
<div class="line"><a name="l08570"></a><span class="lineno"> 8570</span>&#160; <span class="keywordflow">return</span> token_type::value_separator;</div>
<div class="line"><a name="l08571"></a><span class="lineno"> 8571</span>&#160; </div>
<div class="line"><a name="l08572"></a><span class="lineno"> 8572</span>&#160; <span class="comment">// literals</span></div>
<div class="line"><a name="l08573"></a><span class="lineno"> 8573</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;t&#39;</span>:</div>
<div class="line"><a name="l08574"></a><span class="lineno"> 8574</span>&#160; <span class="keywordflow">return</span> scan_literal(<span class="stringliteral">&quot;true&quot;</span>, 4, token_type::literal_true);</div>
<div class="line"><a name="l08575"></a><span class="lineno"> 8575</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;f&#39;</span>:</div>
<div class="line"><a name="l08576"></a><span class="lineno"> 8576</span>&#160; <span class="keywordflow">return</span> scan_literal(<span class="stringliteral">&quot;false&quot;</span>, 5, token_type::literal_false);</div>
<div class="line"><a name="l08577"></a><span class="lineno"> 8577</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;n&#39;</span>:</div>
<div class="line"><a name="l08578"></a><span class="lineno"> 8578</span>&#160; <span class="keywordflow">return</span> scan_literal(<span class="stringliteral">&quot;null&quot;</span>, 4, token_type::literal_null);</div>
<div class="line"><a name="l08579"></a><span class="lineno"> 8579</span>&#160; </div>
<div class="line"><a name="l08580"></a><span class="lineno"> 8580</span>&#160; <span class="comment">// string</span></div>
<div class="line"><a name="l08581"></a><span class="lineno"> 8581</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\&quot;&#39;</span>:</div>
<div class="line"><a name="l08582"></a><span class="lineno"> 8582</span>&#160; <span class="keywordflow">return</span> scan_string();</div>
<div class="line"><a name="l08583"></a><span class="lineno"> 8583</span>&#160; </div>
<div class="line"><a name="l08584"></a><span class="lineno"> 8584</span>&#160; <span class="comment">// number</span></div>
<div class="line"><a name="l08585"></a><span class="lineno"> 8585</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;-&#39;</span>:</div>
<div class="line"><a name="l08586"></a><span class="lineno"> 8586</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;0&#39;</span>:</div>
<div class="line"><a name="l08587"></a><span class="lineno"> 8587</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;1&#39;</span>:</div>
<div class="line"><a name="l08588"></a><span class="lineno"> 8588</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;2&#39;</span>:</div>
<div class="line"><a name="l08589"></a><span class="lineno"> 8589</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;3&#39;</span>:</div>
<div class="line"><a name="l08590"></a><span class="lineno"> 8590</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;4&#39;</span>:</div>
<div class="line"><a name="l08591"></a><span class="lineno"> 8591</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;5&#39;</span>:</div>
<div class="line"><a name="l08592"></a><span class="lineno"> 8592</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;6&#39;</span>:</div>
<div class="line"><a name="l08593"></a><span class="lineno"> 8593</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;7&#39;</span>:</div>
<div class="line"><a name="l08594"></a><span class="lineno"> 8594</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;8&#39;</span>:</div>
<div class="line"><a name="l08595"></a><span class="lineno"> 8595</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;9&#39;</span>:</div>
<div class="line"><a name="l08596"></a><span class="lineno"> 8596</span>&#160; <span class="keywordflow">return</span> scan_number();</div>
<div class="line"><a name="l08597"></a><span class="lineno"> 8597</span>&#160; </div>
<div class="line"><a name="l08598"></a><span class="lineno"> 8598</span>&#160; <span class="comment">// end of input (the null byte is needed when parsing from</span></div>
<div class="line"><a name="l08599"></a><span class="lineno"> 8599</span>&#160; <span class="comment">// string literals)</span></div>
<div class="line"><a name="l08600"></a><span class="lineno"> 8600</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\0&#39;</span>:</div>
<div class="line"><a name="l08601"></a><span class="lineno"> 8601</span>&#160; <span class="keywordflow">case</span> std::char_traits&lt;char&gt;::eof():</div>
<div class="line"><a name="l08602"></a><span class="lineno"> 8602</span>&#160; <span class="keywordflow">return</span> token_type::end_of_input;</div>
<div class="line"><a name="l08603"></a><span class="lineno"> 8603</span>&#160; </div>
<div class="line"><a name="l08604"></a><span class="lineno"> 8604</span>&#160; <span class="comment">// error</span></div>
<div class="line"><a name="l08605"></a><span class="lineno"> 8605</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l08606"></a><span class="lineno"> 8606</span>&#160; error_message = <span class="stringliteral">&quot;invalid literal&quot;</span>;</div>
<div class="line"><a name="l08607"></a><span class="lineno"> 8607</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div>
<div class="line"><a name="l08608"></a><span class="lineno"> 8608</span>&#160; }</div>
<div class="line"><a name="l08609"></a><span class="lineno"> 8609</span>&#160; }</div>
<div class="line"><a name="l08610"></a><span class="lineno"> 8610</span>&#160; </div>
<div class="line"><a name="l08611"></a><span class="lineno"> 8611</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l08613"></a><span class="lineno"> 8613</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">detail::input_adapter_t</a> ia = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l08614"></a><span class="lineno"> 8614</span>&#160; </div>
<div class="line"><a name="l08616"></a><span class="lineno"> 8616</span>&#160; std::char_traits&lt;char&gt;::int_type current = std::char_traits&lt;char&gt;::eof();</div>
<div class="line"><a name="l08617"></a><span class="lineno"> 8617</span>&#160; </div>
<div class="line"><a name="l08619"></a><span class="lineno"> 8619</span>&#160; <span class="keywordtype">bool</span> next_unget = <span class="keyword">false</span>;</div>
<div class="line"><a name="l08620"></a><span class="lineno"> 8620</span>&#160; </div>
<div class="line"><a name="l08622"></a><span class="lineno"> 8622</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a> position {};</div>
<div class="line"><a name="l08623"></a><span class="lineno"> 8623</span>&#160; </div>
<div class="line"><a name="l08625"></a><span class="lineno"> 8625</span>&#160; std::vector&lt;char&gt; token_string {};</div>
<div class="line"><a name="l08626"></a><span class="lineno"> 8626</span>&#160; </div>
<div class="line"><a name="l08628"></a><span class="lineno"> 8628</span>&#160; string_t token_buffer {};</div>
<div class="line"><a name="l08629"></a><span class="lineno"> 8629</span>&#160; </div>
<div class="line"><a name="l08631"></a><span class="lineno"> 8631</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* error_message = <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a name="l08632"></a><span class="lineno"> 8632</span>&#160; </div>
<div class="line"><a name="l08633"></a><span class="lineno"> 8633</span>&#160; <span class="comment">// number values</span></div>
<div class="line"><a name="l08634"></a><span class="lineno"> 8634</span>&#160; number_integer_t value_integer = 0;</div>
<div class="line"><a name="l08635"></a><span class="lineno"> 8635</span>&#160; number_unsigned_t value_unsigned = 0;</div>
<div class="line"><a name="l08636"></a><span class="lineno"> 8636</span>&#160; number_float_t value_float = 0;</div>
<div class="line"><a name="l08637"></a><span class="lineno"> 8637</span>&#160; </div>
<div class="line"><a name="l08639"></a><span class="lineno"> 8639</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> decimal_point_char = <span class="charliteral">&#39;.&#39;</span>;</div>
<div class="line"><a name="l08640"></a><span class="lineno"> 8640</span>&#160;};</div>
<div class="line"><a name="l08641"></a><span class="lineno"> 8641</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l08642"></a><span class="lineno"> 8642</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l08643"></a><span class="lineno"> 8643</span>&#160; </div>
<div class="line"><a name="l08644"></a><span class="lineno"> 8644</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/parser.hpp&gt;</span></div>
<div class="line"><a name="l08645"></a><span class="lineno"> 8645</span>&#160; </div>
<div class="line"><a name="l08646"></a><span class="lineno"> 8646</span>&#160; </div>
<div class="line"><a name="l08647"></a><span class="lineno"> 8647</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span> <span class="comment">// assert</span></div>
<div class="line"><a name="l08648"></a><span class="lineno"> 8648</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span> <span class="comment">// isfinite</span></div>
<div class="line"><a name="l08649"></a><span class="lineno"> 8649</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span> <span class="comment">// uint8_t</span></div>
<div class="line"><a name="l08650"></a><span class="lineno"> 8650</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span> <span class="comment">// function</span></div>
<div class="line"><a name="l08651"></a><span class="lineno"> 8651</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string</span></div>
<div class="line"><a name="l08652"></a><span class="lineno"> 8652</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// move</span></div>
<div class="line"><a name="l08653"></a><span class="lineno"> 8653</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span> <span class="comment">// vector</span></div>
<div class="line"><a name="l08654"></a><span class="lineno"> 8654</span>&#160; </div>
<div class="line"><a name="l08655"></a><span class="lineno"> 8655</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/exceptions.hpp&gt;</span></div>
<div class="line"><a name="l08656"></a><span class="lineno"> 8656</span>&#160; </div>
<div class="line"><a name="l08657"></a><span class="lineno"> 8657</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/input_adapters.hpp&gt;</span></div>
<div class="line"><a name="l08658"></a><span class="lineno"> 8658</span>&#160; </div>
<div class="line"><a name="l08659"></a><span class="lineno"> 8659</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/json_sax.hpp&gt;</span></div>
<div class="line"><a name="l08660"></a><span class="lineno"> 8660</span>&#160; </div>
<div class="line"><a name="l08661"></a><span class="lineno"> 8661</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/lexer.hpp&gt;</span></div>
<div class="line"><a name="l08662"></a><span class="lineno"> 8662</span>&#160; </div>
<div class="line"><a name="l08663"></a><span class="lineno"> 8663</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l08664"></a><span class="lineno"> 8664</span>&#160; </div>
<div class="line"><a name="l08665"></a><span class="lineno"> 8665</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/is_sax.hpp&gt;</span></div>
<div class="line"><a name="l08666"></a><span class="lineno"> 8666</span>&#160; </div>
<div class="line"><a name="l08667"></a><span class="lineno"> 8667</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/value_t.hpp&gt;</span></div>
<div class="line"><a name="l08668"></a><span class="lineno"> 8668</span>&#160; </div>
<div class="line"><a name="l08669"></a><span class="lineno"> 8669</span>&#160; </div>
<div class="line"><a name="l08670"></a><span class="lineno"> 8670</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l08671"></a><span class="lineno"> 8671</span>&#160;{</div>
<div class="line"><a name="l08672"></a><span class="lineno"> 8672</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l08673"></a><span class="lineno"> 8673</span>&#160;{</div>
<div class="line"><a name="l08675"></a><span class="lineno"> 8675</span>&#160;<span class="comment">// parser //</span></div>
<div class="line"><a name="l08677"></a><span class="lineno"> 8677</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l08683"></a><span class="lineno"> 8683</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l08684"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html"> 8684</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a></div>
<div class="line"><a name="l08685"></a><span class="lineno"> 8685</span>&#160;{</div>
<div class="line"><a name="l08686"></a><span class="lineno"> 8686</span>&#160; <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l08687"></a><span class="lineno"> 8687</span>&#160; <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l08688"></a><span class="lineno"> 8688</span>&#160; <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l08689"></a><span class="lineno"> 8689</span>&#160; <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l08690"></a><span class="lineno"> 8690</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer_t</a> = <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer&lt;BasicJsonType&gt;</a>;</div>
<div class="line"><a name="l08691"></a><span class="lineno"> 8691</span>&#160; <span class="keyword">using</span> token_type = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">lexer_t::token_type</a>;</div>
<div class="line"><a name="l08692"></a><span class="lineno"> 8692</span>&#160; </div>
<div class="line"><a name="l08693"></a><span class="lineno"> 8693</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l08694"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe"> 8694</a></span>&#160; <span class="keyword">enum class</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe">parse_event_t</a> : uint8_t</div>
<div class="line"><a name="l08695"></a><span class="lineno"> 8695</span>&#160; {</div>
<div class="line"><a name="l08697"></a><span class="lineno"> 8697</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeae73f17027cb0acbb537f29d0a6944b26">object_start</a>,</div>
<div class="line"><a name="l08699"></a><span class="lineno"> 8699</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeaf63e2a2468a37aa4f394fcc3bcb8249c">object_end</a>,</div>
<div class="line"><a name="l08701"></a><span class="lineno"> 8701</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeaa4388a3d92419edbb1c6efd4d52461f3">array_start</a>,</div>
<div class="line"><a name="l08703"></a><span class="lineno"> 8703</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea49642fb732aa2e112188fba1f9d3ef7f">array_end</a>,</div>
<div class="line"><a name="l08705"></a><span class="lineno"> 8705</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea3c6e0b8a9c15224a8228b9a98ca1531d">key</a>,</div>
<div class="line"><a name="l08707"></a><span class="lineno"> 8707</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea2063c1608d6e0baf80249c42e2be5804">value</a></div>
<div class="line"><a name="l08708"></a><span class="lineno"> 8708</span>&#160; };</div>
<div class="line"><a name="l08709"></a><span class="lineno"> 8709</span>&#160; </div>
<div class="line"><a name="l08710"></a><span class="lineno"> 8710</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1">parser_callback_t</a> =</div>
<div class="line"><a name="l08711"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1"> 8711</a></span>&#160; std::function&lt;bool(<span class="keywordtype">int</span> depth, <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe">parse_event_t</a> event, BasicJsonType&amp; parsed)&gt;;</div>
<div class="line"><a name="l08712"></a><span class="lineno"> 8712</span>&#160; </div>
<div class="line"><a name="l08714"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#a1a2bd258b7e99f86b7e6a3c41373ba55"> 8714</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a1a2bd258b7e99f86b7e6a3c41373ba55">parser</a>(<a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">detail::input_adapter_t</a>&amp;&amp; adapter,</div>
<div class="line"><a name="l08715"></a><span class="lineno"> 8715</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1">parser_callback_t</a> cb = <span class="keyword">nullptr</span>,</div>
<div class="line"><a name="l08716"></a><span class="lineno"> 8716</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions_ = <span class="keyword">true</span>)</div>
<div class="line"><a name="l08717"></a><span class="lineno"> 8717</span>&#160; : callback(cb), m_lexer(<a class="code" href="namespacestd.html">std</a>::move(adapter)), allow_exceptions(allow_exceptions_)</div>
<div class="line"><a name="l08718"></a><span class="lineno"> 8718</span>&#160; {</div>
<div class="line"><a name="l08719"></a><span class="lineno"> 8719</span>&#160; <span class="comment">// read first token</span></div>
<div class="line"><a name="l08720"></a><span class="lineno"> 8720</span>&#160; get_token();</div>
<div class="line"><a name="l08721"></a><span class="lineno"> 8721</span>&#160; }</div>
<div class="line"><a name="l08722"></a><span class="lineno"> 8722</span>&#160; </div>
<div class="line"><a name="l08733"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17"> 8733</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17">parse</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> strict, BasicJsonType&amp; result)</div>
<div class="line"><a name="l08734"></a><span class="lineno"> 8734</span>&#160; {</div>
<div class="line"><a name="l08735"></a><span class="lineno"> 8735</span>&#160; <span class="keywordflow">if</span> (callback)</div>
<div class="line"><a name="l08736"></a><span class="lineno"> 8736</span>&#160; {</div>
<div class="line"><a name="l08737"></a><span class="lineno"> 8737</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser&lt;BasicJsonType&gt;</a> sdp(result, callback, allow_exceptions);</div>
<div class="line"><a name="l08738"></a><span class="lineno"> 8738</span>&#160; sax_parse_internal(&amp;sdp);</div>
<div class="line"><a name="l08739"></a><span class="lineno"> 8739</span>&#160; result.assert_invariant();</div>
<div class="line"><a name="l08740"></a><span class="lineno"> 8740</span>&#160; </div>
<div class="line"><a name="l08741"></a><span class="lineno"> 8741</span>&#160; <span class="comment">// in strict mode, input must be completely read</span></div>
<div class="line"><a name="l08742"></a><span class="lineno"> 8742</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a> and (get_token() != token_type::end_of_input))</div>
<div class="line"><a name="l08743"></a><span class="lineno"> 8743</span>&#160; {</div>
<div class="line"><a name="l08744"></a><span class="lineno"> 8744</span>&#160; sdp.<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6e64f0b59c9150cde974e182d5ecab">parse_error</a>(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08745"></a><span class="lineno"> 8745</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l08746"></a><span class="lineno"> 8746</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08747"></a><span class="lineno"> 8747</span>&#160; exception_message(token_type::end_of_input, <span class="stringliteral">&quot;value&quot;</span>)));</div>
<div class="line"><a name="l08748"></a><span class="lineno"> 8748</span>&#160; }</div>
<div class="line"><a name="l08749"></a><span class="lineno"> 8749</span>&#160; </div>
<div class="line"><a name="l08750"></a><span class="lineno"> 8750</span>&#160; <span class="comment">// in case of an error, return discarded value</span></div>
<div class="line"><a name="l08751"></a><span class="lineno"> 8751</span>&#160; <span class="keywordflow">if</span> (sdp.<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a167fd9bf385d3d08bcbbba8a927c0eff">is_errored</a>())</div>
<div class="line"><a name="l08752"></a><span class="lineno"> 8752</span>&#160; {</div>
<div class="line"><a name="l08753"></a><span class="lineno"> 8753</span>&#160; result = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>;</div>
<div class="line"><a name="l08754"></a><span class="lineno"> 8754</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l08755"></a><span class="lineno"> 8755</span>&#160; }</div>
<div class="line"><a name="l08756"></a><span class="lineno"> 8756</span>&#160; </div>
<div class="line"><a name="l08757"></a><span class="lineno"> 8757</span>&#160; <span class="comment">// set top-level value to null if it was discarded by the callback</span></div>
<div class="line"><a name="l08758"></a><span class="lineno"> 8758</span>&#160; <span class="comment">// function</span></div>
<div class="line"><a name="l08759"></a><span class="lineno"> 8759</span>&#160; <span class="keywordflow">if</span> (result.is_discarded())</div>
<div class="line"><a name="l08760"></a><span class="lineno"> 8760</span>&#160; {</div>
<div class="line"><a name="l08761"></a><span class="lineno"> 8761</span>&#160; result = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l08762"></a><span class="lineno"> 8762</span>&#160; }</div>
<div class="line"><a name="l08763"></a><span class="lineno"> 8763</span>&#160; }</div>
<div class="line"><a name="l08764"></a><span class="lineno"> 8764</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l08765"></a><span class="lineno"> 8765</span>&#160; {</div>
<div class="line"><a name="l08766"></a><span class="lineno"> 8766</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser&lt;BasicJsonType&gt;</a> sdp(result, allow_exceptions);</div>
<div class="line"><a name="l08767"></a><span class="lineno"> 8767</span>&#160; sax_parse_internal(&amp;sdp);</div>
<div class="line"><a name="l08768"></a><span class="lineno"> 8768</span>&#160; result.assert_invariant();</div>
<div class="line"><a name="l08769"></a><span class="lineno"> 8769</span>&#160; </div>
<div class="line"><a name="l08770"></a><span class="lineno"> 8770</span>&#160; <span class="comment">// in strict mode, input must be completely read</span></div>
<div class="line"><a name="l08771"></a><span class="lineno"> 8771</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a> and (get_token() != token_type::end_of_input))</div>
<div class="line"><a name="l08772"></a><span class="lineno"> 8772</span>&#160; {</div>
<div class="line"><a name="l08773"></a><span class="lineno"> 8773</span>&#160; sdp.<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a7d3bf1f361ebb817c694ba45b3814fa6">parse_error</a>(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08774"></a><span class="lineno"> 8774</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l08775"></a><span class="lineno"> 8775</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08776"></a><span class="lineno"> 8776</span>&#160; exception_message(token_type::end_of_input, <span class="stringliteral">&quot;value&quot;</span>)));</div>
<div class="line"><a name="l08777"></a><span class="lineno"> 8777</span>&#160; }</div>
<div class="line"><a name="l08778"></a><span class="lineno"> 8778</span>&#160; </div>
<div class="line"><a name="l08779"></a><span class="lineno"> 8779</span>&#160; <span class="comment">// in case of an error, return discarded value</span></div>
<div class="line"><a name="l08780"></a><span class="lineno"> 8780</span>&#160; <span class="keywordflow">if</span> (sdp.<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad1b9f3681fadbbb2e0127f5c8a99c662">is_errored</a>())</div>
<div class="line"><a name="l08781"></a><span class="lineno"> 8781</span>&#160; {</div>
<div class="line"><a name="l08782"></a><span class="lineno"> 8782</span>&#160; result = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>;</div>
<div class="line"><a name="l08783"></a><span class="lineno"> 8783</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l08784"></a><span class="lineno"> 8784</span>&#160; }</div>
<div class="line"><a name="l08785"></a><span class="lineno"> 8785</span>&#160; }</div>
<div class="line"><a name="l08786"></a><span class="lineno"> 8786</span>&#160; }</div>
<div class="line"><a name="l08787"></a><span class="lineno"> 8787</span>&#160; </div>
<div class="line"><a name="l08794"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#a20997b42262856935b60fc91bf05bf3f"> 8794</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a20997b42262856935b60fc91bf05bf3f">accept</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>)</div>
<div class="line"><a name="l08795"></a><span class="lineno"> 8795</span>&#160; {</div>
<div class="line"><a name="l08796"></a><span class="lineno"> 8796</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html">json_sax_acceptor&lt;BasicJsonType&gt;</a> sax_acceptor;</div>
<div class="line"><a name="l08797"></a><span class="lineno"> 8797</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25">sax_parse</a>(&amp;sax_acceptor, <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a>);</div>
<div class="line"><a name="l08798"></a><span class="lineno"> 8798</span>&#160; }</div>
<div class="line"><a name="l08799"></a><span class="lineno"> 8799</span>&#160; </div>
<div class="line"><a name="l08800"></a><span class="lineno"> 8800</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SAX&gt;</div>
<div class="line"><a name="l08801"></a><span class="lineno"> 8801</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l08802"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25"> 8802</a></span>&#160; bool <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25">sax_parse</a>(SAX* sax, const <span class="keywordtype">bool</span> strict = true)</div>
<div class="line"><a name="l08803"></a><span class="lineno"> 8803</span>&#160; {</div>
<div class="line"><a name="l08804"></a><span class="lineno"> 8804</span>&#160; (<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>)<a class="code" href="structnlohmann_1_1detail_1_1is__sax__static__asserts.html">detail::is_sax_static_asserts&lt;SAX, BasicJsonType&gt;</a> {};</div>
<div class="line"><a name="l08805"></a><span class="lineno"> 8805</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> result = sax_parse_internal(sax);</div>
<div class="line"><a name="l08806"></a><span class="lineno"> 8806</span>&#160; </div>
<div class="line"><a name="l08807"></a><span class="lineno"> 8807</span>&#160; <span class="comment">// strict mode: next byte must be EOF</span></div>
<div class="line"><a name="l08808"></a><span class="lineno"> 8808</span>&#160; <span class="keywordflow">if</span> (result and <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a> and (get_token() != token_type::end_of_input))</div>
<div class="line"><a name="l08809"></a><span class="lineno"> 8809</span>&#160; {</div>
<div class="line"><a name="l08810"></a><span class="lineno"> 8810</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08811"></a><span class="lineno"> 8811</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l08812"></a><span class="lineno"> 8812</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08813"></a><span class="lineno"> 8813</span>&#160; exception_message(token_type::end_of_input, <span class="stringliteral">&quot;value&quot;</span>)));</div>
<div class="line"><a name="l08814"></a><span class="lineno"> 8814</span>&#160; }</div>
<div class="line"><a name="l08815"></a><span class="lineno"> 8815</span>&#160; </div>
<div class="line"><a name="l08816"></a><span class="lineno"> 8816</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l08817"></a><span class="lineno"> 8817</span>&#160; }</div>
<div class="line"><a name="l08818"></a><span class="lineno"> 8818</span>&#160; </div>
<div class="line"><a name="l08819"></a><span class="lineno"> 8819</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l08820"></a><span class="lineno"> 8820</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SAX&gt;</div>
<div class="line"><a name="l08821"></a><span class="lineno"> 8821</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l08822"></a><span class="lineno"> 8822</span>&#160; bool sax_parse_internal(SAX* sax)</div>
<div class="line"><a name="l08823"></a><span class="lineno"> 8823</span>&#160; {</div>
<div class="line"><a name="l08824"></a><span class="lineno"> 8824</span>&#160; <span class="comment">// stack to remember the hierarchy of structured values we are parsing</span></div>
<div class="line"><a name="l08825"></a><span class="lineno"> 8825</span>&#160; <span class="comment">// true = array; false = object</span></div>
<div class="line"><a name="l08826"></a><span class="lineno"> 8826</span>&#160; std::vector&lt;bool&gt; states;</div>
<div class="line"><a name="l08827"></a><span class="lineno"> 8827</span>&#160; <span class="comment">// value to avoid a goto (see comment where set to true)</span></div>
<div class="line"><a name="l08828"></a><span class="lineno"> 8828</span>&#160; <span class="keywordtype">bool</span> skip_to_state_evaluation = <span class="keyword">false</span>;</div>
<div class="line"><a name="l08829"></a><span class="lineno"> 8829</span>&#160; </div>
<div class="line"><a name="l08830"></a><span class="lineno"> 8830</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
<div class="line"><a name="l08831"></a><span class="lineno"> 8831</span>&#160; {</div>
<div class="line"><a name="l08832"></a><span class="lineno"> 8832</span>&#160; <span class="keywordflow">if</span> (not skip_to_state_evaluation)</div>
<div class="line"><a name="l08833"></a><span class="lineno"> 8833</span>&#160; {</div>
<div class="line"><a name="l08834"></a><span class="lineno"> 8834</span>&#160; <span class="comment">// invariant: get_token() was called before each iteration</span></div>
<div class="line"><a name="l08835"></a><span class="lineno"> 8835</span>&#160; <span class="keywordflow">switch</span> (last_token)</div>
<div class="line"><a name="l08836"></a><span class="lineno"> 8836</span>&#160; {</div>
<div class="line"><a name="l08837"></a><span class="lineno"> 8837</span>&#160; <span class="keywordflow">case</span> token_type::begin_object:</div>
<div class="line"><a name="l08838"></a><span class="lineno"> 8838</span>&#160; {</div>
<div class="line"><a name="l08839"></a><span class="lineno"> 8839</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_object(std::size_t(-1))))</div>
<div class="line"><a name="l08840"></a><span class="lineno"> 8840</span>&#160; {</div>
<div class="line"><a name="l08841"></a><span class="lineno"> 8841</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08842"></a><span class="lineno"> 8842</span>&#160; }</div>
<div class="line"><a name="l08843"></a><span class="lineno"> 8843</span>&#160; </div>
<div class="line"><a name="l08844"></a><span class="lineno"> 8844</span>&#160; <span class="comment">// closing } -&gt; we are done</span></div>
<div class="line"><a name="l08845"></a><span class="lineno"> 8845</span>&#160; <span class="keywordflow">if</span> (get_token() == token_type::end_object)</div>
<div class="line"><a name="l08846"></a><span class="lineno"> 8846</span>&#160; {</div>
<div class="line"><a name="l08847"></a><span class="lineno"> 8847</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;end_object()))</div>
<div class="line"><a name="l08848"></a><span class="lineno"> 8848</span>&#160; {</div>
<div class="line"><a name="l08849"></a><span class="lineno"> 8849</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08850"></a><span class="lineno"> 8850</span>&#160; }</div>
<div class="line"><a name="l08851"></a><span class="lineno"> 8851</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l08852"></a><span class="lineno"> 8852</span>&#160; }</div>
<div class="line"><a name="l08853"></a><span class="lineno"> 8853</span>&#160; </div>
<div class="line"><a name="l08854"></a><span class="lineno"> 8854</span>&#160; <span class="comment">// parse key</span></div>
<div class="line"><a name="l08855"></a><span class="lineno"> 8855</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(last_token != token_type::value_string))</div>
<div class="line"><a name="l08856"></a><span class="lineno"> 8856</span>&#160; {</div>
<div class="line"><a name="l08857"></a><span class="lineno"> 8857</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08858"></a><span class="lineno"> 8858</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l08859"></a><span class="lineno"> 8859</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08860"></a><span class="lineno"> 8860</span>&#160; exception_message(token_type::value_string, <span class="stringliteral">&quot;object key&quot;</span>)));</div>
<div class="line"><a name="l08861"></a><span class="lineno"> 8861</span>&#160; }</div>
<div class="line"><a name="l08862"></a><span class="lineno"> 8862</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;key(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">get_string</a>())))</div>
<div class="line"><a name="l08863"></a><span class="lineno"> 8863</span>&#160; {</div>
<div class="line"><a name="l08864"></a><span class="lineno"> 8864</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08865"></a><span class="lineno"> 8865</span>&#160; }</div>
<div class="line"><a name="l08866"></a><span class="lineno"> 8866</span>&#160; </div>
<div class="line"><a name="l08867"></a><span class="lineno"> 8867</span>&#160; <span class="comment">// parse separator (:)</span></div>
<div class="line"><a name="l08868"></a><span class="lineno"> 8868</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(get_token() != token_type::name_separator))</div>
<div class="line"><a name="l08869"></a><span class="lineno"> 8869</span>&#160; {</div>
<div class="line"><a name="l08870"></a><span class="lineno"> 8870</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08871"></a><span class="lineno"> 8871</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l08872"></a><span class="lineno"> 8872</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08873"></a><span class="lineno"> 8873</span>&#160; exception_message(token_type::name_separator, <span class="stringliteral">&quot;object separator&quot;</span>)));</div>
<div class="line"><a name="l08874"></a><span class="lineno"> 8874</span>&#160; }</div>
<div class="line"><a name="l08875"></a><span class="lineno"> 8875</span>&#160; </div>
<div class="line"><a name="l08876"></a><span class="lineno"> 8876</span>&#160; <span class="comment">// remember we are now inside an object</span></div>
<div class="line"><a name="l08877"></a><span class="lineno"> 8877</span>&#160; states.push_back(<span class="keyword">false</span>);</div>
<div class="line"><a name="l08878"></a><span class="lineno"> 8878</span>&#160; </div>
<div class="line"><a name="l08879"></a><span class="lineno"> 8879</span>&#160; <span class="comment">// parse values</span></div>
<div class="line"><a name="l08880"></a><span class="lineno"> 8880</span>&#160; get_token();</div>
<div class="line"><a name="l08881"></a><span class="lineno"> 8881</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l08882"></a><span class="lineno"> 8882</span>&#160; }</div>
<div class="line"><a name="l08883"></a><span class="lineno"> 8883</span>&#160; </div>
<div class="line"><a name="l08884"></a><span class="lineno"> 8884</span>&#160; <span class="keywordflow">case</span> token_type::begin_array:</div>
<div class="line"><a name="l08885"></a><span class="lineno"> 8885</span>&#160; {</div>
<div class="line"><a name="l08886"></a><span class="lineno"> 8886</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;start_array(std::size_t(-1))))</div>
<div class="line"><a name="l08887"></a><span class="lineno"> 8887</span>&#160; {</div>
<div class="line"><a name="l08888"></a><span class="lineno"> 8888</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08889"></a><span class="lineno"> 8889</span>&#160; }</div>
<div class="line"><a name="l08890"></a><span class="lineno"> 8890</span>&#160; </div>
<div class="line"><a name="l08891"></a><span class="lineno"> 8891</span>&#160; <span class="comment">// closing ] -&gt; we are done</span></div>
<div class="line"><a name="l08892"></a><span class="lineno"> 8892</span>&#160; <span class="keywordflow">if</span> (get_token() == token_type::end_array)</div>
<div class="line"><a name="l08893"></a><span class="lineno"> 8893</span>&#160; {</div>
<div class="line"><a name="l08894"></a><span class="lineno"> 8894</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;end_array()))</div>
<div class="line"><a name="l08895"></a><span class="lineno"> 8895</span>&#160; {</div>
<div class="line"><a name="l08896"></a><span class="lineno"> 8896</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08897"></a><span class="lineno"> 8897</span>&#160; }</div>
<div class="line"><a name="l08898"></a><span class="lineno"> 8898</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l08899"></a><span class="lineno"> 8899</span>&#160; }</div>
<div class="line"><a name="l08900"></a><span class="lineno"> 8900</span>&#160; </div>
<div class="line"><a name="l08901"></a><span class="lineno"> 8901</span>&#160; <span class="comment">// remember we are now inside an array</span></div>
<div class="line"><a name="l08902"></a><span class="lineno"> 8902</span>&#160; states.push_back(<span class="keyword">true</span>);</div>
<div class="line"><a name="l08903"></a><span class="lineno"> 8903</span>&#160; </div>
<div class="line"><a name="l08904"></a><span class="lineno"> 8904</span>&#160; <span class="comment">// parse values (no need to call get_token)</span></div>
<div class="line"><a name="l08905"></a><span class="lineno"> 8905</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l08906"></a><span class="lineno"> 8906</span>&#160; }</div>
<div class="line"><a name="l08907"></a><span class="lineno"> 8907</span>&#160; </div>
<div class="line"><a name="l08908"></a><span class="lineno"> 8908</span>&#160; <span class="keywordflow">case</span> token_type::value_float:</div>
<div class="line"><a name="l08909"></a><span class="lineno"> 8909</span>&#160; {</div>
<div class="line"><a name="l08910"></a><span class="lineno"> 8910</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> res = m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#ac013af35a21e9387993b19da5b3e0ae2">get_number_float</a>();</div>
<div class="line"><a name="l08911"></a><span class="lineno"> 8911</span>&#160; </div>
<div class="line"><a name="l08912"></a><span class="lineno"> 8912</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not std::isfinite(res)))</div>
<div class="line"><a name="l08913"></a><span class="lineno"> 8913</span>&#160; {</div>
<div class="line"><a name="l08914"></a><span class="lineno"> 8914</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08915"></a><span class="lineno"> 8915</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l08916"></a><span class="lineno"> 8916</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(406, <span class="stringliteral">&quot;number overflow parsing &#39;&quot;</span> + m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>() + <span class="stringliteral">&quot;&#39;&quot;</span>));</div>
<div class="line"><a name="l08917"></a><span class="lineno"> 8917</span>&#160; }</div>
<div class="line"><a name="l08918"></a><span class="lineno"> 8918</span>&#160; </div>
<div class="line"><a name="l08919"></a><span class="lineno"> 8919</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;number_float(res, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">get_string</a>())))</div>
<div class="line"><a name="l08920"></a><span class="lineno"> 8920</span>&#160; {</div>
<div class="line"><a name="l08921"></a><span class="lineno"> 8921</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08922"></a><span class="lineno"> 8922</span>&#160; }</div>
<div class="line"><a name="l08923"></a><span class="lineno"> 8923</span>&#160; </div>
<div class="line"><a name="l08924"></a><span class="lineno"> 8924</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l08925"></a><span class="lineno"> 8925</span>&#160; }</div>
<div class="line"><a name="l08926"></a><span class="lineno"> 8926</span>&#160; </div>
<div class="line"><a name="l08927"></a><span class="lineno"> 8927</span>&#160; <span class="keywordflow">case</span> token_type::literal_false:</div>
<div class="line"><a name="l08928"></a><span class="lineno"> 8928</span>&#160; {</div>
<div class="line"><a name="l08929"></a><span class="lineno"> 8929</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;boolean(<span class="keyword">false</span>)))</div>
<div class="line"><a name="l08930"></a><span class="lineno"> 8930</span>&#160; {</div>
<div class="line"><a name="l08931"></a><span class="lineno"> 8931</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08932"></a><span class="lineno"> 8932</span>&#160; }</div>
<div class="line"><a name="l08933"></a><span class="lineno"> 8933</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l08934"></a><span class="lineno"> 8934</span>&#160; }</div>
<div class="line"><a name="l08935"></a><span class="lineno"> 8935</span>&#160; </div>
<div class="line"><a name="l08936"></a><span class="lineno"> 8936</span>&#160; <span class="keywordflow">case</span> token_type::literal_null:</div>
<div class="line"><a name="l08937"></a><span class="lineno"> 8937</span>&#160; {</div>
<div class="line"><a name="l08938"></a><span class="lineno"> 8938</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;null()))</div>
<div class="line"><a name="l08939"></a><span class="lineno"> 8939</span>&#160; {</div>
<div class="line"><a name="l08940"></a><span class="lineno"> 8940</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08941"></a><span class="lineno"> 8941</span>&#160; }</div>
<div class="line"><a name="l08942"></a><span class="lineno"> 8942</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l08943"></a><span class="lineno"> 8943</span>&#160; }</div>
<div class="line"><a name="l08944"></a><span class="lineno"> 8944</span>&#160; </div>
<div class="line"><a name="l08945"></a><span class="lineno"> 8945</span>&#160; <span class="keywordflow">case</span> token_type::literal_true:</div>
<div class="line"><a name="l08946"></a><span class="lineno"> 8946</span>&#160; {</div>
<div class="line"><a name="l08947"></a><span class="lineno"> 8947</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;boolean(<span class="keyword">true</span>)))</div>
<div class="line"><a name="l08948"></a><span class="lineno"> 8948</span>&#160; {</div>
<div class="line"><a name="l08949"></a><span class="lineno"> 8949</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08950"></a><span class="lineno"> 8950</span>&#160; }</div>
<div class="line"><a name="l08951"></a><span class="lineno"> 8951</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l08952"></a><span class="lineno"> 8952</span>&#160; }</div>
<div class="line"><a name="l08953"></a><span class="lineno"> 8953</span>&#160; </div>
<div class="line"><a name="l08954"></a><span class="lineno"> 8954</span>&#160; <span class="keywordflow">case</span> token_type::value_integer:</div>
<div class="line"><a name="l08955"></a><span class="lineno"> 8955</span>&#160; {</div>
<div class="line"><a name="l08956"></a><span class="lineno"> 8956</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;number_integer(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#afa338d17c0a7e834c73104258a2c8ced">get_number_integer</a>())))</div>
<div class="line"><a name="l08957"></a><span class="lineno"> 8957</span>&#160; {</div>
<div class="line"><a name="l08958"></a><span class="lineno"> 8958</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08959"></a><span class="lineno"> 8959</span>&#160; }</div>
<div class="line"><a name="l08960"></a><span class="lineno"> 8960</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l08961"></a><span class="lineno"> 8961</span>&#160; }</div>
<div class="line"><a name="l08962"></a><span class="lineno"> 8962</span>&#160; </div>
<div class="line"><a name="l08963"></a><span class="lineno"> 8963</span>&#160; <span class="keywordflow">case</span> token_type::value_string:</div>
<div class="line"><a name="l08964"></a><span class="lineno"> 8964</span>&#160; {</div>
<div class="line"><a name="l08965"></a><span class="lineno"> 8965</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;string(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">get_string</a>())))</div>
<div class="line"><a name="l08966"></a><span class="lineno"> 8966</span>&#160; {</div>
<div class="line"><a name="l08967"></a><span class="lineno"> 8967</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08968"></a><span class="lineno"> 8968</span>&#160; }</div>
<div class="line"><a name="l08969"></a><span class="lineno"> 8969</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l08970"></a><span class="lineno"> 8970</span>&#160; }</div>
<div class="line"><a name="l08971"></a><span class="lineno"> 8971</span>&#160; </div>
<div class="line"><a name="l08972"></a><span class="lineno"> 8972</span>&#160; <span class="keywordflow">case</span> token_type::value_unsigned:</div>
<div class="line"><a name="l08973"></a><span class="lineno"> 8973</span>&#160; {</div>
<div class="line"><a name="l08974"></a><span class="lineno"> 8974</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;number_unsigned(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a56640fb92293e0c17742ca3c814d74d6">get_number_unsigned</a>())))</div>
<div class="line"><a name="l08975"></a><span class="lineno"> 8975</span>&#160; {</div>
<div class="line"><a name="l08976"></a><span class="lineno"> 8976</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l08977"></a><span class="lineno"> 8977</span>&#160; }</div>
<div class="line"><a name="l08978"></a><span class="lineno"> 8978</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l08979"></a><span class="lineno"> 8979</span>&#160; }</div>
<div class="line"><a name="l08980"></a><span class="lineno"> 8980</span>&#160; </div>
<div class="line"><a name="l08981"></a><span class="lineno"> 8981</span>&#160; <span class="keywordflow">case</span> token_type::parse_error:</div>
<div class="line"><a name="l08982"></a><span class="lineno"> 8982</span>&#160; {</div>
<div class="line"><a name="l08983"></a><span class="lineno"> 8983</span>&#160; <span class="comment">// using &quot;uninitialized&quot; to avoid &quot;expected&quot; message</span></div>
<div class="line"><a name="l08984"></a><span class="lineno"> 8984</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08985"></a><span class="lineno"> 8985</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l08986"></a><span class="lineno"> 8986</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08987"></a><span class="lineno"> 8987</span>&#160; exception_message(token_type::uninitialized, <span class="stringliteral">&quot;value&quot;</span>)));</div>
<div class="line"><a name="l08988"></a><span class="lineno"> 8988</span>&#160; }</div>
<div class="line"><a name="l08989"></a><span class="lineno"> 8989</span>&#160; </div>
<div class="line"><a name="l08990"></a><span class="lineno"> 8990</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// the last token was unexpected</span></div>
<div class="line"><a name="l08991"></a><span class="lineno"> 8991</span>&#160; {</div>
<div class="line"><a name="l08992"></a><span class="lineno"> 8992</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08993"></a><span class="lineno"> 8993</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l08994"></a><span class="lineno"> 8994</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l08995"></a><span class="lineno"> 8995</span>&#160; exception_message(token_type::literal_or_value, <span class="stringliteral">&quot;value&quot;</span>)));</div>
<div class="line"><a name="l08996"></a><span class="lineno"> 8996</span>&#160; }</div>
<div class="line"><a name="l08997"></a><span class="lineno"> 8997</span>&#160; }</div>
<div class="line"><a name="l08998"></a><span class="lineno"> 8998</span>&#160; }</div>
<div class="line"><a name="l08999"></a><span class="lineno"> 8999</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l09000"></a><span class="lineno"> 9000</span>&#160; {</div>
<div class="line"><a name="l09001"></a><span class="lineno"> 9001</span>&#160; skip_to_state_evaluation = <span class="keyword">false</span>;</div>
<div class="line"><a name="l09002"></a><span class="lineno"> 9002</span>&#160; }</div>
<div class="line"><a name="l09003"></a><span class="lineno"> 9003</span>&#160; </div>
<div class="line"><a name="l09004"></a><span class="lineno"> 9004</span>&#160; <span class="comment">// we reached this line after we successfully parsed a value</span></div>
<div class="line"><a name="l09005"></a><span class="lineno"> 9005</span>&#160; <span class="keywordflow">if</span> (states.empty())</div>
<div class="line"><a name="l09006"></a><span class="lineno"> 9006</span>&#160; {</div>
<div class="line"><a name="l09007"></a><span class="lineno"> 9007</span>&#160; <span class="comment">// empty stack: we reached the end of the hierarchy: done</span></div>
<div class="line"><a name="l09008"></a><span class="lineno"> 9008</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l09009"></a><span class="lineno"> 9009</span>&#160; }</div>
<div class="line"><a name="l09010"></a><span class="lineno"> 9010</span>&#160; </div>
<div class="line"><a name="l09011"></a><span class="lineno"> 9011</span>&#160; <span class="keywordflow">if</span> (states.back()) <span class="comment">// array</span></div>
<div class="line"><a name="l09012"></a><span class="lineno"> 9012</span>&#160; {</div>
<div class="line"><a name="l09013"></a><span class="lineno"> 9013</span>&#160; <span class="comment">// comma -&gt; next value</span></div>
<div class="line"><a name="l09014"></a><span class="lineno"> 9014</span>&#160; <span class="keywordflow">if</span> (get_token() == token_type::value_separator)</div>
<div class="line"><a name="l09015"></a><span class="lineno"> 9015</span>&#160; {</div>
<div class="line"><a name="l09016"></a><span class="lineno"> 9016</span>&#160; <span class="comment">// parse a new value</span></div>
<div class="line"><a name="l09017"></a><span class="lineno"> 9017</span>&#160; get_token();</div>
<div class="line"><a name="l09018"></a><span class="lineno"> 9018</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l09019"></a><span class="lineno"> 9019</span>&#160; }</div>
<div class="line"><a name="l09020"></a><span class="lineno"> 9020</span>&#160; </div>
<div class="line"><a name="l09021"></a><span class="lineno"> 9021</span>&#160; <span class="comment">// closing ]</span></div>
<div class="line"><a name="l09022"></a><span class="lineno"> 9022</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(last_token == token_type::end_array))</div>
<div class="line"><a name="l09023"></a><span class="lineno"> 9023</span>&#160; {</div>
<div class="line"><a name="l09024"></a><span class="lineno"> 9024</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;end_array()))</div>
<div class="line"><a name="l09025"></a><span class="lineno"> 9025</span>&#160; {</div>
<div class="line"><a name="l09026"></a><span class="lineno"> 9026</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l09027"></a><span class="lineno"> 9027</span>&#160; }</div>
<div class="line"><a name="l09028"></a><span class="lineno"> 9028</span>&#160; </div>
<div class="line"><a name="l09029"></a><span class="lineno"> 9029</span>&#160; <span class="comment">// We are done with this array. Before we can parse a</span></div>
<div class="line"><a name="l09030"></a><span class="lineno"> 9030</span>&#160; <span class="comment">// new value, we need to evaluate the new state first.</span></div>
<div class="line"><a name="l09031"></a><span class="lineno"> 9031</span>&#160; <span class="comment">// By setting skip_to_state_evaluation to false, we</span></div>
<div class="line"><a name="l09032"></a><span class="lineno"> 9032</span>&#160; <span class="comment">// are effectively jumping to the beginning of this if.</span></div>
<div class="line"><a name="l09033"></a><span class="lineno"> 9033</span>&#160; assert(not states.empty());</div>
<div class="line"><a name="l09034"></a><span class="lineno"> 9034</span>&#160; states.pop_back();</div>
<div class="line"><a name="l09035"></a><span class="lineno"> 9035</span>&#160; skip_to_state_evaluation = <span class="keyword">true</span>;</div>
<div class="line"><a name="l09036"></a><span class="lineno"> 9036</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l09037"></a><span class="lineno"> 9037</span>&#160; }</div>
<div class="line"><a name="l09038"></a><span class="lineno"> 9038</span>&#160; </div>
<div class="line"><a name="l09039"></a><span class="lineno"> 9039</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l09040"></a><span class="lineno"> 9040</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l09041"></a><span class="lineno"> 9041</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l09042"></a><span class="lineno"> 9042</span>&#160; exception_message(token_type::end_array, <span class="stringliteral">&quot;array&quot;</span>)));</div>
<div class="line"><a name="l09043"></a><span class="lineno"> 9043</span>&#160; }</div>
<div class="line"><a name="l09044"></a><span class="lineno"> 9044</span>&#160; <span class="keywordflow">else</span> <span class="comment">// object</span></div>
<div class="line"><a name="l09045"></a><span class="lineno"> 9045</span>&#160; {</div>
<div class="line"><a name="l09046"></a><span class="lineno"> 9046</span>&#160; <span class="comment">// comma -&gt; next value</span></div>
<div class="line"><a name="l09047"></a><span class="lineno"> 9047</span>&#160; <span class="keywordflow">if</span> (get_token() == token_type::value_separator)</div>
<div class="line"><a name="l09048"></a><span class="lineno"> 9048</span>&#160; {</div>
<div class="line"><a name="l09049"></a><span class="lineno"> 9049</span>&#160; <span class="comment">// parse key</span></div>
<div class="line"><a name="l09050"></a><span class="lineno"> 9050</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(get_token() != token_type::value_string))</div>
<div class="line"><a name="l09051"></a><span class="lineno"> 9051</span>&#160; {</div>
<div class="line"><a name="l09052"></a><span class="lineno"> 9052</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l09053"></a><span class="lineno"> 9053</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l09054"></a><span class="lineno"> 9054</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l09055"></a><span class="lineno"> 9055</span>&#160; exception_message(token_type::value_string, <span class="stringliteral">&quot;object key&quot;</span>)));</div>
<div class="line"><a name="l09056"></a><span class="lineno"> 9056</span>&#160; }</div>
<div class="line"><a name="l09057"></a><span class="lineno"> 9057</span>&#160; </div>
<div class="line"><a name="l09058"></a><span class="lineno"> 9058</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;key(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">get_string</a>())))</div>
<div class="line"><a name="l09059"></a><span class="lineno"> 9059</span>&#160; {</div>
<div class="line"><a name="l09060"></a><span class="lineno"> 9060</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l09061"></a><span class="lineno"> 9061</span>&#160; }</div>
<div class="line"><a name="l09062"></a><span class="lineno"> 9062</span>&#160; </div>
<div class="line"><a name="l09063"></a><span class="lineno"> 9063</span>&#160; <span class="comment">// parse separator (:)</span></div>
<div class="line"><a name="l09064"></a><span class="lineno"> 9064</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(get_token() != token_type::name_separator))</div>
<div class="line"><a name="l09065"></a><span class="lineno"> 9065</span>&#160; {</div>
<div class="line"><a name="l09066"></a><span class="lineno"> 9066</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l09067"></a><span class="lineno"> 9067</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l09068"></a><span class="lineno"> 9068</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l09069"></a><span class="lineno"> 9069</span>&#160; exception_message(token_type::name_separator, <span class="stringliteral">&quot;object separator&quot;</span>)));</div>
<div class="line"><a name="l09070"></a><span class="lineno"> 9070</span>&#160; }</div>
<div class="line"><a name="l09071"></a><span class="lineno"> 9071</span>&#160; </div>
<div class="line"><a name="l09072"></a><span class="lineno"> 9072</span>&#160; <span class="comment">// parse values</span></div>
<div class="line"><a name="l09073"></a><span class="lineno"> 9073</span>&#160; get_token();</div>
<div class="line"><a name="l09074"></a><span class="lineno"> 9074</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l09075"></a><span class="lineno"> 9075</span>&#160; }</div>
<div class="line"><a name="l09076"></a><span class="lineno"> 9076</span>&#160; </div>
<div class="line"><a name="l09077"></a><span class="lineno"> 9077</span>&#160; <span class="comment">// closing }</span></div>
<div class="line"><a name="l09078"></a><span class="lineno"> 9078</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(last_token == token_type::end_object))</div>
<div class="line"><a name="l09079"></a><span class="lineno"> 9079</span>&#160; {</div>
<div class="line"><a name="l09080"></a><span class="lineno"> 9080</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax-&gt;end_object()))</div>
<div class="line"><a name="l09081"></a><span class="lineno"> 9081</span>&#160; {</div>
<div class="line"><a name="l09082"></a><span class="lineno"> 9082</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l09083"></a><span class="lineno"> 9083</span>&#160; }</div>
<div class="line"><a name="l09084"></a><span class="lineno"> 9084</span>&#160; </div>
<div class="line"><a name="l09085"></a><span class="lineno"> 9085</span>&#160; <span class="comment">// We are done with this object. Before we can parse a</span></div>
<div class="line"><a name="l09086"></a><span class="lineno"> 9086</span>&#160; <span class="comment">// new value, we need to evaluate the new state first.</span></div>
<div class="line"><a name="l09087"></a><span class="lineno"> 9087</span>&#160; <span class="comment">// By setting skip_to_state_evaluation to false, we</span></div>
<div class="line"><a name="l09088"></a><span class="lineno"> 9088</span>&#160; <span class="comment">// are effectively jumping to the beginning of this if.</span></div>
<div class="line"><a name="l09089"></a><span class="lineno"> 9089</span>&#160; assert(not states.empty());</div>
<div class="line"><a name="l09090"></a><span class="lineno"> 9090</span>&#160; states.pop_back();</div>
<div class="line"><a name="l09091"></a><span class="lineno"> 9091</span>&#160; skip_to_state_evaluation = <span class="keyword">true</span>;</div>
<div class="line"><a name="l09092"></a><span class="lineno"> 9092</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l09093"></a><span class="lineno"> 9093</span>&#160; }</div>
<div class="line"><a name="l09094"></a><span class="lineno"> 9094</span>&#160; </div>
<div class="line"><a name="l09095"></a><span class="lineno"> 9095</span>&#160; <span class="keywordflow">return</span> sax-&gt;parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l09096"></a><span class="lineno"> 9096</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
<div class="line"><a name="l09097"></a><span class="lineno"> 9097</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
<div class="line"><a name="l09098"></a><span class="lineno"> 9098</span>&#160; exception_message(token_type::end_object, <span class="stringliteral">&quot;object&quot;</span>)));</div>
<div class="line"><a name="l09099"></a><span class="lineno"> 9099</span>&#160; }</div>
<div class="line"><a name="l09100"></a><span class="lineno"> 9100</span>&#160; }</div>
<div class="line"><a name="l09101"></a><span class="lineno"> 9101</span>&#160; }</div>
<div class="line"><a name="l09102"></a><span class="lineno"> 9102</span>&#160; </div>
<div class="line"><a name="l09104"></a><span class="lineno"> 9104</span>&#160; token_type get_token()</div>
<div class="line"><a name="l09105"></a><span class="lineno"> 9105</span>&#160; {</div>
<div class="line"><a name="l09106"></a><span class="lineno"> 9106</span>&#160; <span class="keywordflow">return</span> last_token = m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#aac3041cd2b9291e64fee38db422863c9">scan</a>();</div>
<div class="line"><a name="l09107"></a><span class="lineno"> 9107</span>&#160; }</div>
<div class="line"><a name="l09108"></a><span class="lineno"> 9108</span>&#160; </div>
<div class="line"><a name="l09109"></a><span class="lineno"> 9109</span>&#160; std::string exception_message(<span class="keyword">const</span> token_type expected, <span class="keyword">const</span> std::string&amp; context)</div>
<div class="line"><a name="l09110"></a><span class="lineno"> 9110</span>&#160; {</div>
<div class="line"><a name="l09111"></a><span class="lineno"> 9111</span>&#160; std::string error_msg = <span class="stringliteral">&quot;syntax error &quot;</span>;</div>
<div class="line"><a name="l09112"></a><span class="lineno"> 9112</span>&#160; </div>
<div class="line"><a name="l09113"></a><span class="lineno"> 9113</span>&#160; <span class="keywordflow">if</span> (not context.empty())</div>
<div class="line"><a name="l09114"></a><span class="lineno"> 9114</span>&#160; {</div>
<div class="line"><a name="l09115"></a><span class="lineno"> 9115</span>&#160; error_msg += <span class="stringliteral">&quot;while parsing &quot;</span> + context + <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a name="l09116"></a><span class="lineno"> 9116</span>&#160; }</div>
<div class="line"><a name="l09117"></a><span class="lineno"> 9117</span>&#160; </div>
<div class="line"><a name="l09118"></a><span class="lineno"> 9118</span>&#160; error_msg += <span class="stringliteral">&quot;- &quot;</span>;</div>
<div class="line"><a name="l09119"></a><span class="lineno"> 9119</span>&#160; </div>
<div class="line"><a name="l09120"></a><span class="lineno"> 9120</span>&#160; <span class="keywordflow">if</span> (last_token == token_type::parse_error)</div>
<div class="line"><a name="l09121"></a><span class="lineno"> 9121</span>&#160; {</div>
<div class="line"><a name="l09122"></a><span class="lineno"> 9122</span>&#160; error_msg += std::string(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a14cf32c36b043db47510ae183d38ce5b">get_error_message</a>()) + <span class="stringliteral">&quot;; last read: &#39;&quot;</span> +</div>
<div class="line"><a name="l09123"></a><span class="lineno"> 9123</span>&#160; m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>() + <span class="stringliteral">&quot;&#39;&quot;</span>;</div>
<div class="line"><a name="l09124"></a><span class="lineno"> 9124</span>&#160; }</div>
<div class="line"><a name="l09125"></a><span class="lineno"> 9125</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l09126"></a><span class="lineno"> 9126</span>&#160; {</div>
<div class="line"><a name="l09127"></a><span class="lineno"> 9127</span>&#160; error_msg += <span class="stringliteral">&quot;unexpected &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a06f5e2129cffcc72eee84d88e126e3e3">lexer_t::token_type_name</a>(last_token));</div>
<div class="line"><a name="l09128"></a><span class="lineno"> 9128</span>&#160; }</div>
<div class="line"><a name="l09129"></a><span class="lineno"> 9129</span>&#160; </div>
<div class="line"><a name="l09130"></a><span class="lineno"> 9130</span>&#160; <span class="keywordflow">if</span> (expected != token_type::uninitialized)</div>
<div class="line"><a name="l09131"></a><span class="lineno"> 9131</span>&#160; {</div>
<div class="line"><a name="l09132"></a><span class="lineno"> 9132</span>&#160; error_msg += <span class="stringliteral">&quot;; expected &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a06f5e2129cffcc72eee84d88e126e3e3">lexer_t::token_type_name</a>(expected));</div>
<div class="line"><a name="l09133"></a><span class="lineno"> 9133</span>&#160; }</div>
<div class="line"><a name="l09134"></a><span class="lineno"> 9134</span>&#160; </div>
<div class="line"><a name="l09135"></a><span class="lineno"> 9135</span>&#160; <span class="keywordflow">return</span> error_msg;</div>
<div class="line"><a name="l09136"></a><span class="lineno"> 9136</span>&#160; }</div>
<div class="line"><a name="l09137"></a><span class="lineno"> 9137</span>&#160; </div>
<div class="line"><a name="l09138"></a><span class="lineno"> 9138</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l09140"></a><span class="lineno"> 9140</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1">parser_callback_t</a> callback = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l09142"></a><span class="lineno"> 9142</span>&#160; token_type last_token = token_type::uninitialized;</div>
<div class="line"><a name="l09144"></a><span class="lineno"> 9144</span>&#160; lexer_t m_lexer;</div>
<div class="line"><a name="l09146"></a><span class="lineno"> 9146</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>;</div>
<div class="line"><a name="l09147"></a><span class="lineno"> 9147</span>&#160;};</div>
<div class="line"><a name="l09148"></a><span class="lineno"> 9148</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l09149"></a><span class="lineno"> 9149</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l09150"></a><span class="lineno"> 9150</span>&#160; </div>
<div class="line"><a name="l09151"></a><span class="lineno"> 9151</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/internal_iterator.hpp&gt;</span></div>
<div class="line"><a name="l09152"></a><span class="lineno"> 9152</span>&#160; </div>
<div class="line"><a name="l09153"></a><span class="lineno"> 9153</span>&#160; </div>
<div class="line"><a name="l09154"></a><span class="lineno"> 9154</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/primitive_iterator.hpp&gt;</span></div>
<div class="line"><a name="l09155"></a><span class="lineno"> 9155</span>&#160; </div>
<div class="line"><a name="l09156"></a><span class="lineno"> 9156</span>&#160; </div>
<div class="line"><a name="l09157"></a><span class="lineno"> 9157</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// ptrdiff_t</span></div>
<div class="line"><a name="l09158"></a><span class="lineno"> 9158</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span> <span class="comment">// numeric_limits</span></div>
<div class="line"><a name="l09159"></a><span class="lineno"> 9159</span>&#160; </div>
<div class="line"><a name="l09160"></a><span class="lineno"> 9160</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l09161"></a><span class="lineno"> 9161</span>&#160;{</div>
<div class="line"><a name="l09162"></a><span class="lineno"> 9162</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l09163"></a><span class="lineno"> 9163</span>&#160;{</div>
<div class="line"><a name="l09164"></a><span class="lineno"> 9164</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l09165"></a><span class="lineno"> 9165</span>&#160;<span class="comment">@brief an iterator for primitive JSON types</span></div>
<div class="line"><a name="l09166"></a><span class="lineno"> 9166</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l09167"></a><span class="lineno"> 9167</span>&#160;<span class="comment">This class models an iterator for primitive JSON types (boolean, number,</span></div>
<div class="line"><a name="l09168"></a><span class="lineno"> 9168</span>&#160;<span class="comment">string). It&#39;s only purpose is to allow the iterator/const_iterator classes</span></div>
<div class="line"><a name="l09169"></a><span class="lineno"> 9169</span>&#160;<span class="comment">to &quot;iterate&quot; over primitive values. Internally, the iterator is modeled by</span></div>
<div class="line"><a name="l09170"></a><span class="lineno"> 9170</span>&#160;<span class="comment">a `difference_type` variable. Value begin_value (`0`) models the begin,</span></div>
<div class="line"><a name="l09171"></a><span class="lineno"> 9171</span>&#160;<span class="comment">end_value (`1`) models past the end.</span></div>
<div class="line"><a name="l09172"></a><span class="lineno"> 9172</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l09173"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html"> 9173</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a></div>
<div class="line"><a name="l09174"></a><span class="lineno"> 9174</span>&#160;{</div>
<div class="line"><a name="l09175"></a><span class="lineno"> 9175</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l09176"></a><span class="lineno"> 9176</span>&#160; <span class="keyword">using</span> difference_type = std::ptrdiff_t;</div>
<div class="line"><a name="l09177"></a><span class="lineno"> 9177</span>&#160; <span class="keyword">static</span> constexpr difference_type begin_value = 0;</div>
<div class="line"><a name="l09178"></a><span class="lineno"> 9178</span>&#160; <span class="keyword">static</span> constexpr difference_type end_value = begin_value + 1;</div>
<div class="line"><a name="l09179"></a><span class="lineno"> 9179</span>&#160; </div>
<div class="line"><a name="l09181"></a><span class="lineno"> 9181</span>&#160; difference_type m_it = (std::numeric_limits&lt;std::ptrdiff_t&gt;::min)();</div>
<div class="line"><a name="l09182"></a><span class="lineno"> 9182</span>&#160; </div>
<div class="line"><a name="l09183"></a><span class="lineno"> 9183</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l09184"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae952990886ca1756229f916661a8af81"> 9184</a></span>&#160; constexpr difference_type <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae952990886ca1756229f916661a8af81">get_value</a>() const noexcept</div>
<div class="line"><a name="l09185"></a><span class="lineno"> 9185</span>&#160; {</div>
<div class="line"><a name="l09186"></a><span class="lineno"> 9186</span>&#160; <span class="keywordflow">return</span> m_it;</div>
<div class="line"><a name="l09187"></a><span class="lineno"> 9187</span>&#160; }</div>
<div class="line"><a name="l09188"></a><span class="lineno"> 9188</span>&#160; </div>
<div class="line"><a name="l09190"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a9d9b005906106e12aed738f97d7fee42"> 9190</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a9d9b005906106e12aed738f97d7fee42">set_begin</a>() noexcept</div>
<div class="line"><a name="l09191"></a><span class="lineno"> 9191</span>&#160; {</div>
<div class="line"><a name="l09192"></a><span class="lineno"> 9192</span>&#160; m_it = begin_value;</div>
<div class="line"><a name="l09193"></a><span class="lineno"> 9193</span>&#160; }</div>
<div class="line"><a name="l09194"></a><span class="lineno"> 9194</span>&#160; </div>
<div class="line"><a name="l09196"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26a823483846a12d890c3feed3097eb"> 9196</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26a823483846a12d890c3feed3097eb">set_end</a>() noexcept</div>
<div class="line"><a name="l09197"></a><span class="lineno"> 9197</span>&#160; {</div>
<div class="line"><a name="l09198"></a><span class="lineno"> 9198</span>&#160; m_it = end_value;</div>
<div class="line"><a name="l09199"></a><span class="lineno"> 9199</span>&#160; }</div>
<div class="line"><a name="l09200"></a><span class="lineno"> 9200</span>&#160; </div>
<div class="line"><a name="l09202"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a8d1a7d46b3fcd06edd034f04ededb5e4"> 9202</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a8d1a7d46b3fcd06edd034f04ededb5e4">is_begin</a>() const noexcept</div>
<div class="line"><a name="l09203"></a><span class="lineno"> 9203</span>&#160; {</div>
<div class="line"><a name="l09204"></a><span class="lineno"> 9204</span>&#160; <span class="keywordflow">return</span> m_it == begin_value;</div>
<div class="line"><a name="l09205"></a><span class="lineno"> 9205</span>&#160; }</div>
<div class="line"><a name="l09206"></a><span class="lineno"> 9206</span>&#160; </div>
<div class="line"><a name="l09208"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a45a7e301c23b5b90417baf2277f40b1d"> 9208</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a45a7e301c23b5b90417baf2277f40b1d">is_end</a>() const noexcept</div>
<div class="line"><a name="l09209"></a><span class="lineno"> 9209</span>&#160; {</div>
<div class="line"><a name="l09210"></a><span class="lineno"> 9210</span>&#160; <span class="keywordflow">return</span> m_it == end_value;</div>
<div class="line"><a name="l09211"></a><span class="lineno"> 9211</span>&#160; }</div>
<div class="line"><a name="l09212"></a><span class="lineno"> 9212</span>&#160; </div>
<div class="line"><a name="l09213"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#af58da4713ea9010912f3da6b22aeee51"> 9213</a></span>&#160; <span class="keyword">friend</span> constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#af58da4713ea9010912f3da6b22aeee51">operator==</a>(<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> lhs, <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> rhs) noexcept</div>
<div class="line"><a name="l09214"></a><span class="lineno"> 9214</span>&#160; {</div>
<div class="line"><a name="l09215"></a><span class="lineno"> 9215</span>&#160; <span class="keywordflow">return</span> lhs.m_it == rhs.m_it;</div>
<div class="line"><a name="l09216"></a><span class="lineno"> 9216</span>&#160; }</div>
<div class="line"><a name="l09217"></a><span class="lineno"> 9217</span>&#160; </div>
<div class="line"><a name="l09218"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a6b032074795534fe7144a4f1c86ead2f"> 9218</a></span>&#160; <span class="keyword">friend</span> constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a6b032074795534fe7144a4f1c86ead2f">operator&lt;</a>(<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> lhs, <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> rhs) noexcept</div>
<div class="line"><a name="l09219"></a><span class="lineno"> 9219</span>&#160; {</div>
<div class="line"><a name="l09220"></a><span class="lineno"> 9220</span>&#160; <span class="keywordflow">return</span> lhs.m_it &lt; rhs.m_it;</div>
<div class="line"><a name="l09221"></a><span class="lineno"> 9221</span>&#160; }</div>
<div class="line"><a name="l09222"></a><span class="lineno"> 9222</span>&#160; </div>
<div class="line"><a name="l09223"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a00ce828d0fe58046c10e0445504df7bf"> 9223</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a00ce828d0fe58046c10e0445504df7bf">operator+</a>(difference_type n) noexcept</div>
<div class="line"><a name="l09224"></a><span class="lineno"> 9224</span>&#160; {</div>
<div class="line"><a name="l09225"></a><span class="lineno"> 9225</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09226"></a><span class="lineno"> 9226</span>&#160; result += n;</div>
<div class="line"><a name="l09227"></a><span class="lineno"> 9227</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l09228"></a><span class="lineno"> 9228</span>&#160; }</div>
<div class="line"><a name="l09229"></a><span class="lineno"> 9229</span>&#160; </div>
<div class="line"><a name="l09230"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a86a249e92a5274dec7ea20e52b0cc878"> 9230</a></span>&#160; <span class="keyword">friend</span> constexpr difference_type <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a86a249e92a5274dec7ea20e52b0cc878">operator-</a>(<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> lhs, <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> rhs) noexcept</div>
<div class="line"><a name="l09231"></a><span class="lineno"> 9231</span>&#160; {</div>
<div class="line"><a name="l09232"></a><span class="lineno"> 9232</span>&#160; <span class="keywordflow">return</span> lhs.m_it - rhs.m_it;</div>
<div class="line"><a name="l09233"></a><span class="lineno"> 9233</span>&#160; }</div>
<div class="line"><a name="l09234"></a><span class="lineno"> 9234</span>&#160; </div>
<div class="line"><a name="l09235"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26511012fc88f3ec5d9e1cb708732fd"> 9235</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26511012fc88f3ec5d9e1cb708732fd">operator++</a>() noexcept</div>
<div class="line"><a name="l09236"></a><span class="lineno"> 9236</span>&#160; {</div>
<div class="line"><a name="l09237"></a><span class="lineno"> 9237</span>&#160; ++m_it;</div>
<div class="line"><a name="l09238"></a><span class="lineno"> 9238</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09239"></a><span class="lineno"> 9239</span>&#160; }</div>
<div class="line"><a name="l09240"></a><span class="lineno"> 9240</span>&#160; </div>
<div class="line"><a name="l09241"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a88e38c8e60ba9769b334c192b830047b"> 9241</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a88e38c8e60ba9769b334c192b830047b">operator++</a>(<span class="keywordtype">int</span>) noexcept</div>
<div class="line"><a name="l09242"></a><span class="lineno"> 9242</span>&#160; {</div>
<div class="line"><a name="l09243"></a><span class="lineno"> 9243</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09244"></a><span class="lineno"> 9244</span>&#160; ++m_it;</div>
<div class="line"><a name="l09245"></a><span class="lineno"> 9245</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l09246"></a><span class="lineno"> 9246</span>&#160; }</div>
<div class="line"><a name="l09247"></a><span class="lineno"> 9247</span>&#160; </div>
<div class="line"><a name="l09248"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#abecbf0c73c7fe963a699738065177bc3"> 9248</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#abecbf0c73c7fe963a699738065177bc3">operator--</a>() noexcept</div>
<div class="line"><a name="l09249"></a><span class="lineno"> 9249</span>&#160; {</div>
<div class="line"><a name="l09250"></a><span class="lineno"> 9250</span>&#160; --m_it;</div>
<div class="line"><a name="l09251"></a><span class="lineno"> 9251</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09252"></a><span class="lineno"> 9252</span>&#160; }</div>
<div class="line"><a name="l09253"></a><span class="lineno"> 9253</span>&#160; </div>
<div class="line"><a name="l09254"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae5aed974605469fe0dfeddc6c4a7056d"> 9254</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae5aed974605469fe0dfeddc6c4a7056d">operator--</a>(<span class="keywordtype">int</span>) noexcept</div>
<div class="line"><a name="l09255"></a><span class="lineno"> 9255</span>&#160; {</div>
<div class="line"><a name="l09256"></a><span class="lineno"> 9256</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09257"></a><span class="lineno"> 9257</span>&#160; --m_it;</div>
<div class="line"><a name="l09258"></a><span class="lineno"> 9258</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l09259"></a><span class="lineno"> 9259</span>&#160; }</div>
<div class="line"><a name="l09260"></a><span class="lineno"> 9260</span>&#160; </div>
<div class="line"><a name="l09261"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#aee01535df0b3b40137d9241029a9a203"> 9261</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#aee01535df0b3b40137d9241029a9a203">operator+=</a>(difference_type n) noexcept</div>
<div class="line"><a name="l09262"></a><span class="lineno"> 9262</span>&#160; {</div>
<div class="line"><a name="l09263"></a><span class="lineno"> 9263</span>&#160; m_it += n;</div>
<div class="line"><a name="l09264"></a><span class="lineno"> 9264</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09265"></a><span class="lineno"> 9265</span>&#160; }</div>
<div class="line"><a name="l09266"></a><span class="lineno"> 9266</span>&#160; </div>
<div class="line"><a name="l09267"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a0bf83ab08abe1ae4b51c790c85cdf151"> 9267</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a0bf83ab08abe1ae4b51c790c85cdf151">operator-=</a>(difference_type n) noexcept</div>
<div class="line"><a name="l09268"></a><span class="lineno"> 9268</span>&#160; {</div>
<div class="line"><a name="l09269"></a><span class="lineno"> 9269</span>&#160; m_it -= n;</div>
<div class="line"><a name="l09270"></a><span class="lineno"> 9270</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09271"></a><span class="lineno"> 9271</span>&#160; }</div>
<div class="line"><a name="l09272"></a><span class="lineno"> 9272</span>&#160;};</div>
<div class="line"><a name="l09273"></a><span class="lineno"> 9273</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l09274"></a><span class="lineno"> 9274</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l09275"></a><span class="lineno"> 9275</span>&#160; </div>
<div class="line"><a name="l09276"></a><span class="lineno"> 9276</span>&#160; </div>
<div class="line"><a name="l09277"></a><span class="lineno"> 9277</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l09278"></a><span class="lineno"> 9278</span>&#160;{</div>
<div class="line"><a name="l09279"></a><span class="lineno"> 9279</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l09280"></a><span class="lineno"> 9280</span>&#160;{</div>
<div class="line"><a name="l09287"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1internal__iterator.html"> 9287</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html">internal_iterator</a></div>
<div class="line"><a name="l09288"></a><span class="lineno"> 9288</span>&#160;{</div>
<div class="line"><a name="l09290"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408"> 9290</a></span>&#160; <span class="keyword">typename</span> BasicJsonType::object_t::iterator <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> {};</div>
<div class="line"><a name="l09292"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d"> 9292</a></span>&#160; <span class="keyword">typename</span> BasicJsonType::array_t::iterator <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> {};</div>
<div class="line"><a name="l09294"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8"> 9294</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> {};</div>
<div class="line"><a name="l09295"></a><span class="lineno"> 9295</span>&#160;};</div>
<div class="line"><a name="l09296"></a><span class="lineno"> 9296</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l09297"></a><span class="lineno"> 9297</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l09298"></a><span class="lineno"> 9298</span>&#160; </div>
<div class="line"><a name="l09299"></a><span class="lineno"> 9299</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/iter_impl.hpp&gt;</span></div>
<div class="line"><a name="l09300"></a><span class="lineno"> 9300</span>&#160; </div>
<div class="line"><a name="l09301"></a><span class="lineno"> 9301</span>&#160; </div>
<div class="line"><a name="l09302"></a><span class="lineno"> 9302</span>&#160;<span class="preprocessor">#include &lt;ciso646&gt;</span> <span class="comment">// not</span></div>
<div class="line"><a name="l09303"></a><span class="lineno"> 9303</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next</span></div>
<div class="line"><a name="l09304"></a><span class="lineno"> 9304</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span> <span class="comment">// conditional, is_const, remove_const</span></div>
<div class="line"><a name="l09305"></a><span class="lineno"> 9305</span>&#160; </div>
<div class="line"><a name="l09306"></a><span class="lineno"> 9306</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/exceptions.hpp&gt;</span></div>
<div class="line"><a name="l09307"></a><span class="lineno"> 9307</span>&#160; </div>
<div class="line"><a name="l09308"></a><span class="lineno"> 9308</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/internal_iterator.hpp&gt;</span></div>
<div class="line"><a name="l09309"></a><span class="lineno"> 9309</span>&#160; </div>
<div class="line"><a name="l09310"></a><span class="lineno"> 9310</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/primitive_iterator.hpp&gt;</span></div>
<div class="line"><a name="l09311"></a><span class="lineno"> 9311</span>&#160; </div>
<div class="line"><a name="l09312"></a><span class="lineno"> 9312</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l09313"></a><span class="lineno"> 9313</span>&#160; </div>
<div class="line"><a name="l09314"></a><span class="lineno"> 9314</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/cpp_future.hpp&gt;</span></div>
<div class="line"><a name="l09315"></a><span class="lineno"> 9315</span>&#160; </div>
<div class="line"><a name="l09316"></a><span class="lineno"> 9316</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/type_traits.hpp&gt;</span></div>
<div class="line"><a name="l09317"></a><span class="lineno"> 9317</span>&#160; </div>
<div class="line"><a name="l09318"></a><span class="lineno"> 9318</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/value_t.hpp&gt;</span></div>
<div class="line"><a name="l09319"></a><span class="lineno"> 9319</span>&#160; </div>
<div class="line"><a name="l09320"></a><span class="lineno"> 9320</span>&#160; </div>
<div class="line"><a name="l09321"></a><span class="lineno"> 9321</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l09322"></a><span class="lineno"> 9322</span>&#160;{</div>
<div class="line"><a name="l09323"></a><span class="lineno"> 9323</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l09324"></a><span class="lineno"> 9324</span>&#160;{</div>
<div class="line"><a name="l09325"></a><span class="lineno"> 9325</span>&#160;<span class="comment">// forward declare, to be able to friend it later on</span></div>
<div class="line"><a name="l09326"></a><span class="lineno"> 9326</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> IteratorType&gt; <span class="keyword">class </span>iteration_proxy;</div>
<div class="line"><a name="l09327"></a><span class="lineno"> 9327</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> IteratorType&gt; <span class="keyword">class </span>iteration_proxy_value;</div>
<div class="line"><a name="l09328"></a><span class="lineno"> 9328</span>&#160; </div>
<div class="line"><a name="l09345"></a><span class="lineno"> 9345</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l09346"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html"> 9346</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a></div>
<div class="line"><a name="l09347"></a><span class="lineno"> 9347</span>&#160;{</div>
<div class="line"><a name="l09349"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a19aa457f9c4af1b7e3af59839132cc5c"> 9349</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl&lt;typename std::conditional&lt;std::is_const&lt;BasicJsonType&gt;::value</a>, <span class="keyword">typename</span> std::remove_const&lt;BasicJsonType&gt;::type, <span class="keyword">const</span> BasicJsonType&gt;::type&gt;;</div>
<div class="line"><a name="l09350"></a><span class="lineno"> 9350</span>&#160; <span class="keyword">friend</span> BasicJsonType;</div>
<div class="line"><a name="l09351"></a><span class="lineno"> 9351</span>&#160; <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy&lt;iter_impl&gt;</a>;</div>
<div class="line"><a name="l09352"></a><span class="lineno"> 9352</span>&#160; <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value&lt;iter_impl&gt;</a>;</div>
<div class="line"><a name="l09353"></a><span class="lineno"> 9353</span>&#160; </div>
<div class="line"><a name="l09354"></a><span class="lineno"> 9354</span>&#160; <span class="keyword">using</span> object_t = <span class="keyword">typename</span> BasicJsonType::object_t;</div>
<div class="line"><a name="l09355"></a><span class="lineno"> 9355</span>&#160; <span class="keyword">using</span> array_t = <span class="keyword">typename</span> BasicJsonType::array_t;</div>
<div class="line"><a name="l09356"></a><span class="lineno"> 9356</span>&#160; <span class="comment">// make sure BasicJsonType is basic_json or const basic_json</span></div>
<div class="line"><a name="l09357"></a><span class="lineno"> 9357</span>&#160; static_assert(<a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a>&lt;<span class="keyword">typename</span> std::remove_const&lt;BasicJsonType&gt;::type&gt;::<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ab447c50354c6611fa2ae0100ac17845c">value</a>,</div>
<div class="line"><a name="l09358"></a><span class="lineno"> 9358</span>&#160; <span class="stringliteral">&quot;iter_impl only accepts (const) basic_json&quot;</span>);</div>
<div class="line"><a name="l09359"></a><span class="lineno"> 9359</span>&#160; </div>
<div class="line"><a name="l09360"></a><span class="lineno"> 9360</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l09361"></a><span class="lineno"> 9361</span>&#160; </div>
<div class="line"><a name="l09367"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#ad9e091f5c70b34b5b1abc1ab15fd9106"> 9367</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ad9e091f5c70b34b5b1abc1ab15fd9106">iterator_category</a> = std::bidirectional_iterator_tag;</div>
<div class="line"><a name="l09368"></a><span class="lineno"> 9368</span>&#160; </div>
<div class="line"><a name="l09370"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#ab35586a44f2222272c5346baa3013f67"> 9370</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ab35586a44f2222272c5346baa3013f67">value_type</a> = <span class="keyword">typename</span> BasicJsonType::value_type;</div>
<div class="line"><a name="l09372"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840"> 9372</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> = <span class="keyword">typename</span> BasicJsonType::difference_type;</div>
<div class="line"><a name="l09374"></a><span class="lineno"> 9374</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360">pointer</a> = <span class="keyword">typename</span> std::conditional&lt;std::is_const&lt;BasicJsonType&gt;::value,</div>
<div class="line"><a name="l09375"></a><span class="lineno"> 9375</span>&#160; <span class="keyword">typename</span> BasicJsonType::const_pointer,</div>
<div class="line"><a name="l09376"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360"> 9376</a></span>&#160; <span class="keyword">typename</span> BasicJsonType::pointer&gt;::type;</div>
<div class="line"><a name="l09378"></a><span class="lineno"> 9378</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce">reference</a> =</div>
<div class="line"><a name="l09379"></a><span class="lineno"> 9379</span>&#160; <span class="keyword">typename</span> std::conditional&lt;std::is_const&lt;BasicJsonType&gt;::value,</div>
<div class="line"><a name="l09380"></a><span class="lineno"> 9380</span>&#160; <span class="keyword">typename</span> BasicJsonType::const_reference,</div>
<div class="line"><a name="l09381"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce"> 9381</a></span>&#160; <span class="keyword">typename</span> BasicJsonType::reference&gt;::type;</div>
<div class="line"><a name="l09382"></a><span class="lineno"> 9382</span>&#160; </div>
<div class="line"><a name="l09384"></a><span class="lineno"> 9384</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a19aa457f9c4af1b7e3af59839132cc5c">iter_impl</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l09385"></a><span class="lineno"> 9385</span>&#160; </div>
<div class="line"><a name="l09392"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a88a00484ac201c52fc5f613d88a2918b"> 9392</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a88a00484ac201c52fc5f613d88a2918b">iter_impl</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360">pointer</a> <span class="keywordtype">object</span>) noexcept : m_object(<span class="keywordtype">object</span>)</div>
<div class="line"><a name="l09393"></a><span class="lineno"> 9393</span>&#160; {</div>
<div class="line"><a name="l09394"></a><span class="lineno"> 9394</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09395"></a><span class="lineno"> 9395</span>&#160; </div>
<div class="line"><a name="l09396"></a><span class="lineno"> 9396</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09397"></a><span class="lineno"> 9397</span>&#160; {</div>
<div class="line"><a name="l09398"></a><span class="lineno"> 9398</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09399"></a><span class="lineno"> 9399</span>&#160; {</div>
<div class="line"><a name="l09400"></a><span class="lineno"> 9400</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> = <span class="keyword">typename</span> object_t::iterator();</div>
<div class="line"><a name="l09401"></a><span class="lineno"> 9401</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09402"></a><span class="lineno"> 9402</span>&#160; }</div>
<div class="line"><a name="l09403"></a><span class="lineno"> 9403</span>&#160; </div>
<div class="line"><a name="l09404"></a><span class="lineno"> 9404</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09405"></a><span class="lineno"> 9405</span>&#160; {</div>
<div class="line"><a name="l09406"></a><span class="lineno"> 9406</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> = <span class="keyword">typename</span> array_t::iterator();</div>
<div class="line"><a name="l09407"></a><span class="lineno"> 9407</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09408"></a><span class="lineno"> 9408</span>&#160; }</div>
<div class="line"><a name="l09409"></a><span class="lineno"> 9409</span>&#160; </div>
<div class="line"><a name="l09410"></a><span class="lineno"> 9410</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09411"></a><span class="lineno"> 9411</span>&#160; {</div>
<div class="line"><a name="l09412"></a><span class="lineno"> 9412</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a>();</div>
<div class="line"><a name="l09413"></a><span class="lineno"> 9413</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09414"></a><span class="lineno"> 9414</span>&#160; }</div>
<div class="line"><a name="l09415"></a><span class="lineno"> 9415</span>&#160; }</div>
<div class="line"><a name="l09416"></a><span class="lineno"> 9416</span>&#160; }</div>
<div class="line"><a name="l09417"></a><span class="lineno"> 9417</span>&#160; </div>
<div class="line"><a name="l09434"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a71f84fb6e009619f12972bcf9002b8cd"> 9434</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a71f84fb6e009619f12972bcf9002b8cd">iter_impl</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl&lt;const BasicJsonType&gt;</a>&amp; other) noexcept</div>
<div class="line"><a name="l09435"></a><span class="lineno"> 9435</span>&#160; : m_object(other.m_object), m_it(other.m_it)</div>
<div class="line"><a name="l09436"></a><span class="lineno"> 9436</span>&#160; {}</div>
<div class="line"><a name="l09437"></a><span class="lineno"> 9437</span>&#160; </div>
<div class="line"><a name="l09444"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a9a5cd7864a8f848ef107d3f5a330f5e7"> 9444</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a9a5cd7864a8f848ef107d3f5a330f5e7">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl&lt;const BasicJsonType&gt;</a>&amp; other) noexcept</div>
<div class="line"><a name="l09445"></a><span class="lineno"> 9445</span>&#160; {</div>
<div class="line"><a name="l09446"></a><span class="lineno"> 9446</span>&#160; m_object = other.m_object;</div>
<div class="line"><a name="l09447"></a><span class="lineno"> 9447</span>&#160; m_it = other.m_it;</div>
<div class="line"><a name="l09448"></a><span class="lineno"> 9448</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09449"></a><span class="lineno"> 9449</span>&#160; }</div>
<div class="line"><a name="l09450"></a><span class="lineno"> 9450</span>&#160; </div>
<div class="line"><a name="l09456"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a867f7eb55091be31b013adb3e46816d3"> 9456</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a867f7eb55091be31b013adb3e46816d3">iter_impl</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&lt;<span class="keyword">typename</span> std::remove_const&lt;BasicJsonType&gt;::type&gt;&amp; other) noexcept</div>
<div class="line"><a name="l09457"></a><span class="lineno"> 9457</span>&#160; : m_object(other.m_object), m_it(other.m_it)</div>
<div class="line"><a name="l09458"></a><span class="lineno"> 9458</span>&#160; {}</div>
<div class="line"><a name="l09459"></a><span class="lineno"> 9459</span>&#160; </div>
<div class="line"><a name="l09466"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a7159ed1cfe7c423a2baef8bea0c94509"> 9466</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a7159ed1cfe7c423a2baef8bea0c94509">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&lt;<span class="keyword">typename</span> std::remove_const&lt;BasicJsonType&gt;::type&gt;&amp; other) noexcept</div>
<div class="line"><a name="l09467"></a><span class="lineno"> 9467</span>&#160; {</div>
<div class="line"><a name="l09468"></a><span class="lineno"> 9468</span>&#160; m_object = other.m_object;</div>
<div class="line"><a name="l09469"></a><span class="lineno"> 9469</span>&#160; m_it = other.m_it;</div>
<div class="line"><a name="l09470"></a><span class="lineno"> 9470</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09471"></a><span class="lineno"> 9471</span>&#160; }</div>
<div class="line"><a name="l09472"></a><span class="lineno"> 9472</span>&#160; </div>
<div class="line"><a name="l09473"></a><span class="lineno"> 9473</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l09478"></a><span class="lineno"> 9478</span>&#160; <span class="keywordtype">void</span> set_begin() noexcept</div>
<div class="line"><a name="l09479"></a><span class="lineno"> 9479</span>&#160; {</div>
<div class="line"><a name="l09480"></a><span class="lineno"> 9480</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09481"></a><span class="lineno"> 9481</span>&#160; </div>
<div class="line"><a name="l09482"></a><span class="lineno"> 9482</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09483"></a><span class="lineno"> 9483</span>&#160; {</div>
<div class="line"><a name="l09484"></a><span class="lineno"> 9484</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09485"></a><span class="lineno"> 9485</span>&#160; {</div>
<div class="line"><a name="l09486"></a><span class="lineno"> 9486</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> = m_object-&gt;m_value.object-&gt;begin();</div>
<div class="line"><a name="l09487"></a><span class="lineno"> 9487</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09488"></a><span class="lineno"> 9488</span>&#160; }</div>
<div class="line"><a name="l09489"></a><span class="lineno"> 9489</span>&#160; </div>
<div class="line"><a name="l09490"></a><span class="lineno"> 9490</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09491"></a><span class="lineno"> 9491</span>&#160; {</div>
<div class="line"><a name="l09492"></a><span class="lineno"> 9492</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> = m_object-&gt;m_value.array-&gt;begin();</div>
<div class="line"><a name="l09493"></a><span class="lineno"> 9493</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09494"></a><span class="lineno"> 9494</span>&#160; }</div>
<div class="line"><a name="l09495"></a><span class="lineno"> 9495</span>&#160; </div>
<div class="line"><a name="l09496"></a><span class="lineno"> 9496</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l09497"></a><span class="lineno"> 9497</span>&#160; {</div>
<div class="line"><a name="l09498"></a><span class="lineno"> 9498</span>&#160; <span class="comment">// set to end so begin()==end() is true: null is empty</span></div>
<div class="line"><a name="l09499"></a><span class="lineno"> 9499</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26a823483846a12d890c3feed3097eb">set_end</a>();</div>
<div class="line"><a name="l09500"></a><span class="lineno"> 9500</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09501"></a><span class="lineno"> 9501</span>&#160; }</div>
<div class="line"><a name="l09502"></a><span class="lineno"> 9502</span>&#160; </div>
<div class="line"><a name="l09503"></a><span class="lineno"> 9503</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09504"></a><span class="lineno"> 9504</span>&#160; {</div>
<div class="line"><a name="l09505"></a><span class="lineno"> 9505</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a9d9b005906106e12aed738f97d7fee42">set_begin</a>();</div>
<div class="line"><a name="l09506"></a><span class="lineno"> 9506</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09507"></a><span class="lineno"> 9507</span>&#160; }</div>
<div class="line"><a name="l09508"></a><span class="lineno"> 9508</span>&#160; }</div>
<div class="line"><a name="l09509"></a><span class="lineno"> 9509</span>&#160; }</div>
<div class="line"><a name="l09510"></a><span class="lineno"> 9510</span>&#160; </div>
<div class="line"><a name="l09515"></a><span class="lineno"> 9515</span>&#160; <span class="keywordtype">void</span> set_end() noexcept</div>
<div class="line"><a name="l09516"></a><span class="lineno"> 9516</span>&#160; {</div>
<div class="line"><a name="l09517"></a><span class="lineno"> 9517</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09518"></a><span class="lineno"> 9518</span>&#160; </div>
<div class="line"><a name="l09519"></a><span class="lineno"> 9519</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09520"></a><span class="lineno"> 9520</span>&#160; {</div>
<div class="line"><a name="l09521"></a><span class="lineno"> 9521</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09522"></a><span class="lineno"> 9522</span>&#160; {</div>
<div class="line"><a name="l09523"></a><span class="lineno"> 9523</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> = m_object-&gt;m_value.object-&gt;end();</div>
<div class="line"><a name="l09524"></a><span class="lineno"> 9524</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09525"></a><span class="lineno"> 9525</span>&#160; }</div>
<div class="line"><a name="l09526"></a><span class="lineno"> 9526</span>&#160; </div>
<div class="line"><a name="l09527"></a><span class="lineno"> 9527</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09528"></a><span class="lineno"> 9528</span>&#160; {</div>
<div class="line"><a name="l09529"></a><span class="lineno"> 9529</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> = m_object-&gt;m_value.array-&gt;end();</div>
<div class="line"><a name="l09530"></a><span class="lineno"> 9530</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09531"></a><span class="lineno"> 9531</span>&#160; }</div>
<div class="line"><a name="l09532"></a><span class="lineno"> 9532</span>&#160; </div>
<div class="line"><a name="l09533"></a><span class="lineno"> 9533</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09534"></a><span class="lineno"> 9534</span>&#160; {</div>
<div class="line"><a name="l09535"></a><span class="lineno"> 9535</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26a823483846a12d890c3feed3097eb">set_end</a>();</div>
<div class="line"><a name="l09536"></a><span class="lineno"> 9536</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09537"></a><span class="lineno"> 9537</span>&#160; }</div>
<div class="line"><a name="l09538"></a><span class="lineno"> 9538</span>&#160; }</div>
<div class="line"><a name="l09539"></a><span class="lineno"> 9539</span>&#160; }</div>
<div class="line"><a name="l09540"></a><span class="lineno"> 9540</span>&#160; </div>
<div class="line"><a name="l09541"></a><span class="lineno"> 9541</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l09546"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a5ca57856d9bba54a5fc51cee891de827"> 9546</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce">reference</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5ca57856d9bba54a5fc51cee891de827">operator*</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l09547"></a><span class="lineno"> 9547</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09548"></a><span class="lineno"> 9548</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09549"></a><span class="lineno"> 9549</span>&#160; </div>
<div class="line"><a name="l09550"></a><span class="lineno"> 9550</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09551"></a><span class="lineno"> 9551</span>&#160; {</div>
<div class="line"><a name="l09552"></a><span class="lineno"> 9552</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09553"></a><span class="lineno"> 9553</span>&#160; {</div>
<div class="line"><a name="l09554"></a><span class="lineno"> 9554</span>&#160; assert(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> != m_object-&gt;m_value.object-&gt;end());</div>
<div class="line"><a name="l09555"></a><span class="lineno"> 9555</span>&#160; <span class="keywordflow">return</span> m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>-&gt;second;</div>
<div class="line"><a name="l09556"></a><span class="lineno"> 9556</span>&#160; }</div>
<div class="line"><a name="l09557"></a><span class="lineno"> 9557</span>&#160; </div>
<div class="line"><a name="l09558"></a><span class="lineno"> 9558</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09559"></a><span class="lineno"> 9559</span>&#160; {</div>
<div class="line"><a name="l09560"></a><span class="lineno"> 9560</span>&#160; assert(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> != m_object-&gt;m_value.array-&gt;end());</div>
<div class="line"><a name="l09561"></a><span class="lineno"> 9561</span>&#160; <span class="keywordflow">return</span> *m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>;</div>
<div class="line"><a name="l09562"></a><span class="lineno"> 9562</span>&#160; }</div>
<div class="line"><a name="l09563"></a><span class="lineno"> 9563</span>&#160; </div>
<div class="line"><a name="l09564"></a><span class="lineno"> 9564</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l09565"></a><span class="lineno"> 9565</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(214, <span class="stringliteral">&quot;cannot get value&quot;</span>));</div>
<div class="line"><a name="l09566"></a><span class="lineno"> 9566</span>&#160; </div>
<div class="line"><a name="l09567"></a><span class="lineno"> 9567</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09568"></a><span class="lineno"> 9568</span>&#160; {</div>
<div class="line"><a name="l09569"></a><span class="lineno"> 9569</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a8d1a7d46b3fcd06edd034f04ededb5e4">is_begin</a>()))</div>
<div class="line"><a name="l09570"></a><span class="lineno"> 9570</span>&#160; {</div>
<div class="line"><a name="l09571"></a><span class="lineno"> 9571</span>&#160; <span class="keywordflow">return</span> *m_object;</div>
<div class="line"><a name="l09572"></a><span class="lineno"> 9572</span>&#160; }</div>
<div class="line"><a name="l09573"></a><span class="lineno"> 9573</span>&#160; </div>
<div class="line"><a name="l09574"></a><span class="lineno"> 9574</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(214, <span class="stringliteral">&quot;cannot get value&quot;</span>));</div>
<div class="line"><a name="l09575"></a><span class="lineno"> 9575</span>&#160; }</div>
<div class="line"><a name="l09576"></a><span class="lineno"> 9576</span>&#160; }</div>
<div class="line"><a name="l09577"></a><span class="lineno"> 9577</span>&#160; }</div>
<div class="line"><a name="l09578"></a><span class="lineno"> 9578</span>&#160; </div>
<div class="line"><a name="l09583"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a6da3d2b34528aff328f3dcb513076dec"> 9583</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360">pointer</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a6da3d2b34528aff328f3dcb513076dec">operator-&gt;</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l09584"></a><span class="lineno"> 9584</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09585"></a><span class="lineno"> 9585</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09586"></a><span class="lineno"> 9586</span>&#160; </div>
<div class="line"><a name="l09587"></a><span class="lineno"> 9587</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09588"></a><span class="lineno"> 9588</span>&#160; {</div>
<div class="line"><a name="l09589"></a><span class="lineno"> 9589</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09590"></a><span class="lineno"> 9590</span>&#160; {</div>
<div class="line"><a name="l09591"></a><span class="lineno"> 9591</span>&#160; assert(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> != m_object-&gt;m_value.object-&gt;end());</div>
<div class="line"><a name="l09592"></a><span class="lineno"> 9592</span>&#160; <span class="keywordflow">return</span> &amp;(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>-&gt;second);</div>
<div class="line"><a name="l09593"></a><span class="lineno"> 9593</span>&#160; }</div>
<div class="line"><a name="l09594"></a><span class="lineno"> 9594</span>&#160; </div>
<div class="line"><a name="l09595"></a><span class="lineno"> 9595</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09596"></a><span class="lineno"> 9596</span>&#160; {</div>
<div class="line"><a name="l09597"></a><span class="lineno"> 9597</span>&#160; assert(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> != m_object-&gt;m_value.array-&gt;end());</div>
<div class="line"><a name="l09598"></a><span class="lineno"> 9598</span>&#160; <span class="keywordflow">return</span> &amp;*m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>;</div>
<div class="line"><a name="l09599"></a><span class="lineno"> 9599</span>&#160; }</div>
<div class="line"><a name="l09600"></a><span class="lineno"> 9600</span>&#160; </div>
<div class="line"><a name="l09601"></a><span class="lineno"> 9601</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09602"></a><span class="lineno"> 9602</span>&#160; {</div>
<div class="line"><a name="l09603"></a><span class="lineno"> 9603</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a8d1a7d46b3fcd06edd034f04ededb5e4">is_begin</a>()))</div>
<div class="line"><a name="l09604"></a><span class="lineno"> 9604</span>&#160; {</div>
<div class="line"><a name="l09605"></a><span class="lineno"> 9605</span>&#160; <span class="keywordflow">return</span> m_object;</div>
<div class="line"><a name="l09606"></a><span class="lineno"> 9606</span>&#160; }</div>
<div class="line"><a name="l09607"></a><span class="lineno"> 9607</span>&#160; </div>
<div class="line"><a name="l09608"></a><span class="lineno"> 9608</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(214, <span class="stringliteral">&quot;cannot get value&quot;</span>));</div>
<div class="line"><a name="l09609"></a><span class="lineno"> 9609</span>&#160; }</div>
<div class="line"><a name="l09610"></a><span class="lineno"> 9610</span>&#160; }</div>
<div class="line"><a name="l09611"></a><span class="lineno"> 9611</span>&#160; }</div>
<div class="line"><a name="l09612"></a><span class="lineno"> 9612</span>&#160; </div>
<div class="line"><a name="l09617"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a60f3b0a96cc0bff9a7e6ab84ca538a45"> 9617</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a60f3b0a96cc0bff9a7e6ab84ca538a45">operator++</a>(<span class="keywordtype">int</span>)</div>
<div class="line"><a name="l09618"></a><span class="lineno"> 9618</span>&#160; {</div>
<div class="line"><a name="l09619"></a><span class="lineno"> 9619</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09620"></a><span class="lineno"> 9620</span>&#160; ++(*this);</div>
<div class="line"><a name="l09621"></a><span class="lineno"> 9621</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l09622"></a><span class="lineno"> 9622</span>&#160; }</div>
<div class="line"><a name="l09623"></a><span class="lineno"> 9623</span>&#160; </div>
<div class="line"><a name="l09628"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#abdfe2a7f464400a7ab572782d14b922f"> 9628</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#abdfe2a7f464400a7ab572782d14b922f">operator++</a>()</div>
<div class="line"><a name="l09629"></a><span class="lineno"> 9629</span>&#160; {</div>
<div class="line"><a name="l09630"></a><span class="lineno"> 9630</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09631"></a><span class="lineno"> 9631</span>&#160; </div>
<div class="line"><a name="l09632"></a><span class="lineno"> 9632</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09633"></a><span class="lineno"> 9633</span>&#160; {</div>
<div class="line"><a name="l09634"></a><span class="lineno"> 9634</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09635"></a><span class="lineno"> 9635</span>&#160; {</div>
<div class="line"><a name="l09636"></a><span class="lineno"> 9636</span>&#160; std::advance(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>, 1);</div>
<div class="line"><a name="l09637"></a><span class="lineno"> 9637</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09638"></a><span class="lineno"> 9638</span>&#160; }</div>
<div class="line"><a name="l09639"></a><span class="lineno"> 9639</span>&#160; </div>
<div class="line"><a name="l09640"></a><span class="lineno"> 9640</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09641"></a><span class="lineno"> 9641</span>&#160; {</div>
<div class="line"><a name="l09642"></a><span class="lineno"> 9642</span>&#160; std::advance(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, 1);</div>
<div class="line"><a name="l09643"></a><span class="lineno"> 9643</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09644"></a><span class="lineno"> 9644</span>&#160; }</div>
<div class="line"><a name="l09645"></a><span class="lineno"> 9645</span>&#160; </div>
<div class="line"><a name="l09646"></a><span class="lineno"> 9646</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09647"></a><span class="lineno"> 9647</span>&#160; {</div>
<div class="line"><a name="l09648"></a><span class="lineno"> 9648</span>&#160; ++m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>;</div>
<div class="line"><a name="l09649"></a><span class="lineno"> 9649</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09650"></a><span class="lineno"> 9650</span>&#160; }</div>
<div class="line"><a name="l09651"></a><span class="lineno"> 9651</span>&#160; }</div>
<div class="line"><a name="l09652"></a><span class="lineno"> 9652</span>&#160; </div>
<div class="line"><a name="l09653"></a><span class="lineno"> 9653</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09654"></a><span class="lineno"> 9654</span>&#160; }</div>
<div class="line"><a name="l09655"></a><span class="lineno"> 9655</span>&#160; </div>
<div class="line"><a name="l09660"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#af91fb0bb9b2a2e96af030564ded2d92c"> 9660</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#af91fb0bb9b2a2e96af030564ded2d92c">operator--</a>(<span class="keywordtype">int</span>)</div>
<div class="line"><a name="l09661"></a><span class="lineno"> 9661</span>&#160; {</div>
<div class="line"><a name="l09662"></a><span class="lineno"> 9662</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09663"></a><span class="lineno"> 9663</span>&#160; --(*this);</div>
<div class="line"><a name="l09664"></a><span class="lineno"> 9664</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l09665"></a><span class="lineno"> 9665</span>&#160; }</div>
<div class="line"><a name="l09666"></a><span class="lineno"> 9666</span>&#160; </div>
<div class="line"><a name="l09671"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a84e689fb581d651d130039f7cb81494a"> 9671</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a84e689fb581d651d130039f7cb81494a">operator--</a>()</div>
<div class="line"><a name="l09672"></a><span class="lineno"> 9672</span>&#160; {</div>
<div class="line"><a name="l09673"></a><span class="lineno"> 9673</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09674"></a><span class="lineno"> 9674</span>&#160; </div>
<div class="line"><a name="l09675"></a><span class="lineno"> 9675</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09676"></a><span class="lineno"> 9676</span>&#160; {</div>
<div class="line"><a name="l09677"></a><span class="lineno"> 9677</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09678"></a><span class="lineno"> 9678</span>&#160; {</div>
<div class="line"><a name="l09679"></a><span class="lineno"> 9679</span>&#160; std::advance(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>, -1);</div>
<div class="line"><a name="l09680"></a><span class="lineno"> 9680</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09681"></a><span class="lineno"> 9681</span>&#160; }</div>
<div class="line"><a name="l09682"></a><span class="lineno"> 9682</span>&#160; </div>
<div class="line"><a name="l09683"></a><span class="lineno"> 9683</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09684"></a><span class="lineno"> 9684</span>&#160; {</div>
<div class="line"><a name="l09685"></a><span class="lineno"> 9685</span>&#160; std::advance(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, -1);</div>
<div class="line"><a name="l09686"></a><span class="lineno"> 9686</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09687"></a><span class="lineno"> 9687</span>&#160; }</div>
<div class="line"><a name="l09688"></a><span class="lineno"> 9688</span>&#160; </div>
<div class="line"><a name="l09689"></a><span class="lineno"> 9689</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09690"></a><span class="lineno"> 9690</span>&#160; {</div>
<div class="line"><a name="l09691"></a><span class="lineno"> 9691</span>&#160; --m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>;</div>
<div class="line"><a name="l09692"></a><span class="lineno"> 9692</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09693"></a><span class="lineno"> 9693</span>&#160; }</div>
<div class="line"><a name="l09694"></a><span class="lineno"> 9694</span>&#160; }</div>
<div class="line"><a name="l09695"></a><span class="lineno"> 9695</span>&#160; </div>
<div class="line"><a name="l09696"></a><span class="lineno"> 9696</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09697"></a><span class="lineno"> 9697</span>&#160; }</div>
<div class="line"><a name="l09698"></a><span class="lineno"> 9698</span>&#160; </div>
<div class="line"><a name="l09703"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a2b592605b63ae7f5401996ffa3b14393"> 9703</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2b592605b63ae7f5401996ffa3b14393">operator==</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; other)<span class="keyword"> const</span></div>
<div class="line"><a name="l09704"></a><span class="lineno"> 9704</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09705"></a><span class="lineno"> 9705</span>&#160; <span class="comment">// if objects are not the same, the comparison is undefined</span></div>
<div class="line"><a name="l09706"></a><span class="lineno"> 9706</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(m_object != other.m_object))</div>
<div class="line"><a name="l09707"></a><span class="lineno"> 9707</span>&#160; {</div>
<div class="line"><a name="l09708"></a><span class="lineno"> 9708</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(212, <span class="stringliteral">&quot;cannot compare iterators of different containers&quot;</span>));</div>
<div class="line"><a name="l09709"></a><span class="lineno"> 9709</span>&#160; }</div>
<div class="line"><a name="l09710"></a><span class="lineno"> 9710</span>&#160; </div>
<div class="line"><a name="l09711"></a><span class="lineno"> 9711</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09712"></a><span class="lineno"> 9712</span>&#160; </div>
<div class="line"><a name="l09713"></a><span class="lineno"> 9713</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09714"></a><span class="lineno"> 9714</span>&#160; {</div>
<div class="line"><a name="l09715"></a><span class="lineno"> 9715</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09716"></a><span class="lineno"> 9716</span>&#160; <span class="keywordflow">return</span> (m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> == other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>);</div>
<div class="line"><a name="l09717"></a><span class="lineno"> 9717</span>&#160; </div>
<div class="line"><a name="l09718"></a><span class="lineno"> 9718</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09719"></a><span class="lineno"> 9719</span>&#160; <span class="keywordflow">return</span> (m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> == other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>);</div>
<div class="line"><a name="l09720"></a><span class="lineno"> 9720</span>&#160; </div>
<div class="line"><a name="l09721"></a><span class="lineno"> 9721</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09722"></a><span class="lineno"> 9722</span>&#160; <span class="keywordflow">return</span> (m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> == other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>);</div>
<div class="line"><a name="l09723"></a><span class="lineno"> 9723</span>&#160; }</div>
<div class="line"><a name="l09724"></a><span class="lineno"> 9724</span>&#160; }</div>
<div class="line"><a name="l09725"></a><span class="lineno"> 9725</span>&#160; </div>
<div class="line"><a name="l09730"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#aeab0e2b5da70b3bdebecd5b1a6ee66a6"> 9730</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#aeab0e2b5da70b3bdebecd5b1a6ee66a6">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; other)<span class="keyword"> const</span></div>
<div class="line"><a name="l09731"></a><span class="lineno"> 9731</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09732"></a><span class="lineno"> 9732</span>&#160; <span class="keywordflow">return</span> not <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2b592605b63ae7f5401996ffa3b14393">operator==</a>(other);</div>
<div class="line"><a name="l09733"></a><span class="lineno"> 9733</span>&#160; }</div>
<div class="line"><a name="l09734"></a><span class="lineno"> 9734</span>&#160; </div>
<div class="line"><a name="l09739"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a0d14cd76203e00bdcef6a64a5d055cc7"> 9739</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a0d14cd76203e00bdcef6a64a5d055cc7">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; other)<span class="keyword"> const</span></div>
<div class="line"><a name="l09740"></a><span class="lineno"> 9740</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09741"></a><span class="lineno"> 9741</span>&#160; <span class="comment">// if objects are not the same, the comparison is undefined</span></div>
<div class="line"><a name="l09742"></a><span class="lineno"> 9742</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(m_object != other.m_object))</div>
<div class="line"><a name="l09743"></a><span class="lineno"> 9743</span>&#160; {</div>
<div class="line"><a name="l09744"></a><span class="lineno"> 9744</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(212, <span class="stringliteral">&quot;cannot compare iterators of different containers&quot;</span>));</div>
<div class="line"><a name="l09745"></a><span class="lineno"> 9745</span>&#160; }</div>
<div class="line"><a name="l09746"></a><span class="lineno"> 9746</span>&#160; </div>
<div class="line"><a name="l09747"></a><span class="lineno"> 9747</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09748"></a><span class="lineno"> 9748</span>&#160; </div>
<div class="line"><a name="l09749"></a><span class="lineno"> 9749</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09750"></a><span class="lineno"> 9750</span>&#160; {</div>
<div class="line"><a name="l09751"></a><span class="lineno"> 9751</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09752"></a><span class="lineno"> 9752</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(213, <span class="stringliteral">&quot;cannot compare order of object iterators&quot;</span>));</div>
<div class="line"><a name="l09753"></a><span class="lineno"> 9753</span>&#160; </div>
<div class="line"><a name="l09754"></a><span class="lineno"> 9754</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09755"></a><span class="lineno"> 9755</span>&#160; <span class="keywordflow">return</span> (m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> &lt; other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>);</div>
<div class="line"><a name="l09756"></a><span class="lineno"> 9756</span>&#160; </div>
<div class="line"><a name="l09757"></a><span class="lineno"> 9757</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09758"></a><span class="lineno"> 9758</span>&#160; <span class="keywordflow">return</span> (m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> &lt; other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>);</div>
<div class="line"><a name="l09759"></a><span class="lineno"> 9759</span>&#160; }</div>
<div class="line"><a name="l09760"></a><span class="lineno"> 9760</span>&#160; }</div>
<div class="line"><a name="l09761"></a><span class="lineno"> 9761</span>&#160; </div>
<div class="line"><a name="l09766"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#ac6f71b36d7c87e427d1fee83f2600fad"> 9766</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ac6f71b36d7c87e427d1fee83f2600fad">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; other)<span class="keyword"> const</span></div>
<div class="line"><a name="l09767"></a><span class="lineno"> 9767</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09768"></a><span class="lineno"> 9768</span>&#160; <span class="keywordflow">return</span> not other.operator &lt; (*this);</div>
<div class="line"><a name="l09769"></a><span class="lineno"> 9769</span>&#160; }</div>
<div class="line"><a name="l09770"></a><span class="lineno"> 9770</span>&#160; </div>
<div class="line"><a name="l09775"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#aaf3620b8dfa4bed8a9ac2b51dd55dbd7"> 9775</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#aaf3620b8dfa4bed8a9ac2b51dd55dbd7">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; other)<span class="keyword"> const</span></div>
<div class="line"><a name="l09776"></a><span class="lineno"> 9776</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09777"></a><span class="lineno"> 9777</span>&#160; <span class="keywordflow">return</span> not <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ac6f71b36d7c87e427d1fee83f2600fad">operator&lt;=</a>(other);</div>
<div class="line"><a name="l09778"></a><span class="lineno"> 9778</span>&#160; }</div>
<div class="line"><a name="l09779"></a><span class="lineno"> 9779</span>&#160; </div>
<div class="line"><a name="l09784"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a634f85da575cb60b012a687efa26e11a"> 9784</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a634f85da575cb60b012a687efa26e11a">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; other)<span class="keyword"> const</span></div>
<div class="line"><a name="l09785"></a><span class="lineno"> 9785</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09786"></a><span class="lineno"> 9786</span>&#160; <span class="keywordflow">return</span> not <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a0d14cd76203e00bdcef6a64a5d055cc7">operator&lt;</a>(other);</div>
<div class="line"><a name="l09787"></a><span class="lineno"> 9787</span>&#160; }</div>
<div class="line"><a name="l09788"></a><span class="lineno"> 9788</span>&#160; </div>
<div class="line"><a name="l09793"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a3eef94f9d167046e7f773aeb6b78090c"> 9793</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a3eef94f9d167046e7f773aeb6b78090c">operator+=</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> i)</div>
<div class="line"><a name="l09794"></a><span class="lineno"> 9794</span>&#160; {</div>
<div class="line"><a name="l09795"></a><span class="lineno"> 9795</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09796"></a><span class="lineno"> 9796</span>&#160; </div>
<div class="line"><a name="l09797"></a><span class="lineno"> 9797</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09798"></a><span class="lineno"> 9798</span>&#160; {</div>
<div class="line"><a name="l09799"></a><span class="lineno"> 9799</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09800"></a><span class="lineno"> 9800</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(209, <span class="stringliteral">&quot;cannot use offsets with object iterators&quot;</span>));</div>
<div class="line"><a name="l09801"></a><span class="lineno"> 9801</span>&#160; </div>
<div class="line"><a name="l09802"></a><span class="lineno"> 9802</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09803"></a><span class="lineno"> 9803</span>&#160; {</div>
<div class="line"><a name="l09804"></a><span class="lineno"> 9804</span>&#160; std::advance(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, i);</div>
<div class="line"><a name="l09805"></a><span class="lineno"> 9805</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09806"></a><span class="lineno"> 9806</span>&#160; }</div>
<div class="line"><a name="l09807"></a><span class="lineno"> 9807</span>&#160; </div>
<div class="line"><a name="l09808"></a><span class="lineno"> 9808</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09809"></a><span class="lineno"> 9809</span>&#160; {</div>
<div class="line"><a name="l09810"></a><span class="lineno"> 9810</span>&#160; m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> += i;</div>
<div class="line"><a name="l09811"></a><span class="lineno"> 9811</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l09812"></a><span class="lineno"> 9812</span>&#160; }</div>
<div class="line"><a name="l09813"></a><span class="lineno"> 9813</span>&#160; }</div>
<div class="line"><a name="l09814"></a><span class="lineno"> 9814</span>&#160; </div>
<div class="line"><a name="l09815"></a><span class="lineno"> 9815</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09816"></a><span class="lineno"> 9816</span>&#160; }</div>
<div class="line"><a name="l09817"></a><span class="lineno"> 9817</span>&#160; </div>
<div class="line"><a name="l09822"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#abcc9d51bc52f2e8483bbe4018f05e978"> 9822</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#abcc9d51bc52f2e8483bbe4018f05e978">operator-=</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> i)</div>
<div class="line"><a name="l09823"></a><span class="lineno"> 9823</span>&#160; {</div>
<div class="line"><a name="l09824"></a><span class="lineno"> 9824</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a3eef94f9d167046e7f773aeb6b78090c">operator+=</a>(-i);</div>
<div class="line"><a name="l09825"></a><span class="lineno"> 9825</span>&#160; }</div>
<div class="line"><a name="l09826"></a><span class="lineno"> 9826</span>&#160; </div>
<div class="line"><a name="l09831"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a8ef76aeb5a5032768f0f61f48ac189c0"> 9831</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a8ef76aeb5a5032768f0f61f48ac189c0">operator+</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> i)<span class="keyword"> const</span></div>
<div class="line"><a name="l09832"></a><span class="lineno"> 9832</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09833"></a><span class="lineno"> 9833</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09834"></a><span class="lineno"> 9834</span>&#160; result += i;</div>
<div class="line"><a name="l09835"></a><span class="lineno"> 9835</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l09836"></a><span class="lineno"> 9836</span>&#160; }</div>
<div class="line"><a name="l09837"></a><span class="lineno"> 9837</span>&#160; </div>
<div class="line"><a name="l09842"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a94108d1a7563e103534f23eb5c1ee175"> 9842</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a94108d1a7563e103534f23eb5c1ee175">operator+</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> i, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; it)</div>
<div class="line"><a name="l09843"></a><span class="lineno"> 9843</span>&#160; {</div>
<div class="line"><a name="l09844"></a><span class="lineno"> 9844</span>&#160; <span class="keyword">auto</span> result = it;</div>
<div class="line"><a name="l09845"></a><span class="lineno"> 9845</span>&#160; result += i;</div>
<div class="line"><a name="l09846"></a><span class="lineno"> 9846</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l09847"></a><span class="lineno"> 9847</span>&#160; }</div>
<div class="line"><a name="l09848"></a><span class="lineno"> 9848</span>&#160; </div>
<div class="line"><a name="l09853"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a0dd9c415b94a02ff2aa25da75e52da30"> 9853</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a0dd9c415b94a02ff2aa25da75e52da30">operator-</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> i)<span class="keyword"> const</span></div>
<div class="line"><a name="l09854"></a><span class="lineno"> 9854</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09855"></a><span class="lineno"> 9855</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l09856"></a><span class="lineno"> 9856</span>&#160; result -= i;</div>
<div class="line"><a name="l09857"></a><span class="lineno"> 9857</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l09858"></a><span class="lineno"> 9858</span>&#160; }</div>
<div class="line"><a name="l09859"></a><span class="lineno"> 9859</span>&#160; </div>
<div class="line"><a name="l09864"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a49bf3e708a9c1c88c415011735962d06"> 9864</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a49bf3e708a9c1c88c415011735962d06">operator-</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>&amp; other)<span class="keyword"> const</span></div>
<div class="line"><a name="l09865"></a><span class="lineno"> 9865</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09866"></a><span class="lineno"> 9866</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09867"></a><span class="lineno"> 9867</span>&#160; </div>
<div class="line"><a name="l09868"></a><span class="lineno"> 9868</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09869"></a><span class="lineno"> 9869</span>&#160; {</div>
<div class="line"><a name="l09870"></a><span class="lineno"> 9870</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09871"></a><span class="lineno"> 9871</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(209, <span class="stringliteral">&quot;cannot use offsets with object iterators&quot;</span>));</div>
<div class="line"><a name="l09872"></a><span class="lineno"> 9872</span>&#160; </div>
<div class="line"><a name="l09873"></a><span class="lineno"> 9873</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09874"></a><span class="lineno"> 9874</span>&#160; <span class="keywordflow">return</span> m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> - other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>;</div>
<div class="line"><a name="l09875"></a><span class="lineno"> 9875</span>&#160; </div>
<div class="line"><a name="l09876"></a><span class="lineno"> 9876</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09877"></a><span class="lineno"> 9877</span>&#160; <span class="keywordflow">return</span> m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> - other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>;</div>
<div class="line"><a name="l09878"></a><span class="lineno"> 9878</span>&#160; }</div>
<div class="line"><a name="l09879"></a><span class="lineno"> 9879</span>&#160; }</div>
<div class="line"><a name="l09880"></a><span class="lineno"> 9880</span>&#160; </div>
<div class="line"><a name="l09885"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#ac0b9276f1102ed4b9cd3f5f56287e3ce"> 9885</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce">reference</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ac0b9276f1102ed4b9cd3f5f56287e3ce">operator[]</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> n)<span class="keyword"> const</span></div>
<div class="line"><a name="l09886"></a><span class="lineno"> 9886</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09887"></a><span class="lineno"> 9887</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09888"></a><span class="lineno"> 9888</span>&#160; </div>
<div class="line"><a name="l09889"></a><span class="lineno"> 9889</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div>
<div class="line"><a name="l09890"></a><span class="lineno"> 9890</span>&#160; {</div>
<div class="line"><a name="l09891"></a><span class="lineno"> 9891</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l09892"></a><span class="lineno"> 9892</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(208, <span class="stringliteral">&quot;cannot use operator[] for object iterators&quot;</span>));</div>
<div class="line"><a name="l09893"></a><span class="lineno"> 9893</span>&#160; </div>
<div class="line"><a name="l09894"></a><span class="lineno"> 9894</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l09895"></a><span class="lineno"> 9895</span>&#160; <span class="keywordflow">return</span> *std::next(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, n);</div>
<div class="line"><a name="l09896"></a><span class="lineno"> 9896</span>&#160; </div>
<div class="line"><a name="l09897"></a><span class="lineno"> 9897</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l09898"></a><span class="lineno"> 9898</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(214, <span class="stringliteral">&quot;cannot get value&quot;</span>));</div>
<div class="line"><a name="l09899"></a><span class="lineno"> 9899</span>&#160; </div>
<div class="line"><a name="l09900"></a><span class="lineno"> 9900</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l09901"></a><span class="lineno"> 9901</span>&#160; {</div>
<div class="line"><a name="l09902"></a><span class="lineno"> 9902</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae952990886ca1756229f916661a8af81">get_value</a>() == -n))</div>
<div class="line"><a name="l09903"></a><span class="lineno"> 9903</span>&#160; {</div>
<div class="line"><a name="l09904"></a><span class="lineno"> 9904</span>&#160; <span class="keywordflow">return</span> *m_object;</div>
<div class="line"><a name="l09905"></a><span class="lineno"> 9905</span>&#160; }</div>
<div class="line"><a name="l09906"></a><span class="lineno"> 9906</span>&#160; </div>
<div class="line"><a name="l09907"></a><span class="lineno"> 9907</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(214, <span class="stringliteral">&quot;cannot get value&quot;</span>));</div>
<div class="line"><a name="l09908"></a><span class="lineno"> 9908</span>&#160; }</div>
<div class="line"><a name="l09909"></a><span class="lineno"> 9909</span>&#160; }</div>
<div class="line"><a name="l09910"></a><span class="lineno"> 9910</span>&#160; }</div>
<div class="line"><a name="l09911"></a><span class="lineno"> 9911</span>&#160; </div>
<div class="line"><a name="l09916"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a15dfb2744fed2ef40c12a9e9a20d6dbc"> 9916</a></span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a15dfb2744fed2ef40c12a9e9a20d6dbc">key</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l09917"></a><span class="lineno"> 9917</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09918"></a><span class="lineno"> 9918</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l09919"></a><span class="lineno"> 9919</span>&#160; </div>
<div class="line"><a name="l09920"></a><span class="lineno"> 9920</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(m_object-&gt;is_object()))</div>
<div class="line"><a name="l09921"></a><span class="lineno"> 9921</span>&#160; {</div>
<div class="line"><a name="l09922"></a><span class="lineno"> 9922</span>&#160; <span class="keywordflow">return</span> m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>-&gt;first;</div>
<div class="line"><a name="l09923"></a><span class="lineno"> 9923</span>&#160; }</div>
<div class="line"><a name="l09924"></a><span class="lineno"> 9924</span>&#160; </div>
<div class="line"><a name="l09925"></a><span class="lineno"> 9925</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(207, <span class="stringliteral">&quot;cannot use key() for non-object iterators&quot;</span>));</div>
<div class="line"><a name="l09926"></a><span class="lineno"> 9926</span>&#160; }</div>
<div class="line"><a name="l09927"></a><span class="lineno"> 9927</span>&#160; </div>
<div class="line"><a name="l09932"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#ab447c50354c6611fa2ae0100ac17845c"> 9932</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce">reference</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ab447c50354c6611fa2ae0100ac17845c">value</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l09933"></a><span class="lineno"> 9933</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l09934"></a><span class="lineno"> 9934</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5ca57856d9bba54a5fc51cee891de827">operator*</a>();</div>
<div class="line"><a name="l09935"></a><span class="lineno"> 9935</span>&#160; }</div>
<div class="line"><a name="l09936"></a><span class="lineno"> 9936</span>&#160; </div>
<div class="line"><a name="l09937"></a><span class="lineno"> 9937</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l09939"></a><span class="lineno"> 9939</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360">pointer</a> m_object = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l09941"></a><span class="lineno"> 9941</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html">internal_iterator&lt;typename std::remove_const&lt;BasicJsonType&gt;::type</a>&gt; m_it {};</div>
<div class="line"><a name="l09942"></a><span class="lineno"> 9942</span>&#160;};</div>
<div class="line"><a name="l09943"></a><span class="lineno"> 9943</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l09944"></a><span class="lineno"> 9944</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l09945"></a><span class="lineno"> 9945</span>&#160; </div>
<div class="line"><a name="l09946"></a><span class="lineno"> 9946</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/iteration_proxy.hpp&gt;</span></div>
<div class="line"><a name="l09947"></a><span class="lineno"> 9947</span>&#160; </div>
<div class="line"><a name="l09948"></a><span class="lineno"> 9948</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/json_reverse_iterator.hpp&gt;</span></div>
<div class="line"><a name="l09949"></a><span class="lineno"> 9949</span>&#160; </div>
<div class="line"><a name="l09950"></a><span class="lineno"> 9950</span>&#160; </div>
<div class="line"><a name="l09951"></a><span class="lineno"> 9951</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// ptrdiff_t</span></div>
<div class="line"><a name="l09952"></a><span class="lineno"> 9952</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// reverse_iterator</span></div>
<div class="line"><a name="l09953"></a><span class="lineno"> 9953</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// declval</span></div>
<div class="line"><a name="l09954"></a><span class="lineno"> 9954</span>&#160; </div>
<div class="line"><a name="l09955"></a><span class="lineno"> 9955</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l09956"></a><span class="lineno"> 9956</span>&#160;{</div>
<div class="line"><a name="l09957"></a><span class="lineno"> 9957</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l09958"></a><span class="lineno"> 9958</span>&#160;{</div>
<div class="line"><a name="l09960"></a><span class="lineno"> 9960</span>&#160;<span class="comment">// reverse_iterator //</span></div>
<div class="line"><a name="l09962"></a><span class="lineno"> 9962</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l09981"></a><span class="lineno"> 9981</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Base&gt;</div>
<div class="line"><a name="l09982"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html"> 9982</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> : <span class="keyword">public</span> std::reverse_iterator&lt;Base&gt;</div>
<div class="line"><a name="l09983"></a><span class="lineno"> 9983</span>&#160;{</div>
<div class="line"><a name="l09984"></a><span class="lineno"> 9984</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l09985"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45"> 9985</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> = std::ptrdiff_t;</div>
<div class="line"><a name="l09987"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395"> 9987</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a> = std::reverse_iterator&lt;Base&gt;;</div>
<div class="line"><a name="l09989"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1"> 9989</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1">reference</a> = <span class="keyword">typename</span> Base::reference;</div>
<div class="line"><a name="l09990"></a><span class="lineno"> 9990</span>&#160; </div>
<div class="line"><a name="l09992"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a0246de16ece16293f2917dfa5d96e278"> 9992</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a0246de16ece16293f2917dfa5d96e278">json_reverse_iterator</a>(<span class="keyword">const</span> <span class="keyword">typename</span> base_iterator::iterator_type&amp; it) noexcept</div>
<div class="line"><a name="l09993"></a><span class="lineno"> 9993</span>&#160; : <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a>(it) {}</div>
<div class="line"><a name="l09994"></a><span class="lineno"> 9994</span>&#160; </div>
<div class="line"><a name="l09996"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6c2d025530114ed989188e8adfc8467e"> 9996</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6c2d025530114ed989188e8adfc8467e">json_reverse_iterator</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a>&amp; it) noexcept : <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a>(it) {}</div>
<div class="line"><a name="l09997"></a><span class="lineno"> 9997</span>&#160; </div>
<div class="line"><a name="l09999"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a43dceb18497ff745d936068c77c8cd56"> 9999</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a43dceb18497ff745d936068c77c8cd56">operator++</a>(<span class="keywordtype">int</span>)</div>
<div class="line"><a name="l10000"></a><span class="lineno">10000</span>&#160; {</div>
<div class="line"><a name="l10001"></a><span class="lineno">10001</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a><span class="keyword">&gt;</span>(base_iterator::operator++(1));</div>
<div class="line"><a name="l10002"></a><span class="lineno">10002</span>&#160; }</div>
<div class="line"><a name="l10003"></a><span class="lineno">10003</span>&#160; </div>
<div class="line"><a name="l10005"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a26caf0069a50ce4ecb010a1453e883fc">10005</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a26caf0069a50ce4ecb010a1453e883fc">operator++</a>()</div>
<div class="line"><a name="l10006"></a><span class="lineno">10006</span>&#160; {</div>
<div class="line"><a name="l10007"></a><span class="lineno">10007</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp;<span class="keyword">&gt;</span>(base_iterator::operator++());</div>
<div class="line"><a name="l10008"></a><span class="lineno">10008</span>&#160; }</div>
<div class="line"><a name="l10009"></a><span class="lineno">10009</span>&#160; </div>
<div class="line"><a name="l10011"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a7bbf1ecd75b7a0a488608a2760237c9f">10011</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a7bbf1ecd75b7a0a488608a2760237c9f">operator--</a>(<span class="keywordtype">int</span>)</div>
<div class="line"><a name="l10012"></a><span class="lineno">10012</span>&#160; {</div>
<div class="line"><a name="l10013"></a><span class="lineno">10013</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a><span class="keyword">&gt;</span>(base_iterator::operator--(1));</div>
<div class="line"><a name="l10014"></a><span class="lineno">10014</span>&#160; }</div>
<div class="line"><a name="l10015"></a><span class="lineno">10015</span>&#160; </div>
<div class="line"><a name="l10017"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a2488d6a902103610943920ac49d12a04">10017</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a2488d6a902103610943920ac49d12a04">operator--</a>()</div>
<div class="line"><a name="l10018"></a><span class="lineno">10018</span>&#160; {</div>
<div class="line"><a name="l10019"></a><span class="lineno">10019</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp;<span class="keyword">&gt;</span>(base_iterator::operator--());</div>
<div class="line"><a name="l10020"></a><span class="lineno">10020</span>&#160; }</div>
<div class="line"><a name="l10021"></a><span class="lineno">10021</span>&#160; </div>
<div class="line"><a name="l10023"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a4e5d0a3bee433104ef87366e00536e01">10023</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a4e5d0a3bee433104ef87366e00536e01">operator+=</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> i)</div>
<div class="line"><a name="l10024"></a><span class="lineno">10024</span>&#160; {</div>
<div class="line"><a name="l10025"></a><span class="lineno">10025</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp;<span class="keyword">&gt;</span>(base_iterator::operator+=(i));</div>
<div class="line"><a name="l10026"></a><span class="lineno">10026</span>&#160; }</div>
<div class="line"><a name="l10027"></a><span class="lineno">10027</span>&#160; </div>
<div class="line"><a name="l10029"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aabf172b436988e2edde22f13f27caaed">10029</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aabf172b436988e2edde22f13f27caaed">operator+</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> i)<span class="keyword"> const</span></div>
<div class="line"><a name="l10030"></a><span class="lineno">10030</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10031"></a><span class="lineno">10031</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a><span class="keyword">&gt;</span>(base_iterator::operator+(i));</div>
<div class="line"><a name="l10032"></a><span class="lineno">10032</span>&#160; }</div>
<div class="line"><a name="l10033"></a><span class="lineno">10033</span>&#160; </div>
<div class="line"><a name="l10035"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a549c6eb10b6434eaf772f71d129a6d79">10035</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a549c6eb10b6434eaf772f71d129a6d79">operator-</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> i)<span class="keyword"> const</span></div>
<div class="line"><a name="l10036"></a><span class="lineno">10036</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10037"></a><span class="lineno">10037</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a><span class="keyword">&gt;</span>(base_iterator::operator-(i));</div>
<div class="line"><a name="l10038"></a><span class="lineno">10038</span>&#160; }</div>
<div class="line"><a name="l10039"></a><span class="lineno">10039</span>&#160; </div>
<div class="line"><a name="l10041"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aaaa6c0b1d74e74e35e5f7b56dfd6c5d1">10041</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aaaa6c0b1d74e74e35e5f7b56dfd6c5d1">operator-</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp; other)<span class="keyword"> const</span></div>
<div class="line"><a name="l10042"></a><span class="lineno">10042</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10043"></a><span class="lineno">10043</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a>(*<span class="keyword">this</span>) - <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a>(other);</div>
<div class="line"><a name="l10044"></a><span class="lineno">10044</span>&#160; }</div>
<div class="line"><a name="l10045"></a><span class="lineno">10045</span>&#160; </div>
<div class="line"><a name="l10047"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a8ed9e445e03c49c46612eb7f7d55bb61">10047</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1">reference</a> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a8ed9e445e03c49c46612eb7f7d55bb61">operator[]</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> n)<span class="keyword"> const</span></div>
<div class="line"><a name="l10048"></a><span class="lineno">10048</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10049"></a><span class="lineno">10049</span>&#160; <span class="keywordflow">return</span> *(this-&gt;<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aabf172b436988e2edde22f13f27caaed">operator+</a>(n));</div>
<div class="line"><a name="l10050"></a><span class="lineno">10050</span>&#160; }</div>
<div class="line"><a name="l10051"></a><span class="lineno">10051</span>&#160; </div>
<div class="line"><a name="l10053"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#adc648a641e8e9a1072c5abd56ad06401">10053</a></span>&#160; <span class="keyword">auto</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#adc648a641e8e9a1072c5abd56ad06401">key</a>() const -&gt; decltype(<a class="code" href="namespacestd.html">std</a>::declval&lt;Base&gt;().<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#adc648a641e8e9a1072c5abd56ad06401">key</a>())</div>
<div class="line"><a name="l10054"></a><span class="lineno">10054</span>&#160; {</div>
<div class="line"><a name="l10055"></a><span class="lineno">10055</span>&#160; <span class="keyword">auto</span> it = --this-&gt;base();</div>
<div class="line"><a name="l10056"></a><span class="lineno">10056</span>&#160; <span class="keywordflow">return</span> it.key();</div>
<div class="line"><a name="l10057"></a><span class="lineno">10057</span>&#160; }</div>
<div class="line"><a name="l10058"></a><span class="lineno">10058</span>&#160; </div>
<div class="line"><a name="l10060"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#ae22803d442d483041d17239615f83b58">10060</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1">reference</a> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#ae22803d442d483041d17239615f83b58">value</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l10061"></a><span class="lineno">10061</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10062"></a><span class="lineno">10062</span>&#160; <span class="keyword">auto</span> it = --this-&gt;base();</div>
<div class="line"><a name="l10063"></a><span class="lineno">10063</span>&#160; <span class="keywordflow">return</span> it.operator * ();</div>
<div class="line"><a name="l10064"></a><span class="lineno">10064</span>&#160; }</div>
<div class="line"><a name="l10065"></a><span class="lineno">10065</span>&#160;};</div>
<div class="line"><a name="l10066"></a><span class="lineno">10066</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l10067"></a><span class="lineno">10067</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l10068"></a><span class="lineno">10068</span>&#160; </div>
<div class="line"><a name="l10069"></a><span class="lineno">10069</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/iterators/primitive_iterator.hpp&gt;</span></div>
<div class="line"><a name="l10070"></a><span class="lineno">10070</span>&#160; </div>
<div class="line"><a name="l10071"></a><span class="lineno">10071</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/json_pointer.hpp&gt;</span></div>
<div class="line"><a name="l10072"></a><span class="lineno">10072</span>&#160; </div>
<div class="line"><a name="l10073"></a><span class="lineno">10073</span>&#160; </div>
<div class="line"><a name="l10074"></a><span class="lineno">10074</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span> <span class="comment">// all_of</span></div>
<div class="line"><a name="l10075"></a><span class="lineno">10075</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span> <span class="comment">// assert</span></div>
<div class="line"><a name="l10076"></a><span class="lineno">10076</span>&#160;<span class="preprocessor">#include &lt;cctype&gt;</span> <span class="comment">// isdigit</span></div>
<div class="line"><a name="l10077"></a><span class="lineno">10077</span>&#160;<span class="preprocessor">#include &lt;numeric&gt;</span> <span class="comment">// accumulate</span></div>
<div class="line"><a name="l10078"></a><span class="lineno">10078</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string</span></div>
<div class="line"><a name="l10079"></a><span class="lineno">10079</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// move</span></div>
<div class="line"><a name="l10080"></a><span class="lineno">10080</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span> <span class="comment">// vector</span></div>
<div class="line"><a name="l10081"></a><span class="lineno">10081</span>&#160; </div>
<div class="line"><a name="l10082"></a><span class="lineno">10082</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/exceptions.hpp&gt;</span></div>
<div class="line"><a name="l10083"></a><span class="lineno">10083</span>&#160; </div>
<div class="line"><a name="l10084"></a><span class="lineno">10084</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l10085"></a><span class="lineno">10085</span>&#160; </div>
<div class="line"><a name="l10086"></a><span class="lineno">10086</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/value_t.hpp&gt;</span></div>
<div class="line"><a name="l10087"></a><span class="lineno">10087</span>&#160; </div>
<div class="line"><a name="l10088"></a><span class="lineno">10088</span>&#160; </div>
<div class="line"><a name="l10089"></a><span class="lineno">10089</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l10090"></a><span class="lineno">10090</span>&#160;{</div>
<div class="line"><a name="l10091"></a><span class="lineno">10091</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l10092"></a><span class="lineno">10092</span>&#160;<span class="keyword">class </span>json_pointer</div>
<div class="line"><a name="l10093"></a><span class="lineno">10093</span>&#160;{</div>
<div class="line"><a name="l10094"></a><span class="lineno">10094</span>&#160; <span class="comment">// allow basic_json to access private members</span></div>
<div class="line"><a name="l10095"></a><span class="lineno">10095</span>&#160; <a class="code" href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f">NLOHMANN_BASIC_JSON_TPL_DECLARATION</a></div>
<div class="line"><a name="l10096"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#ada3100cdb8700566051828f1355fa745">10096</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>;</div>
<div class="line"><a name="l10097"></a><span class="lineno">10097</span>&#160; </div>
<div class="line"><a name="l10098"></a><span class="lineno">10098</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l10120"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">10120</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a>(<span class="keyword">const</span> std::string&amp; s = <span class="stringliteral">&quot;&quot;</span>)</div>
<div class="line"><a name="l10121"></a><span class="lineno">10121</span>&#160; : reference_tokens(split(s))</div>
<div class="line"><a name="l10122"></a><span class="lineno">10122</span>&#160; {}</div>
<div class="line"><a name="l10123"></a><span class="lineno">10123</span>&#160; </div>
<div class="line"><a name="l10138"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a3d4b15d32d096e3776c5d2c773b524f5">10138</a></span>&#160; std::string <a class="code" href="classnlohmann_1_1json__pointer.html#a3d4b15d32d096e3776c5d2c773b524f5">to_string</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l10139"></a><span class="lineno">10139</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10140"></a><span class="lineno">10140</span>&#160; <span class="keywordflow">return</span> std::accumulate(reference_tokens.begin(), reference_tokens.end(),</div>
<div class="line"><a name="l10141"></a><span class="lineno">10141</span>&#160; std::string{},</div>
<div class="line"><a name="l10142"></a><span class="lineno">10142</span>&#160; [](<span class="keyword">const</span> std::string &amp; a, <span class="keyword">const</span> std::string &amp; b)</div>
<div class="line"><a name="l10143"></a><span class="lineno">10143</span>&#160; {</div>
<div class="line"><a name="l10144"></a><span class="lineno">10144</span>&#160; return a + <span class="stringliteral">&quot;/&quot;</span> + escape(b);</div>
<div class="line"><a name="l10145"></a><span class="lineno">10145</span>&#160; });</div>
<div class="line"><a name="l10146"></a><span class="lineno">10146</span>&#160; }</div>
<div class="line"><a name="l10147"></a><span class="lineno">10147</span>&#160; </div>
<div class="line"><a name="l10149"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#ae9015c658f99cf3d48a8563accc79988">10149</a></span>&#160; <span class="keyword">operator</span> std::string()<span class="keyword"> const</span></div>
<div class="line"><a name="l10150"></a><span class="lineno">10150</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10151"></a><span class="lineno">10151</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a3d4b15d32d096e3776c5d2c773b524f5">to_string</a>();</div>
<div class="line"><a name="l10152"></a><span class="lineno">10152</span>&#160; }</div>
<div class="line"><a name="l10153"></a><span class="lineno">10153</span>&#160; </div>
<div class="line"><a name="l10170"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a7395bd0af29ac23fd3f21543c935cdfa">10170</a></span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; <a class="code" href="classnlohmann_1_1json__pointer.html#a7395bd0af29ac23fd3f21543c935cdfa">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; ptr)</div>
<div class="line"><a name="l10171"></a><span class="lineno">10171</span>&#160; {</div>
<div class="line"><a name="l10172"></a><span class="lineno">10172</span>&#160; reference_tokens.insert(reference_tokens.end(),</div>
<div class="line"><a name="l10173"></a><span class="lineno">10173</span>&#160; ptr.reference_tokens.begin(),</div>
<div class="line"><a name="l10174"></a><span class="lineno">10174</span>&#160; ptr.reference_tokens.end());</div>
<div class="line"><a name="l10175"></a><span class="lineno">10175</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l10176"></a><span class="lineno">10176</span>&#160; }</div>
<div class="line"><a name="l10177"></a><span class="lineno">10177</span>&#160; </div>
<div class="line"><a name="l10194"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#abdd21567b2b1d69329af0f520335e68b">10194</a></span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; <a class="code" href="classnlohmann_1_1json__pointer.html#abdd21567b2b1d69329af0f520335e68b">operator/=</a>(std::string token)</div>
<div class="line"><a name="l10195"></a><span class="lineno">10195</span>&#160; {</div>
<div class="line"><a name="l10196"></a><span class="lineno">10196</span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html#a697d12b5bd6205f8866691b166b7c7dc">push_back</a>(std::move(token));</div>
<div class="line"><a name="l10197"></a><span class="lineno">10197</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l10198"></a><span class="lineno">10198</span>&#160; }</div>
<div class="line"><a name="l10199"></a><span class="lineno">10199</span>&#160; </div>
<div class="line"><a name="l10216"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a64c8401529131bad1e486d91d703795f">10216</a></span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; <a class="code" href="classnlohmann_1_1json__pointer.html#a64c8401529131bad1e486d91d703795f">operator/=</a>(std::size_t array_index)</div>
<div class="line"><a name="l10217"></a><span class="lineno">10217</span>&#160; {</div>
<div class="line"><a name="l10218"></a><span class="lineno">10218</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span> /= <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(array_index);</div>
<div class="line"><a name="l10219"></a><span class="lineno">10219</span>&#160; }</div>
<div class="line"><a name="l10220"></a><span class="lineno">10220</span>&#160; </div>
<div class="line"><a name="l10236"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a90a11fe6c7f37b1746a3ff9cb24b0d53">10236</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <a class="code" href="classnlohmann_1_1json__pointer.html#a90a11fe6c7f37b1746a3ff9cb24b0d53">operator/</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; lhs,</div>
<div class="line"><a name="l10237"></a><span class="lineno">10237</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; rhs)</div>
<div class="line"><a name="l10238"></a><span class="lineno">10238</span>&#160; {</div>
<div class="line"><a name="l10239"></a><span class="lineno">10239</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a>(lhs) /= rhs;</div>
<div class="line"><a name="l10240"></a><span class="lineno">10240</span>&#160; }</div>
<div class="line"><a name="l10241"></a><span class="lineno">10241</span>&#160; </div>
<div class="line"><a name="l10257"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a926c9065dbed1bedc17857a813f7a46f">10257</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <a class="code" href="classnlohmann_1_1json__pointer.html#a926c9065dbed1bedc17857a813f7a46f">operator/</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; ptr, std::string token)</div>
<div class="line"><a name="l10258"></a><span class="lineno">10258</span>&#160; {</div>
<div class="line"><a name="l10259"></a><span class="lineno">10259</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a>(ptr) /= std::move(token);</div>
<div class="line"><a name="l10260"></a><span class="lineno">10260</span>&#160; }</div>
<div class="line"><a name="l10261"></a><span class="lineno">10261</span>&#160; </div>
<div class="line"><a name="l10277"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a9f6bc6f4d4668b4e9a19d8b8ac29da4f">10277</a></span>&#160; <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <a class="code" href="classnlohmann_1_1json__pointer.html#a9f6bc6f4d4668b4e9a19d8b8ac29da4f">operator/</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; ptr, std::size_t array_index)</div>
<div class="line"><a name="l10278"></a><span class="lineno">10278</span>&#160; {</div>
<div class="line"><a name="l10279"></a><span class="lineno">10279</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a>(ptr) /= array_index;</div>
<div class="line"><a name="l10280"></a><span class="lineno">10280</span>&#160; }</div>
<div class="line"><a name="l10281"></a><span class="lineno">10281</span>&#160; </div>
<div class="line"><a name="l10295"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#afdaacce1edb7145e0434e014f0e8685a">10295</a></span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <a class="code" href="classnlohmann_1_1json__pointer.html#afdaacce1edb7145e0434e014f0e8685a">parent_pointer</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l10296"></a><span class="lineno">10296</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10297"></a><span class="lineno">10297</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">empty</a>())</div>
<div class="line"><a name="l10298"></a><span class="lineno">10298</span>&#160; {</div>
<div class="line"><a name="l10299"></a><span class="lineno">10299</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l10300"></a><span class="lineno">10300</span>&#160; }</div>
<div class="line"><a name="l10301"></a><span class="lineno">10301</span>&#160; </div>
<div class="line"><a name="l10302"></a><span class="lineno">10302</span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> res = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l10303"></a><span class="lineno">10303</span>&#160; res.pop_back();</div>
<div class="line"><a name="l10304"></a><span class="lineno">10304</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l10305"></a><span class="lineno">10305</span>&#160; }</div>
<div class="line"><a name="l10306"></a><span class="lineno">10306</span>&#160; </div>
<div class="line"><a name="l10320"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a4b1ee4d511ca195bed896a3da47e264c">10320</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a4b1ee4d511ca195bed896a3da47e264c">pop_back</a>()</div>
<div class="line"><a name="l10321"></a><span class="lineno">10321</span>&#160; {</div>
<div class="line"><a name="l10322"></a><span class="lineno">10322</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<a class="code" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">empty</a>()))</div>
<div class="line"><a name="l10323"></a><span class="lineno">10323</span>&#160; {</div>
<div class="line"><a name="l10324"></a><span class="lineno">10324</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(405, <span class="stringliteral">&quot;JSON pointer has no parent&quot;</span>));</div>
<div class="line"><a name="l10325"></a><span class="lineno">10325</span>&#160; }</div>
<div class="line"><a name="l10326"></a><span class="lineno">10326</span>&#160; </div>
<div class="line"><a name="l10327"></a><span class="lineno">10327</span>&#160; reference_tokens.pop_back();</div>
<div class="line"><a name="l10328"></a><span class="lineno">10328</span>&#160; }</div>
<div class="line"><a name="l10329"></a><span class="lineno">10329</span>&#160; </div>
<div class="line"><a name="l10344"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a213bc67c32a30c68ac6bf06f5195d482">10344</a></span>&#160; <span class="keyword">const</span> std::string&amp; <a class="code" href="classnlohmann_1_1json__pointer.html#a213bc67c32a30c68ac6bf06f5195d482">back</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l10345"></a><span class="lineno">10345</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10346"></a><span class="lineno">10346</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<a class="code" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">empty</a>()))</div>
<div class="line"><a name="l10347"></a><span class="lineno">10347</span>&#160; {</div>
<div class="line"><a name="l10348"></a><span class="lineno">10348</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(405, <span class="stringliteral">&quot;JSON pointer has no parent&quot;</span>));</div>
<div class="line"><a name="l10349"></a><span class="lineno">10349</span>&#160; }</div>
<div class="line"><a name="l10350"></a><span class="lineno">10350</span>&#160; </div>
<div class="line"><a name="l10351"></a><span class="lineno">10351</span>&#160; <span class="keywordflow">return</span> reference_tokens.back();</div>
<div class="line"><a name="l10352"></a><span class="lineno">10352</span>&#160; }</div>
<div class="line"><a name="l10353"></a><span class="lineno">10353</span>&#160; </div>
<div class="line"><a name="l10366"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a697d12b5bd6205f8866691b166b7c7dc">10366</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a697d12b5bd6205f8866691b166b7c7dc">push_back</a>(<span class="keyword">const</span> std::string&amp; token)</div>
<div class="line"><a name="l10367"></a><span class="lineno">10367</span>&#160; {</div>
<div class="line"><a name="l10368"></a><span class="lineno">10368</span>&#160; reference_tokens.push_back(token);</div>
<div class="line"><a name="l10369"></a><span class="lineno">10369</span>&#160; }</div>
<div class="line"><a name="l10370"></a><span class="lineno">10370</span>&#160; </div>
<div class="line"><a name="l10372"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#ac228b13596d3c34185da9fe61b570194">10372</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1json__pointer.html#ac228b13596d3c34185da9fe61b570194">push_back</a>(std::string&amp;&amp; token)</div>
<div class="line"><a name="l10373"></a><span class="lineno">10373</span>&#160; {</div>
<div class="line"><a name="l10374"></a><span class="lineno">10374</span>&#160; reference_tokens.push_back(std::move(token));</div>
<div class="line"><a name="l10375"></a><span class="lineno">10375</span>&#160; }</div>
<div class="line"><a name="l10376"></a><span class="lineno">10376</span>&#160; </div>
<div class="line"><a name="l10391"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">10391</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">empty</a>() const noexcept</div>
<div class="line"><a name="l10392"></a><span class="lineno">10392</span>&#160; {</div>
<div class="line"><a name="l10393"></a><span class="lineno">10393</span>&#160; <span class="keywordflow">return</span> reference_tokens.empty();</div>
<div class="line"><a name="l10394"></a><span class="lineno">10394</span>&#160; }</div>
<div class="line"><a name="l10395"></a><span class="lineno">10395</span>&#160; </div>
<div class="line"><a name="l10396"></a><span class="lineno">10396</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l10404"></a><span class="lineno">10404</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> array_index(<span class="keyword">const</span> std::string&amp; s)</div>
<div class="line"><a name="l10405"></a><span class="lineno">10405</span>&#160; {</div>
<div class="line"><a name="l10406"></a><span class="lineno">10406</span>&#160; std::size_t processed_chars = 0;</div>
<div class="line"><a name="l10407"></a><span class="lineno">10407</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> res = std::stoi(s, &amp;processed_chars);</div>
<div class="line"><a name="l10408"></a><span class="lineno">10408</span>&#160; </div>
<div class="line"><a name="l10409"></a><span class="lineno">10409</span>&#160; <span class="comment">// check if the string was completely read</span></div>
<div class="line"><a name="l10410"></a><span class="lineno">10410</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(processed_chars != s.size()))</div>
<div class="line"><a name="l10411"></a><span class="lineno">10411</span>&#160; {</div>
<div class="line"><a name="l10412"></a><span class="lineno">10412</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(404, <span class="stringliteral">&quot;unresolved reference token &#39;&quot;</span> + s + <span class="stringliteral">&quot;&#39;&quot;</span>));</div>
<div class="line"><a name="l10413"></a><span class="lineno">10413</span>&#160; }</div>
<div class="line"><a name="l10414"></a><span class="lineno">10414</span>&#160; </div>
<div class="line"><a name="l10415"></a><span class="lineno">10415</span>&#160; <span class="keywordflow">return</span> res;</div>
<div class="line"><a name="l10416"></a><span class="lineno">10416</span>&#160; }</div>
<div class="line"><a name="l10417"></a><span class="lineno">10417</span>&#160; </div>
<div class="line"><a name="l10418"></a><span class="lineno">10418</span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a> top()<span class="keyword"> const</span></div>
<div class="line"><a name="l10419"></a><span class="lineno">10419</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10420"></a><span class="lineno">10420</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<a class="code" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">empty</a>()))</div>
<div class="line"><a name="l10421"></a><span class="lineno">10421</span>&#160; {</div>
<div class="line"><a name="l10422"></a><span class="lineno">10422</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(405, <span class="stringliteral">&quot;JSON pointer has no parent&quot;</span>));</div>
<div class="line"><a name="l10423"></a><span class="lineno">10423</span>&#160; }</div>
<div class="line"><a name="l10424"></a><span class="lineno">10424</span>&#160; </div>
<div class="line"><a name="l10425"></a><span class="lineno">10425</span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a> result = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l10426"></a><span class="lineno">10426</span>&#160; result.reference_tokens = {reference_tokens[0]};</div>
<div class="line"><a name="l10427"></a><span class="lineno">10427</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l10428"></a><span class="lineno">10428</span>&#160; }</div>
<div class="line"><a name="l10429"></a><span class="lineno">10429</span>&#160; </div>
<div class="line"><a name="l10438"></a><span class="lineno">10438</span>&#160; BasicJsonType&amp; get_and_create(BasicJsonType&amp; j)<span class="keyword"> const</span></div>
<div class="line"><a name="l10439"></a><span class="lineno">10439</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10440"></a><span class="lineno">10440</span>&#160; <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
<div class="line"><a name="l10441"></a><span class="lineno">10441</span>&#160; <span class="keyword">auto</span> result = &amp;j;</div>
<div class="line"><a name="l10442"></a><span class="lineno">10442</span>&#160; </div>
<div class="line"><a name="l10443"></a><span class="lineno">10443</span>&#160; <span class="comment">// in case no reference tokens exist, return a reference to the JSON value</span></div>
<div class="line"><a name="l10444"></a><span class="lineno">10444</span>&#160; <span class="comment">// j which will be overwritten by a primitive value</span></div>
<div class="line"><a name="l10445"></a><span class="lineno">10445</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; reference_token : reference_tokens)</div>
<div class="line"><a name="l10446"></a><span class="lineno">10446</span>&#160; {</div>
<div class="line"><a name="l10447"></a><span class="lineno">10447</span>&#160; <span class="keywordflow">switch</span> (result-&gt;type())</div>
<div class="line"><a name="l10448"></a><span class="lineno">10448</span>&#160; {</div>
<div class="line"><a name="l10449"></a><span class="lineno">10449</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">detail::value_t::null</a>:</div>
<div class="line"><a name="l10450"></a><span class="lineno">10450</span>&#160; {</div>
<div class="line"><a name="l10451"></a><span class="lineno">10451</span>&#160; <span class="keywordflow">if</span> (reference_token == <span class="stringliteral">&quot;0&quot;</span>)</div>
<div class="line"><a name="l10452"></a><span class="lineno">10452</span>&#160; {</div>
<div class="line"><a name="l10453"></a><span class="lineno">10453</span>&#160; <span class="comment">// start a new array if reference token is 0</span></div>
<div class="line"><a name="l10454"></a><span class="lineno">10454</span>&#160; result = &amp;result-&gt;operator[](0);</div>
<div class="line"><a name="l10455"></a><span class="lineno">10455</span>&#160; }</div>
<div class="line"><a name="l10456"></a><span class="lineno">10456</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l10457"></a><span class="lineno">10457</span>&#160; {</div>
<div class="line"><a name="l10458"></a><span class="lineno">10458</span>&#160; <span class="comment">// start a new object otherwise</span></div>
<div class="line"><a name="l10459"></a><span class="lineno">10459</span>&#160; result = &amp;result-&gt;operator[](reference_token);</div>
<div class="line"><a name="l10460"></a><span class="lineno">10460</span>&#160; }</div>
<div class="line"><a name="l10461"></a><span class="lineno">10461</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10462"></a><span class="lineno">10462</span>&#160; }</div>
<div class="line"><a name="l10463"></a><span class="lineno">10463</span>&#160; </div>
<div class="line"><a name="l10464"></a><span class="lineno">10464</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
<div class="line"><a name="l10465"></a><span class="lineno">10465</span>&#160; {</div>
<div class="line"><a name="l10466"></a><span class="lineno">10466</span>&#160; <span class="comment">// create an entry in the object</span></div>
<div class="line"><a name="l10467"></a><span class="lineno">10467</span>&#160; result = &amp;result-&gt;operator[](reference_token);</div>
<div class="line"><a name="l10468"></a><span class="lineno">10468</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10469"></a><span class="lineno">10469</span>&#160; }</div>
<div class="line"><a name="l10470"></a><span class="lineno">10470</span>&#160; </div>
<div class="line"><a name="l10471"></a><span class="lineno">10471</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
<div class="line"><a name="l10472"></a><span class="lineno">10472</span>&#160; {</div>
<div class="line"><a name="l10473"></a><span class="lineno">10473</span>&#160; <span class="comment">// create an entry in the array</span></div>
<div class="line"><a name="l10474"></a><span class="lineno">10474</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l10475"></a><span class="lineno">10475</span>&#160; {</div>
<div class="line"><a name="l10476"></a><span class="lineno">10476</span>&#160; result = &amp;result-&gt;operator[](<span class="keyword">static_cast&lt;</span>size_type<span class="keyword">&gt;</span>(array_index(reference_token)));</div>
<div class="line"><a name="l10477"></a><span class="lineno">10477</span>&#160; }</div>
<div class="line"><a name="l10478"></a><span class="lineno">10478</span>&#160; <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&amp;)</div>
<div class="line"><a name="l10479"></a><span class="lineno">10479</span>&#160; {</div>
<div class="line"><a name="l10480"></a><span class="lineno">10480</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token + <span class="stringliteral">&quot;&#39; is not a number&quot;</span>));</div>
<div class="line"><a name="l10481"></a><span class="lineno">10481</span>&#160; }</div>
<div class="line"><a name="l10482"></a><span class="lineno">10482</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10483"></a><span class="lineno">10483</span>&#160; }</div>
<div class="line"><a name="l10484"></a><span class="lineno">10484</span>&#160; </div>
<div class="line"><a name="l10485"></a><span class="lineno">10485</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l10486"></a><span class="lineno">10486</span>&#160;<span class="comment"> The following code is only reached if there exists a reference</span></div>
<div class="line"><a name="l10487"></a><span class="lineno">10487</span>&#160;<span class="comment"> token _and_ the current value is primitive. In this case, we have</span></div>
<div class="line"><a name="l10488"></a><span class="lineno">10488</span>&#160;<span class="comment"> an error situation, because primitive values may only occur as</span></div>
<div class="line"><a name="l10489"></a><span class="lineno">10489</span>&#160;<span class="comment"> single value; that is, with an empty list of reference tokens.</span></div>
<div class="line"><a name="l10490"></a><span class="lineno">10490</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l10491"></a><span class="lineno">10491</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l10492"></a><span class="lineno">10492</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">detail::type_error::create</a>(313, <span class="stringliteral">&quot;invalid value to unflatten&quot;</span>));</div>
<div class="line"><a name="l10493"></a><span class="lineno">10493</span>&#160; }</div>
<div class="line"><a name="l10494"></a><span class="lineno">10494</span>&#160; }</div>
<div class="line"><a name="l10495"></a><span class="lineno">10495</span>&#160; </div>
<div class="line"><a name="l10496"></a><span class="lineno">10496</span>&#160; <span class="keywordflow">return</span> *result;</div>
<div class="line"><a name="l10497"></a><span class="lineno">10497</span>&#160; }</div>
<div class="line"><a name="l10498"></a><span class="lineno">10498</span>&#160; </div>
<div class="line"><a name="l10518"></a><span class="lineno">10518</span>&#160; BasicJsonType&amp; get_unchecked(BasicJsonType* ptr)<span class="keyword"> const</span></div>
<div class="line"><a name="l10519"></a><span class="lineno">10519</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10520"></a><span class="lineno">10520</span>&#160; <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
<div class="line"><a name="l10521"></a><span class="lineno">10521</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; reference_token : reference_tokens)</div>
<div class="line"><a name="l10522"></a><span class="lineno">10522</span>&#160; {</div>
<div class="line"><a name="l10523"></a><span class="lineno">10523</span>&#160; <span class="comment">// convert null values to arrays or objects before continuing</span></div>
<div class="line"><a name="l10524"></a><span class="lineno">10524</span>&#160; <span class="keywordflow">if</span> (ptr-&gt;is_null())</div>
<div class="line"><a name="l10525"></a><span class="lineno">10525</span>&#160; {</div>
<div class="line"><a name="l10526"></a><span class="lineno">10526</span>&#160; <span class="comment">// check if reference token is a number</span></div>
<div class="line"><a name="l10527"></a><span class="lineno">10527</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> nums =</div>
<div class="line"><a name="l10528"></a><span class="lineno">10528</span>&#160; std::all_of(reference_token.begin(), reference_token.end(),</div>
<div class="line"><a name="l10529"></a><span class="lineno">10529</span>&#160; [](<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> x)</div>
<div class="line"><a name="l10530"></a><span class="lineno">10530</span>&#160; {</div>
<div class="line"><a name="l10531"></a><span class="lineno">10531</span>&#160; return std::isdigit(x);</div>
<div class="line"><a name="l10532"></a><span class="lineno">10532</span>&#160; });</div>
<div class="line"><a name="l10533"></a><span class="lineno">10533</span>&#160; </div>
<div class="line"><a name="l10534"></a><span class="lineno">10534</span>&#160; <span class="comment">// change value to array for numbers or &quot;-&quot; or to object otherwise</span></div>
<div class="line"><a name="l10535"></a><span class="lineno">10535</span>&#160; *ptr = (nums or reference_token == <span class="stringliteral">&quot;-&quot;</span>)</div>
<div class="line"><a name="l10536"></a><span class="lineno">10536</span>&#160; ? <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a></div>
<div class="line"><a name="l10537"></a><span class="lineno">10537</span>&#160; : <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>;</div>
<div class="line"><a name="l10538"></a><span class="lineno">10538</span>&#160; }</div>
<div class="line"><a name="l10539"></a><span class="lineno">10539</span>&#160; </div>
<div class="line"><a name="l10540"></a><span class="lineno">10540</span>&#160; <span class="keywordflow">switch</span> (ptr-&gt;type())</div>
<div class="line"><a name="l10541"></a><span class="lineno">10541</span>&#160; {</div>
<div class="line"><a name="l10542"></a><span class="lineno">10542</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
<div class="line"><a name="l10543"></a><span class="lineno">10543</span>&#160; {</div>
<div class="line"><a name="l10544"></a><span class="lineno">10544</span>&#160; <span class="comment">// use unchecked object access</span></div>
<div class="line"><a name="l10545"></a><span class="lineno">10545</span>&#160; ptr = &amp;ptr-&gt;operator[](reference_token);</div>
<div class="line"><a name="l10546"></a><span class="lineno">10546</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10547"></a><span class="lineno">10547</span>&#160; }</div>
<div class="line"><a name="l10548"></a><span class="lineno">10548</span>&#160; </div>
<div class="line"><a name="l10549"></a><span class="lineno">10549</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
<div class="line"><a name="l10550"></a><span class="lineno">10550</span>&#160; {</div>
<div class="line"><a name="l10551"></a><span class="lineno">10551</span>&#160; <span class="comment">// error condition (cf. RFC 6901, Sect. 4)</span></div>
<div class="line"><a name="l10552"></a><span class="lineno">10552</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token.size() &gt; 1 and reference_token[0] == <span class="charliteral">&#39;0&#39;</span>))</div>
<div class="line"><a name="l10553"></a><span class="lineno">10553</span>&#160; {</div>
<div class="line"><a name="l10554"></a><span class="lineno">10554</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(106, 0,</div>
<div class="line"><a name="l10555"></a><span class="lineno">10555</span>&#160; <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token +</div>
<div class="line"><a name="l10556"></a><span class="lineno">10556</span>&#160; <span class="stringliteral">&quot;&#39; must not begin with &#39;0&#39;&quot;</span>));</div>
<div class="line"><a name="l10557"></a><span class="lineno">10557</span>&#160; }</div>
<div class="line"><a name="l10558"></a><span class="lineno">10558</span>&#160; </div>
<div class="line"><a name="l10559"></a><span class="lineno">10559</span>&#160; <span class="keywordflow">if</span> (reference_token == <span class="stringliteral">&quot;-&quot;</span>)</div>
<div class="line"><a name="l10560"></a><span class="lineno">10560</span>&#160; {</div>
<div class="line"><a name="l10561"></a><span class="lineno">10561</span>&#160; <span class="comment">// explicitly treat &quot;-&quot; as index beyond the end</span></div>
<div class="line"><a name="l10562"></a><span class="lineno">10562</span>&#160; ptr = &amp;ptr-&gt;operator[](ptr-&gt;m_value.array-&gt;size());</div>
<div class="line"><a name="l10563"></a><span class="lineno">10563</span>&#160; }</div>
<div class="line"><a name="l10564"></a><span class="lineno">10564</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l10565"></a><span class="lineno">10565</span>&#160; {</div>
<div class="line"><a name="l10566"></a><span class="lineno">10566</span>&#160; <span class="comment">// convert array index to number; unchecked access</span></div>
<div class="line"><a name="l10567"></a><span class="lineno">10567</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l10568"></a><span class="lineno">10568</span>&#160; {</div>
<div class="line"><a name="l10569"></a><span class="lineno">10569</span>&#160; ptr = &amp;ptr-&gt;operator[](</div>
<div class="line"><a name="l10570"></a><span class="lineno">10570</span>&#160; <span class="keyword">static_cast&lt;</span>size_type<span class="keyword">&gt;</span>(array_index(reference_token)));</div>
<div class="line"><a name="l10571"></a><span class="lineno">10571</span>&#160; }</div>
<div class="line"><a name="l10572"></a><span class="lineno">10572</span>&#160; <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&amp;)</div>
<div class="line"><a name="l10573"></a><span class="lineno">10573</span>&#160; {</div>
<div class="line"><a name="l10574"></a><span class="lineno">10574</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token + <span class="stringliteral">&quot;&#39; is not a number&quot;</span>));</div>
<div class="line"><a name="l10575"></a><span class="lineno">10575</span>&#160; }</div>
<div class="line"><a name="l10576"></a><span class="lineno">10576</span>&#160; }</div>
<div class="line"><a name="l10577"></a><span class="lineno">10577</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10578"></a><span class="lineno">10578</span>&#160; }</div>
<div class="line"><a name="l10579"></a><span class="lineno">10579</span>&#160; </div>
<div class="line"><a name="l10580"></a><span class="lineno">10580</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l10581"></a><span class="lineno">10581</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(404, <span class="stringliteral">&quot;unresolved reference token &#39;&quot;</span> + reference_token + <span class="stringliteral">&quot;&#39;&quot;</span>));</div>
<div class="line"><a name="l10582"></a><span class="lineno">10582</span>&#160; }</div>
<div class="line"><a name="l10583"></a><span class="lineno">10583</span>&#160; }</div>
<div class="line"><a name="l10584"></a><span class="lineno">10584</span>&#160; </div>
<div class="line"><a name="l10585"></a><span class="lineno">10585</span>&#160; <span class="keywordflow">return</span> *ptr;</div>
<div class="line"><a name="l10586"></a><span class="lineno">10586</span>&#160; }</div>
<div class="line"><a name="l10587"></a><span class="lineno">10587</span>&#160; </div>
<div class="line"><a name="l10594"></a><span class="lineno">10594</span>&#160; BasicJsonType&amp; get_checked(BasicJsonType* ptr)<span class="keyword"> const</span></div>
<div class="line"><a name="l10595"></a><span class="lineno">10595</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10596"></a><span class="lineno">10596</span>&#160; <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
<div class="line"><a name="l10597"></a><span class="lineno">10597</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; reference_token : reference_tokens)</div>
<div class="line"><a name="l10598"></a><span class="lineno">10598</span>&#160; {</div>
<div class="line"><a name="l10599"></a><span class="lineno">10599</span>&#160; <span class="keywordflow">switch</span> (ptr-&gt;type())</div>
<div class="line"><a name="l10600"></a><span class="lineno">10600</span>&#160; {</div>
<div class="line"><a name="l10601"></a><span class="lineno">10601</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
<div class="line"><a name="l10602"></a><span class="lineno">10602</span>&#160; {</div>
<div class="line"><a name="l10603"></a><span class="lineno">10603</span>&#160; <span class="comment">// note: at performs range check</span></div>
<div class="line"><a name="l10604"></a><span class="lineno">10604</span>&#160; ptr = &amp;ptr-&gt;at(reference_token);</div>
<div class="line"><a name="l10605"></a><span class="lineno">10605</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10606"></a><span class="lineno">10606</span>&#160; }</div>
<div class="line"><a name="l10607"></a><span class="lineno">10607</span>&#160; </div>
<div class="line"><a name="l10608"></a><span class="lineno">10608</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
<div class="line"><a name="l10609"></a><span class="lineno">10609</span>&#160; {</div>
<div class="line"><a name="l10610"></a><span class="lineno">10610</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token == <span class="stringliteral">&quot;-&quot;</span>))</div>
<div class="line"><a name="l10611"></a><span class="lineno">10611</span>&#160; {</div>
<div class="line"><a name="l10612"></a><span class="lineno">10612</span>&#160; <span class="comment">// &quot;-&quot; always fails the range check</span></div>
<div class="line"><a name="l10613"></a><span class="lineno">10613</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(402,</div>
<div class="line"><a name="l10614"></a><span class="lineno">10614</span>&#160; <span class="stringliteral">&quot;array index &#39;-&#39; (&quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(ptr-&gt;m_value.array-&gt;size()) +</div>
<div class="line"><a name="l10615"></a><span class="lineno">10615</span>&#160; <span class="stringliteral">&quot;) is out of range&quot;</span>));</div>
<div class="line"><a name="l10616"></a><span class="lineno">10616</span>&#160; }</div>
<div class="line"><a name="l10617"></a><span class="lineno">10617</span>&#160; </div>
<div class="line"><a name="l10618"></a><span class="lineno">10618</span>&#160; <span class="comment">// error condition (cf. RFC 6901, Sect. 4)</span></div>
<div class="line"><a name="l10619"></a><span class="lineno">10619</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token.size() &gt; 1 and reference_token[0] == <span class="charliteral">&#39;0&#39;</span>))</div>
<div class="line"><a name="l10620"></a><span class="lineno">10620</span>&#160; {</div>
<div class="line"><a name="l10621"></a><span class="lineno">10621</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(106, 0,</div>
<div class="line"><a name="l10622"></a><span class="lineno">10622</span>&#160; <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token +</div>
<div class="line"><a name="l10623"></a><span class="lineno">10623</span>&#160; <span class="stringliteral">&quot;&#39; must not begin with &#39;0&#39;&quot;</span>));</div>
<div class="line"><a name="l10624"></a><span class="lineno">10624</span>&#160; }</div>
<div class="line"><a name="l10625"></a><span class="lineno">10625</span>&#160; </div>
<div class="line"><a name="l10626"></a><span class="lineno">10626</span>&#160; <span class="comment">// note: at performs range check</span></div>
<div class="line"><a name="l10627"></a><span class="lineno">10627</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l10628"></a><span class="lineno">10628</span>&#160; {</div>
<div class="line"><a name="l10629"></a><span class="lineno">10629</span>&#160; ptr = &amp;ptr-&gt;at(<span class="keyword">static_cast&lt;</span>size_type<span class="keyword">&gt;</span>(array_index(reference_token)));</div>
<div class="line"><a name="l10630"></a><span class="lineno">10630</span>&#160; }</div>
<div class="line"><a name="l10631"></a><span class="lineno">10631</span>&#160; <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&amp;)</div>
<div class="line"><a name="l10632"></a><span class="lineno">10632</span>&#160; {</div>
<div class="line"><a name="l10633"></a><span class="lineno">10633</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token + <span class="stringliteral">&quot;&#39; is not a number&quot;</span>));</div>
<div class="line"><a name="l10634"></a><span class="lineno">10634</span>&#160; }</div>
<div class="line"><a name="l10635"></a><span class="lineno">10635</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10636"></a><span class="lineno">10636</span>&#160; }</div>
<div class="line"><a name="l10637"></a><span class="lineno">10637</span>&#160; </div>
<div class="line"><a name="l10638"></a><span class="lineno">10638</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l10639"></a><span class="lineno">10639</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(404, <span class="stringliteral">&quot;unresolved reference token &#39;&quot;</span> + reference_token + <span class="stringliteral">&quot;&#39;&quot;</span>));</div>
<div class="line"><a name="l10640"></a><span class="lineno">10640</span>&#160; }</div>
<div class="line"><a name="l10641"></a><span class="lineno">10641</span>&#160; }</div>
<div class="line"><a name="l10642"></a><span class="lineno">10642</span>&#160; </div>
<div class="line"><a name="l10643"></a><span class="lineno">10643</span>&#160; <span class="keywordflow">return</span> *ptr;</div>
<div class="line"><a name="l10644"></a><span class="lineno">10644</span>&#160; }</div>
<div class="line"><a name="l10645"></a><span class="lineno">10645</span>&#160; </div>
<div class="line"><a name="l10659"></a><span class="lineno">10659</span>&#160; <span class="keyword">const</span> BasicJsonType&amp; get_unchecked(<span class="keyword">const</span> BasicJsonType* ptr)<span class="keyword"> const</span></div>
<div class="line"><a name="l10660"></a><span class="lineno">10660</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10661"></a><span class="lineno">10661</span>&#160; <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
<div class="line"><a name="l10662"></a><span class="lineno">10662</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; reference_token : reference_tokens)</div>
<div class="line"><a name="l10663"></a><span class="lineno">10663</span>&#160; {</div>
<div class="line"><a name="l10664"></a><span class="lineno">10664</span>&#160; <span class="keywordflow">switch</span> (ptr-&gt;type())</div>
<div class="line"><a name="l10665"></a><span class="lineno">10665</span>&#160; {</div>
<div class="line"><a name="l10666"></a><span class="lineno">10666</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
<div class="line"><a name="l10667"></a><span class="lineno">10667</span>&#160; {</div>
<div class="line"><a name="l10668"></a><span class="lineno">10668</span>&#160; <span class="comment">// use unchecked object access</span></div>
<div class="line"><a name="l10669"></a><span class="lineno">10669</span>&#160; ptr = &amp;ptr-&gt;operator[](reference_token);</div>
<div class="line"><a name="l10670"></a><span class="lineno">10670</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10671"></a><span class="lineno">10671</span>&#160; }</div>
<div class="line"><a name="l10672"></a><span class="lineno">10672</span>&#160; </div>
<div class="line"><a name="l10673"></a><span class="lineno">10673</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
<div class="line"><a name="l10674"></a><span class="lineno">10674</span>&#160; {</div>
<div class="line"><a name="l10675"></a><span class="lineno">10675</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token == <span class="stringliteral">&quot;-&quot;</span>))</div>
<div class="line"><a name="l10676"></a><span class="lineno">10676</span>&#160; {</div>
<div class="line"><a name="l10677"></a><span class="lineno">10677</span>&#160; <span class="comment">// &quot;-&quot; cannot be used for const access</span></div>
<div class="line"><a name="l10678"></a><span class="lineno">10678</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(402,</div>
<div class="line"><a name="l10679"></a><span class="lineno">10679</span>&#160; <span class="stringliteral">&quot;array index &#39;-&#39; (&quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(ptr-&gt;m_value.array-&gt;size()) +</div>
<div class="line"><a name="l10680"></a><span class="lineno">10680</span>&#160; <span class="stringliteral">&quot;) is out of range&quot;</span>));</div>
<div class="line"><a name="l10681"></a><span class="lineno">10681</span>&#160; }</div>
<div class="line"><a name="l10682"></a><span class="lineno">10682</span>&#160; </div>
<div class="line"><a name="l10683"></a><span class="lineno">10683</span>&#160; <span class="comment">// error condition (cf. RFC 6901, Sect. 4)</span></div>
<div class="line"><a name="l10684"></a><span class="lineno">10684</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token.size() &gt; 1 and reference_token[0] == <span class="charliteral">&#39;0&#39;</span>))</div>
<div class="line"><a name="l10685"></a><span class="lineno">10685</span>&#160; {</div>
<div class="line"><a name="l10686"></a><span class="lineno">10686</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(106, 0,</div>
<div class="line"><a name="l10687"></a><span class="lineno">10687</span>&#160; <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token +</div>
<div class="line"><a name="l10688"></a><span class="lineno">10688</span>&#160; <span class="stringliteral">&quot;&#39; must not begin with &#39;0&#39;&quot;</span>));</div>
<div class="line"><a name="l10689"></a><span class="lineno">10689</span>&#160; }</div>
<div class="line"><a name="l10690"></a><span class="lineno">10690</span>&#160; </div>
<div class="line"><a name="l10691"></a><span class="lineno">10691</span>&#160; <span class="comment">// use unchecked array access</span></div>
<div class="line"><a name="l10692"></a><span class="lineno">10692</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l10693"></a><span class="lineno">10693</span>&#160; {</div>
<div class="line"><a name="l10694"></a><span class="lineno">10694</span>&#160; ptr = &amp;ptr-&gt;operator[](</div>
<div class="line"><a name="l10695"></a><span class="lineno">10695</span>&#160; <span class="keyword">static_cast&lt;</span>size_type<span class="keyword">&gt;</span>(array_index(reference_token)));</div>
<div class="line"><a name="l10696"></a><span class="lineno">10696</span>&#160; }</div>
<div class="line"><a name="l10697"></a><span class="lineno">10697</span>&#160; <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&amp;)</div>
<div class="line"><a name="l10698"></a><span class="lineno">10698</span>&#160; {</div>
<div class="line"><a name="l10699"></a><span class="lineno">10699</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token + <span class="stringliteral">&quot;&#39; is not a number&quot;</span>));</div>
<div class="line"><a name="l10700"></a><span class="lineno">10700</span>&#160; }</div>
<div class="line"><a name="l10701"></a><span class="lineno">10701</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10702"></a><span class="lineno">10702</span>&#160; }</div>
<div class="line"><a name="l10703"></a><span class="lineno">10703</span>&#160; </div>
<div class="line"><a name="l10704"></a><span class="lineno">10704</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l10705"></a><span class="lineno">10705</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(404, <span class="stringliteral">&quot;unresolved reference token &#39;&quot;</span> + reference_token + <span class="stringliteral">&quot;&#39;&quot;</span>));</div>
<div class="line"><a name="l10706"></a><span class="lineno">10706</span>&#160; }</div>
<div class="line"><a name="l10707"></a><span class="lineno">10707</span>&#160; }</div>
<div class="line"><a name="l10708"></a><span class="lineno">10708</span>&#160; </div>
<div class="line"><a name="l10709"></a><span class="lineno">10709</span>&#160; <span class="keywordflow">return</span> *ptr;</div>
<div class="line"><a name="l10710"></a><span class="lineno">10710</span>&#160; }</div>
<div class="line"><a name="l10711"></a><span class="lineno">10711</span>&#160; </div>
<div class="line"><a name="l10718"></a><span class="lineno">10718</span>&#160; <span class="keyword">const</span> BasicJsonType&amp; get_checked(<span class="keyword">const</span> BasicJsonType* ptr)<span class="keyword"> const</span></div>
<div class="line"><a name="l10719"></a><span class="lineno">10719</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10720"></a><span class="lineno">10720</span>&#160; <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
<div class="line"><a name="l10721"></a><span class="lineno">10721</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; reference_token : reference_tokens)</div>
<div class="line"><a name="l10722"></a><span class="lineno">10722</span>&#160; {</div>
<div class="line"><a name="l10723"></a><span class="lineno">10723</span>&#160; <span class="keywordflow">switch</span> (ptr-&gt;type())</div>
<div class="line"><a name="l10724"></a><span class="lineno">10724</span>&#160; {</div>
<div class="line"><a name="l10725"></a><span class="lineno">10725</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
<div class="line"><a name="l10726"></a><span class="lineno">10726</span>&#160; {</div>
<div class="line"><a name="l10727"></a><span class="lineno">10727</span>&#160; <span class="comment">// note: at performs range check</span></div>
<div class="line"><a name="l10728"></a><span class="lineno">10728</span>&#160; ptr = &amp;ptr-&gt;at(reference_token);</div>
<div class="line"><a name="l10729"></a><span class="lineno">10729</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10730"></a><span class="lineno">10730</span>&#160; }</div>
<div class="line"><a name="l10731"></a><span class="lineno">10731</span>&#160; </div>
<div class="line"><a name="l10732"></a><span class="lineno">10732</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
<div class="line"><a name="l10733"></a><span class="lineno">10733</span>&#160; {</div>
<div class="line"><a name="l10734"></a><span class="lineno">10734</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token == <span class="stringliteral">&quot;-&quot;</span>))</div>
<div class="line"><a name="l10735"></a><span class="lineno">10735</span>&#160; {</div>
<div class="line"><a name="l10736"></a><span class="lineno">10736</span>&#160; <span class="comment">// &quot;-&quot; always fails the range check</span></div>
<div class="line"><a name="l10737"></a><span class="lineno">10737</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(402,</div>
<div class="line"><a name="l10738"></a><span class="lineno">10738</span>&#160; <span class="stringliteral">&quot;array index &#39;-&#39; (&quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(ptr-&gt;m_value.array-&gt;size()) +</div>
<div class="line"><a name="l10739"></a><span class="lineno">10739</span>&#160; <span class="stringliteral">&quot;) is out of range&quot;</span>));</div>
<div class="line"><a name="l10740"></a><span class="lineno">10740</span>&#160; }</div>
<div class="line"><a name="l10741"></a><span class="lineno">10741</span>&#160; </div>
<div class="line"><a name="l10742"></a><span class="lineno">10742</span>&#160; <span class="comment">// error condition (cf. RFC 6901, Sect. 4)</span></div>
<div class="line"><a name="l10743"></a><span class="lineno">10743</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token.size() &gt; 1 and reference_token[0] == <span class="charliteral">&#39;0&#39;</span>))</div>
<div class="line"><a name="l10744"></a><span class="lineno">10744</span>&#160; {</div>
<div class="line"><a name="l10745"></a><span class="lineno">10745</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(106, 0,</div>
<div class="line"><a name="l10746"></a><span class="lineno">10746</span>&#160; <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token +</div>
<div class="line"><a name="l10747"></a><span class="lineno">10747</span>&#160; <span class="stringliteral">&quot;&#39; must not begin with &#39;0&#39;&quot;</span>));</div>
<div class="line"><a name="l10748"></a><span class="lineno">10748</span>&#160; }</div>
<div class="line"><a name="l10749"></a><span class="lineno">10749</span>&#160; </div>
<div class="line"><a name="l10750"></a><span class="lineno">10750</span>&#160; <span class="comment">// note: at performs range check</span></div>
<div class="line"><a name="l10751"></a><span class="lineno">10751</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l10752"></a><span class="lineno">10752</span>&#160; {</div>
<div class="line"><a name="l10753"></a><span class="lineno">10753</span>&#160; ptr = &amp;ptr-&gt;at(<span class="keyword">static_cast&lt;</span>size_type<span class="keyword">&gt;</span>(array_index(reference_token)));</div>
<div class="line"><a name="l10754"></a><span class="lineno">10754</span>&#160; }</div>
<div class="line"><a name="l10755"></a><span class="lineno">10755</span>&#160; <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&amp;)</div>
<div class="line"><a name="l10756"></a><span class="lineno">10756</span>&#160; {</div>
<div class="line"><a name="l10757"></a><span class="lineno">10757</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token + <span class="stringliteral">&quot;&#39; is not a number&quot;</span>));</div>
<div class="line"><a name="l10758"></a><span class="lineno">10758</span>&#160; }</div>
<div class="line"><a name="l10759"></a><span class="lineno">10759</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10760"></a><span class="lineno">10760</span>&#160; }</div>
<div class="line"><a name="l10761"></a><span class="lineno">10761</span>&#160; </div>
<div class="line"><a name="l10762"></a><span class="lineno">10762</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l10763"></a><span class="lineno">10763</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(404, <span class="stringliteral">&quot;unresolved reference token &#39;&quot;</span> + reference_token + <span class="stringliteral">&quot;&#39;&quot;</span>));</div>
<div class="line"><a name="l10764"></a><span class="lineno">10764</span>&#160; }</div>
<div class="line"><a name="l10765"></a><span class="lineno">10765</span>&#160; }</div>
<div class="line"><a name="l10766"></a><span class="lineno">10766</span>&#160; </div>
<div class="line"><a name="l10767"></a><span class="lineno">10767</span>&#160; <span class="keywordflow">return</span> *ptr;</div>
<div class="line"><a name="l10768"></a><span class="lineno">10768</span>&#160; }</div>
<div class="line"><a name="l10769"></a><span class="lineno">10769</span>&#160; </div>
<div class="line"><a name="l10774"></a><span class="lineno">10774</span>&#160; <span class="keywordtype">bool</span> contains(<span class="keyword">const</span> BasicJsonType* ptr)<span class="keyword"> const</span></div>
<div class="line"><a name="l10775"></a><span class="lineno">10775</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l10776"></a><span class="lineno">10776</span>&#160; <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
<div class="line"><a name="l10777"></a><span class="lineno">10777</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; reference_token : reference_tokens)</div>
<div class="line"><a name="l10778"></a><span class="lineno">10778</span>&#160; {</div>
<div class="line"><a name="l10779"></a><span class="lineno">10779</span>&#160; <span class="keywordflow">switch</span> (ptr-&gt;type())</div>
<div class="line"><a name="l10780"></a><span class="lineno">10780</span>&#160; {</div>
<div class="line"><a name="l10781"></a><span class="lineno">10781</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
<div class="line"><a name="l10782"></a><span class="lineno">10782</span>&#160; {</div>
<div class="line"><a name="l10783"></a><span class="lineno">10783</span>&#160; <span class="keywordflow">if</span> (not ptr-&gt;contains(reference_token))</div>
<div class="line"><a name="l10784"></a><span class="lineno">10784</span>&#160; {</div>
<div class="line"><a name="l10785"></a><span class="lineno">10785</span>&#160; <span class="comment">// we did not find the key in the object</span></div>
<div class="line"><a name="l10786"></a><span class="lineno">10786</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l10787"></a><span class="lineno">10787</span>&#160; }</div>
<div class="line"><a name="l10788"></a><span class="lineno">10788</span>&#160; </div>
<div class="line"><a name="l10789"></a><span class="lineno">10789</span>&#160; ptr = &amp;ptr-&gt;operator[](reference_token);</div>
<div class="line"><a name="l10790"></a><span class="lineno">10790</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10791"></a><span class="lineno">10791</span>&#160; }</div>
<div class="line"><a name="l10792"></a><span class="lineno">10792</span>&#160; </div>
<div class="line"><a name="l10793"></a><span class="lineno">10793</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
<div class="line"><a name="l10794"></a><span class="lineno">10794</span>&#160; {</div>
<div class="line"><a name="l10795"></a><span class="lineno">10795</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token == <span class="stringliteral">&quot;-&quot;</span>))</div>
<div class="line"><a name="l10796"></a><span class="lineno">10796</span>&#160; {</div>
<div class="line"><a name="l10797"></a><span class="lineno">10797</span>&#160; <span class="comment">// &quot;-&quot; always fails the range check</span></div>
<div class="line"><a name="l10798"></a><span class="lineno">10798</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l10799"></a><span class="lineno">10799</span>&#160; }</div>
<div class="line"><a name="l10800"></a><span class="lineno">10800</span>&#160; </div>
<div class="line"><a name="l10801"></a><span class="lineno">10801</span>&#160; <span class="comment">// error condition (cf. RFC 6901, Sect. 4)</span></div>
<div class="line"><a name="l10802"></a><span class="lineno">10802</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token.size() &gt; 1 and reference_token[0] == <span class="charliteral">&#39;0&#39;</span>))</div>
<div class="line"><a name="l10803"></a><span class="lineno">10803</span>&#160; {</div>
<div class="line"><a name="l10804"></a><span class="lineno">10804</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(106, 0,</div>
<div class="line"><a name="l10805"></a><span class="lineno">10805</span>&#160; <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token +</div>
<div class="line"><a name="l10806"></a><span class="lineno">10806</span>&#160; <span class="stringliteral">&quot;&#39; must not begin with &#39;0&#39;&quot;</span>));</div>
<div class="line"><a name="l10807"></a><span class="lineno">10807</span>&#160; }</div>
<div class="line"><a name="l10808"></a><span class="lineno">10808</span>&#160; </div>
<div class="line"><a name="l10809"></a><span class="lineno">10809</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l10810"></a><span class="lineno">10810</span>&#160; {</div>
<div class="line"><a name="l10811"></a><span class="lineno">10811</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> idx = <span class="keyword">static_cast&lt;</span>size_type<span class="keyword">&gt;</span>(array_index(reference_token));</div>
<div class="line"><a name="l10812"></a><span class="lineno">10812</span>&#160; <span class="keywordflow">if</span> (idx &gt;= ptr-&gt;size())</div>
<div class="line"><a name="l10813"></a><span class="lineno">10813</span>&#160; {</div>
<div class="line"><a name="l10814"></a><span class="lineno">10814</span>&#160; <span class="comment">// index out of range</span></div>
<div class="line"><a name="l10815"></a><span class="lineno">10815</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l10816"></a><span class="lineno">10816</span>&#160; }</div>
<div class="line"><a name="l10817"></a><span class="lineno">10817</span>&#160; </div>
<div class="line"><a name="l10818"></a><span class="lineno">10818</span>&#160; ptr = &amp;ptr-&gt;operator[](idx);</div>
<div class="line"><a name="l10819"></a><span class="lineno">10819</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10820"></a><span class="lineno">10820</span>&#160; }</div>
<div class="line"><a name="l10821"></a><span class="lineno">10821</span>&#160; <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&amp;)</div>
<div class="line"><a name="l10822"></a><span class="lineno">10822</span>&#160; {</div>
<div class="line"><a name="l10823"></a><span class="lineno">10823</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">&quot;array index &#39;&quot;</span> + reference_token + <span class="stringliteral">&quot;&#39; is not a number&quot;</span>));</div>
<div class="line"><a name="l10824"></a><span class="lineno">10824</span>&#160; }</div>
<div class="line"><a name="l10825"></a><span class="lineno">10825</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10826"></a><span class="lineno">10826</span>&#160; }</div>
<div class="line"><a name="l10827"></a><span class="lineno">10827</span>&#160; </div>
<div class="line"><a name="l10828"></a><span class="lineno">10828</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l10829"></a><span class="lineno">10829</span>&#160; {</div>
<div class="line"><a name="l10830"></a><span class="lineno">10830</span>&#160; <span class="comment">// we do not expect primitive values if there is still a</span></div>
<div class="line"><a name="l10831"></a><span class="lineno">10831</span>&#160; <span class="comment">// reference token to process</span></div>
<div class="line"><a name="l10832"></a><span class="lineno">10832</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l10833"></a><span class="lineno">10833</span>&#160; }</div>
<div class="line"><a name="l10834"></a><span class="lineno">10834</span>&#160; }</div>
<div class="line"><a name="l10835"></a><span class="lineno">10835</span>&#160; }</div>
<div class="line"><a name="l10836"></a><span class="lineno">10836</span>&#160; </div>
<div class="line"><a name="l10837"></a><span class="lineno">10837</span>&#160; <span class="comment">// no reference token left means we found a primitive value</span></div>
<div class="line"><a name="l10838"></a><span class="lineno">10838</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l10839"></a><span class="lineno">10839</span>&#160; }</div>
<div class="line"><a name="l10840"></a><span class="lineno">10840</span>&#160; </div>
<div class="line"><a name="l10850"></a><span class="lineno">10850</span>&#160; <span class="keyword">static</span> std::vector&lt;std::string&gt; split(<span class="keyword">const</span> std::string&amp; reference_string)</div>
<div class="line"><a name="l10851"></a><span class="lineno">10851</span>&#160; {</div>
<div class="line"><a name="l10852"></a><span class="lineno">10852</span>&#160; std::vector&lt;std::string&gt; result;</div>
<div class="line"><a name="l10853"></a><span class="lineno">10853</span>&#160; </div>
<div class="line"><a name="l10854"></a><span class="lineno">10854</span>&#160; <span class="comment">// special case: empty reference string -&gt; no reference tokens</span></div>
<div class="line"><a name="l10855"></a><span class="lineno">10855</span>&#160; <span class="keywordflow">if</span> (reference_string.empty())</div>
<div class="line"><a name="l10856"></a><span class="lineno">10856</span>&#160; {</div>
<div class="line"><a name="l10857"></a><span class="lineno">10857</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l10858"></a><span class="lineno">10858</span>&#160; }</div>
<div class="line"><a name="l10859"></a><span class="lineno">10859</span>&#160; </div>
<div class="line"><a name="l10860"></a><span class="lineno">10860</span>&#160; <span class="comment">// check if nonempty reference string begins with slash</span></div>
<div class="line"><a name="l10861"></a><span class="lineno">10861</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_string[0] != <span class="charliteral">&#39;/&#39;</span>))</div>
<div class="line"><a name="l10862"></a><span class="lineno">10862</span>&#160; {</div>
<div class="line"><a name="l10863"></a><span class="lineno">10863</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(107, 1,</div>
<div class="line"><a name="l10864"></a><span class="lineno">10864</span>&#160; <span class="stringliteral">&quot;JSON pointer must be empty or begin with &#39;/&#39; - was: &#39;&quot;</span> +</div>
<div class="line"><a name="l10865"></a><span class="lineno">10865</span>&#160; reference_string + <span class="stringliteral">&quot;&#39;&quot;</span>));</div>
<div class="line"><a name="l10866"></a><span class="lineno">10866</span>&#160; }</div>
<div class="line"><a name="l10867"></a><span class="lineno">10867</span>&#160; </div>
<div class="line"><a name="l10868"></a><span class="lineno">10868</span>&#160; <span class="comment">// extract the reference tokens:</span></div>
<div class="line"><a name="l10869"></a><span class="lineno">10869</span>&#160; <span class="comment">// - slash: position of the last read slash (or end of string)</span></div>
<div class="line"><a name="l10870"></a><span class="lineno">10870</span>&#160; <span class="comment">// - start: position after the previous slash</span></div>
<div class="line"><a name="l10871"></a><span class="lineno">10871</span>&#160; <span class="keywordflow">for</span> (</div>
<div class="line"><a name="l10872"></a><span class="lineno">10872</span>&#160; <span class="comment">// search for the first slash after the first character</span></div>
<div class="line"><a name="l10873"></a><span class="lineno">10873</span>&#160; std::size_t slash = reference_string.find_first_of(<span class="charliteral">&#39;/&#39;</span>, 1),</div>
<div class="line"><a name="l10874"></a><span class="lineno">10874</span>&#160; <span class="comment">// set the beginning of the first reference token</span></div>
<div class="line"><a name="l10875"></a><span class="lineno">10875</span>&#160; start = 1;</div>
<div class="line"><a name="l10876"></a><span class="lineno">10876</span>&#160; <span class="comment">// we can stop if start == 0 (if slash == std::string::npos)</span></div>
<div class="line"><a name="l10877"></a><span class="lineno">10877</span>&#160; start != 0;</div>
<div class="line"><a name="l10878"></a><span class="lineno">10878</span>&#160; <span class="comment">// set the beginning of the next reference token</span></div>
<div class="line"><a name="l10879"></a><span class="lineno">10879</span>&#160; <span class="comment">// (will eventually be 0 if slash == std::string::npos)</span></div>
<div class="line"><a name="l10880"></a><span class="lineno">10880</span>&#160; start = (slash == std::string::npos) ? 0 : slash + 1,</div>
<div class="line"><a name="l10881"></a><span class="lineno">10881</span>&#160; <span class="comment">// find next slash</span></div>
<div class="line"><a name="l10882"></a><span class="lineno">10882</span>&#160; slash = reference_string.find_first_of(<span class="charliteral">&#39;/&#39;</span>, start))</div>
<div class="line"><a name="l10883"></a><span class="lineno">10883</span>&#160; {</div>
<div class="line"><a name="l10884"></a><span class="lineno">10884</span>&#160; <span class="comment">// use the text between the beginning of the reference token</span></div>
<div class="line"><a name="l10885"></a><span class="lineno">10885</span>&#160; <span class="comment">// (start) and the last slash (slash).</span></div>
<div class="line"><a name="l10886"></a><span class="lineno">10886</span>&#160; <span class="keyword">auto</span> reference_token = reference_string.substr(start, slash - start);</div>
<div class="line"><a name="l10887"></a><span class="lineno">10887</span>&#160; </div>
<div class="line"><a name="l10888"></a><span class="lineno">10888</span>&#160; <span class="comment">// check reference tokens are properly escaped</span></div>
<div class="line"><a name="l10889"></a><span class="lineno">10889</span>&#160; <span class="keywordflow">for</span> (std::size_t pos = reference_token.find_first_of(<span class="charliteral">&#39;~&#39;</span>);</div>
<div class="line"><a name="l10890"></a><span class="lineno">10890</span>&#160; pos != std::string::npos;</div>
<div class="line"><a name="l10891"></a><span class="lineno">10891</span>&#160; pos = reference_token.find_first_of(<span class="charliteral">&#39;~&#39;</span>, pos + 1))</div>
<div class="line"><a name="l10892"></a><span class="lineno">10892</span>&#160; {</div>
<div class="line"><a name="l10893"></a><span class="lineno">10893</span>&#160; assert(reference_token[pos] == <span class="charliteral">&#39;~&#39;</span>);</div>
<div class="line"><a name="l10894"></a><span class="lineno">10894</span>&#160; </div>
<div class="line"><a name="l10895"></a><span class="lineno">10895</span>&#160; <span class="comment">// ~ must be followed by 0 or 1</span></div>
<div class="line"><a name="l10896"></a><span class="lineno">10896</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(pos == reference_token.size() - 1 or</div>
<div class="line"><a name="l10897"></a><span class="lineno">10897</span>&#160; (reference_token[pos + 1] != <span class="charliteral">&#39;0&#39;</span> and</div>
<div class="line"><a name="l10898"></a><span class="lineno">10898</span>&#160; reference_token[pos + 1] != <span class="charliteral">&#39;1&#39;</span>)))</div>
<div class="line"><a name="l10899"></a><span class="lineno">10899</span>&#160; {</div>
<div class="line"><a name="l10900"></a><span class="lineno">10900</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(108, 0, <span class="stringliteral">&quot;escape character &#39;~&#39; must be followed with &#39;0&#39; or &#39;1&#39;&quot;</span>));</div>
<div class="line"><a name="l10901"></a><span class="lineno">10901</span>&#160; }</div>
<div class="line"><a name="l10902"></a><span class="lineno">10902</span>&#160; }</div>
<div class="line"><a name="l10903"></a><span class="lineno">10903</span>&#160; </div>
<div class="line"><a name="l10904"></a><span class="lineno">10904</span>&#160; <span class="comment">// finally, store the reference token</span></div>
<div class="line"><a name="l10905"></a><span class="lineno">10905</span>&#160; unescape(reference_token);</div>
<div class="line"><a name="l10906"></a><span class="lineno">10906</span>&#160; result.push_back(reference_token);</div>
<div class="line"><a name="l10907"></a><span class="lineno">10907</span>&#160; }</div>
<div class="line"><a name="l10908"></a><span class="lineno">10908</span>&#160; </div>
<div class="line"><a name="l10909"></a><span class="lineno">10909</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l10910"></a><span class="lineno">10910</span>&#160; }</div>
<div class="line"><a name="l10911"></a><span class="lineno">10911</span>&#160; </div>
<div class="line"><a name="l10925"></a><span class="lineno">10925</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> replace_substring(std::string&amp; s, <span class="keyword">const</span> std::string&amp; f,</div>
<div class="line"><a name="l10926"></a><span class="lineno">10926</span>&#160; <span class="keyword">const</span> std::string&amp; t)</div>
<div class="line"><a name="l10927"></a><span class="lineno">10927</span>&#160; {</div>
<div class="line"><a name="l10928"></a><span class="lineno">10928</span>&#160; assert(not f.empty());</div>
<div class="line"><a name="l10929"></a><span class="lineno">10929</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> pos = s.find(f); <span class="comment">// find first occurrence of f</span></div>
<div class="line"><a name="l10930"></a><span class="lineno">10930</span>&#160; pos != std::string::npos; <span class="comment">// make sure f was found</span></div>
<div class="line"><a name="l10931"></a><span class="lineno">10931</span>&#160; s.replace(pos, f.size(), t), <span class="comment">// replace with t, and</span></div>
<div class="line"><a name="l10932"></a><span class="lineno">10932</span>&#160; pos = s.find(f, pos + t.size())) <span class="comment">// find next occurrence of f</span></div>
<div class="line"><a name="l10933"></a><span class="lineno">10933</span>&#160; {}</div>
<div class="line"><a name="l10934"></a><span class="lineno">10934</span>&#160; }</div>
<div class="line"><a name="l10935"></a><span class="lineno">10935</span>&#160; </div>
<div class="line"><a name="l10937"></a><span class="lineno">10937</span>&#160; <span class="keyword">static</span> std::string escape(std::string s)</div>
<div class="line"><a name="l10938"></a><span class="lineno">10938</span>&#160; {</div>
<div class="line"><a name="l10939"></a><span class="lineno">10939</span>&#160; replace_substring(s, <span class="stringliteral">&quot;~&quot;</span>, <span class="stringliteral">&quot;~0&quot;</span>);</div>
<div class="line"><a name="l10940"></a><span class="lineno">10940</span>&#160; replace_substring(s, <span class="stringliteral">&quot;/&quot;</span>, <span class="stringliteral">&quot;~1&quot;</span>);</div>
<div class="line"><a name="l10941"></a><span class="lineno">10941</span>&#160; <span class="keywordflow">return</span> s;</div>
<div class="line"><a name="l10942"></a><span class="lineno">10942</span>&#160; }</div>
<div class="line"><a name="l10943"></a><span class="lineno">10943</span>&#160; </div>
<div class="line"><a name="l10945"></a><span class="lineno">10945</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> unescape(std::string&amp; s)</div>
<div class="line"><a name="l10946"></a><span class="lineno">10946</span>&#160; {</div>
<div class="line"><a name="l10947"></a><span class="lineno">10947</span>&#160; replace_substring(s, <span class="stringliteral">&quot;~1&quot;</span>, <span class="stringliteral">&quot;/&quot;</span>);</div>
<div class="line"><a name="l10948"></a><span class="lineno">10948</span>&#160; replace_substring(s, <span class="stringliteral">&quot;~0&quot;</span>, <span class="stringliteral">&quot;~&quot;</span>);</div>
<div class="line"><a name="l10949"></a><span class="lineno">10949</span>&#160; }</div>
<div class="line"><a name="l10950"></a><span class="lineno">10950</span>&#160; </div>
<div class="line"><a name="l10958"></a><span class="lineno">10958</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> flatten(<span class="keyword">const</span> std::string&amp; reference_string,</div>
<div class="line"><a name="l10959"></a><span class="lineno">10959</span>&#160; <span class="keyword">const</span> BasicJsonType&amp; value,</div>
<div class="line"><a name="l10960"></a><span class="lineno">10960</span>&#160; BasicJsonType&amp; result)</div>
<div class="line"><a name="l10961"></a><span class="lineno">10961</span>&#160; {</div>
<div class="line"><a name="l10962"></a><span class="lineno">10962</span>&#160; <span class="keywordflow">switch</span> (value.type())</div>
<div class="line"><a name="l10963"></a><span class="lineno">10963</span>&#160; {</div>
<div class="line"><a name="l10964"></a><span class="lineno">10964</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
<div class="line"><a name="l10965"></a><span class="lineno">10965</span>&#160; {</div>
<div class="line"><a name="l10966"></a><span class="lineno">10966</span>&#160; <span class="keywordflow">if</span> (value.m_value.array-&gt;empty())</div>
<div class="line"><a name="l10967"></a><span class="lineno">10967</span>&#160; {</div>
<div class="line"><a name="l10968"></a><span class="lineno">10968</span>&#160; <span class="comment">// flatten empty array as null</span></div>
<div class="line"><a name="l10969"></a><span class="lineno">10969</span>&#160; result[reference_string] = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l10970"></a><span class="lineno">10970</span>&#160; }</div>
<div class="line"><a name="l10971"></a><span class="lineno">10971</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l10972"></a><span class="lineno">10972</span>&#160; {</div>
<div class="line"><a name="l10973"></a><span class="lineno">10973</span>&#160; <span class="comment">// iterate array and use index as reference string</span></div>
<div class="line"><a name="l10974"></a><span class="lineno">10974</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; value.m_value.array-&gt;size(); ++i)</div>
<div class="line"><a name="l10975"></a><span class="lineno">10975</span>&#160; {</div>
<div class="line"><a name="l10976"></a><span class="lineno">10976</span>&#160; flatten(reference_string + <span class="stringliteral">&quot;/&quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(i),</div>
<div class="line"><a name="l10977"></a><span class="lineno">10977</span>&#160; value.m_value.array-&gt;operator[](i), result);</div>
<div class="line"><a name="l10978"></a><span class="lineno">10978</span>&#160; }</div>
<div class="line"><a name="l10979"></a><span class="lineno">10979</span>&#160; }</div>
<div class="line"><a name="l10980"></a><span class="lineno">10980</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10981"></a><span class="lineno">10981</span>&#160; }</div>
<div class="line"><a name="l10982"></a><span class="lineno">10982</span>&#160; </div>
<div class="line"><a name="l10983"></a><span class="lineno">10983</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
<div class="line"><a name="l10984"></a><span class="lineno">10984</span>&#160; {</div>
<div class="line"><a name="l10985"></a><span class="lineno">10985</span>&#160; <span class="keywordflow">if</span> (value.m_value.object-&gt;empty())</div>
<div class="line"><a name="l10986"></a><span class="lineno">10986</span>&#160; {</div>
<div class="line"><a name="l10987"></a><span class="lineno">10987</span>&#160; <span class="comment">// flatten empty object as null</span></div>
<div class="line"><a name="l10988"></a><span class="lineno">10988</span>&#160; result[reference_string] = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l10989"></a><span class="lineno">10989</span>&#160; }</div>
<div class="line"><a name="l10990"></a><span class="lineno">10990</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l10991"></a><span class="lineno">10991</span>&#160; {</div>
<div class="line"><a name="l10992"></a><span class="lineno">10992</span>&#160; <span class="comment">// iterate object and use keys as reference string</span></div>
<div class="line"><a name="l10993"></a><span class="lineno">10993</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; element : *value.m_value.object)</div>
<div class="line"><a name="l10994"></a><span class="lineno">10994</span>&#160; {</div>
<div class="line"><a name="l10995"></a><span class="lineno">10995</span>&#160; flatten(reference_string + <span class="stringliteral">&quot;/&quot;</span> + escape(element.first), element.second, result);</div>
<div class="line"><a name="l10996"></a><span class="lineno">10996</span>&#160; }</div>
<div class="line"><a name="l10997"></a><span class="lineno">10997</span>&#160; }</div>
<div class="line"><a name="l10998"></a><span class="lineno">10998</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l10999"></a><span class="lineno">10999</span>&#160; }</div>
<div class="line"><a name="l11000"></a><span class="lineno">11000</span>&#160; </div>
<div class="line"><a name="l11001"></a><span class="lineno">11001</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l11002"></a><span class="lineno">11002</span>&#160; {</div>
<div class="line"><a name="l11003"></a><span class="lineno">11003</span>&#160; <span class="comment">// add primitive value with its reference string</span></div>
<div class="line"><a name="l11004"></a><span class="lineno">11004</span>&#160; result[reference_string] = value;</div>
<div class="line"><a name="l11005"></a><span class="lineno">11005</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11006"></a><span class="lineno">11006</span>&#160; }</div>
<div class="line"><a name="l11007"></a><span class="lineno">11007</span>&#160; }</div>
<div class="line"><a name="l11008"></a><span class="lineno">11008</span>&#160; }</div>
<div class="line"><a name="l11009"></a><span class="lineno">11009</span>&#160; </div>
<div class="line"><a name="l11020"></a><span class="lineno">11020</span>&#160; <span class="keyword">static</span> BasicJsonType</div>
<div class="line"><a name="l11021"></a><span class="lineno">11021</span>&#160; unflatten(<span class="keyword">const</span> BasicJsonType&amp; value)</div>
<div class="line"><a name="l11022"></a><span class="lineno">11022</span>&#160; {</div>
<div class="line"><a name="l11023"></a><span class="lineno">11023</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not value.is_object()))</div>
<div class="line"><a name="l11024"></a><span class="lineno">11024</span>&#160; {</div>
<div class="line"><a name="l11025"></a><span class="lineno">11025</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">detail::type_error::create</a>(314, <span class="stringliteral">&quot;only objects can be unflattened&quot;</span>));</div>
<div class="line"><a name="l11026"></a><span class="lineno">11026</span>&#160; }</div>
<div class="line"><a name="l11027"></a><span class="lineno">11027</span>&#160; </div>
<div class="line"><a name="l11028"></a><span class="lineno">11028</span>&#160; BasicJsonType result;</div>
<div class="line"><a name="l11029"></a><span class="lineno">11029</span>&#160; </div>
<div class="line"><a name="l11030"></a><span class="lineno">11030</span>&#160; <span class="comment">// iterate the JSON object values</span></div>
<div class="line"><a name="l11031"></a><span class="lineno">11031</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; element : *value.m_value.object)</div>
<div class="line"><a name="l11032"></a><span class="lineno">11032</span>&#160; {</div>
<div class="line"><a name="l11033"></a><span class="lineno">11033</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not element.second.is_primitive()))</div>
<div class="line"><a name="l11034"></a><span class="lineno">11034</span>&#160; {</div>
<div class="line"><a name="l11035"></a><span class="lineno">11035</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">detail::type_error::create</a>(315, <span class="stringliteral">&quot;values in object must be primitive&quot;</span>));</div>
<div class="line"><a name="l11036"></a><span class="lineno">11036</span>&#160; }</div>
<div class="line"><a name="l11037"></a><span class="lineno">11037</span>&#160; </div>
<div class="line"><a name="l11038"></a><span class="lineno">11038</span>&#160; <span class="comment">// assign value to reference pointed to by JSON pointer; Note that if</span></div>
<div class="line"><a name="l11039"></a><span class="lineno">11039</span>&#160; <span class="comment">// the JSON pointer is &quot;&quot; (i.e., points to the whole value), function</span></div>
<div class="line"><a name="l11040"></a><span class="lineno">11040</span>&#160; <span class="comment">// get_and_create returns a reference to result itself. An assignment</span></div>
<div class="line"><a name="l11041"></a><span class="lineno">11041</span>&#160; <span class="comment">// will then create a primitive value.</span></div>
<div class="line"><a name="l11042"></a><span class="lineno">11042</span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a>(element.first).get_and_create(result) = element.second;</div>
<div class="line"><a name="l11043"></a><span class="lineno">11043</span>&#160; }</div>
<div class="line"><a name="l11044"></a><span class="lineno">11044</span>&#160; </div>
<div class="line"><a name="l11045"></a><span class="lineno">11045</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l11046"></a><span class="lineno">11046</span>&#160; }</div>
<div class="line"><a name="l11047"></a><span class="lineno">11047</span>&#160; </div>
<div class="line"><a name="l11059"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a4667ef558c8c3f8a646bfda0c6654653">11059</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a4667ef558c8c3f8a646bfda0c6654653">operator==</a>(<a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <span class="keyword">const</span>&amp; lhs,</div>
<div class="line"><a name="l11060"></a><span class="lineno">11060</span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <span class="keyword">const</span>&amp; rhs) noexcept</div>
<div class="line"><a name="l11061"></a><span class="lineno">11061</span>&#160; {</div>
<div class="line"><a name="l11062"></a><span class="lineno">11062</span>&#160; <span class="keywordflow">return</span> lhs.reference_tokens == rhs.reference_tokens;</div>
<div class="line"><a name="l11063"></a><span class="lineno">11063</span>&#160; }</div>
<div class="line"><a name="l11064"></a><span class="lineno">11064</span>&#160; </div>
<div class="line"><a name="l11076"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a6779edcf28e6f018a3bbb29c0b4b5e1e">11076</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a6779edcf28e6f018a3bbb29c0b4b5e1e">operator!=</a>(<a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <span class="keyword">const</span>&amp; lhs,</div>
<div class="line"><a name="l11077"></a><span class="lineno">11077</span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <span class="keyword">const</span>&amp; rhs) noexcept</div>
<div class="line"><a name="l11078"></a><span class="lineno">11078</span>&#160; {</div>
<div class="line"><a name="l11079"></a><span class="lineno">11079</span>&#160; <span class="keywordflow">return</span> not (lhs == rhs);</div>
<div class="line"><a name="l11080"></a><span class="lineno">11080</span>&#160; }</div>
<div class="line"><a name="l11081"></a><span class="lineno">11081</span>&#160; </div>
<div class="line"><a name="l11083"></a><span class="lineno">11083</span>&#160; std::vector&lt;std::string&gt; reference_tokens;</div>
<div class="line"><a name="l11084"></a><span class="lineno">11084</span>&#160;};</div>
<div class="line"><a name="l11085"></a><span class="lineno">11085</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l11086"></a><span class="lineno">11086</span>&#160; </div>
<div class="line"><a name="l11087"></a><span class="lineno">11087</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/json_ref.hpp&gt;</span></div>
<div class="line"><a name="l11088"></a><span class="lineno">11088</span>&#160; </div>
<div class="line"><a name="l11089"></a><span class="lineno">11089</span>&#160; </div>
<div class="line"><a name="l11090"></a><span class="lineno">11090</span>&#160;<span class="preprocessor">#include &lt;initializer_list&gt;</span></div>
<div class="line"><a name="l11091"></a><span class="lineno">11091</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a name="l11092"></a><span class="lineno">11092</span>&#160; </div>
<div class="line"><a name="l11093"></a><span class="lineno">11093</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/type_traits.hpp&gt;</span></div>
<div class="line"><a name="l11094"></a><span class="lineno">11094</span>&#160; </div>
<div class="line"><a name="l11095"></a><span class="lineno">11095</span>&#160; </div>
<div class="line"><a name="l11096"></a><span class="lineno">11096</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l11097"></a><span class="lineno">11097</span>&#160;{</div>
<div class="line"><a name="l11098"></a><span class="lineno">11098</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l11099"></a><span class="lineno">11099</span>&#160;{</div>
<div class="line"><a name="l11100"></a><span class="lineno">11100</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l11101"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html">11101</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a></div>
<div class="line"><a name="l11102"></a><span class="lineno">11102</span>&#160;{</div>
<div class="line"><a name="l11103"></a><span class="lineno">11103</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l11104"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">11104</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> = BasicJsonType;</div>
<div class="line"><a name="l11105"></a><span class="lineno">11105</span>&#160; </div>
<div class="line"><a name="l11106"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#ae1adf5bcee8b6fa0c358710604fb1938">11106</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#ae1adf5bcee8b6fa0c358710604fb1938">json_ref</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a>&amp;&amp; value)</div>
<div class="line"><a name="l11107"></a><span class="lineno">11107</span>&#160; : owned_value(<a class="code" href="namespacestd.html">std</a>::move(value)), value_ref(&amp;owned_value), is_rvalue(true)</div>
<div class="line"><a name="l11108"></a><span class="lineno">11108</span>&#160; {}</div>
<div class="line"><a name="l11109"></a><span class="lineno">11109</span>&#160; </div>
<div class="line"><a name="l11110"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#a8c3eb3c6e952ed0cd7eece586ab4047c">11110</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a8c3eb3c6e952ed0cd7eece586ab4047c">json_ref</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a>&amp; value)</div>
<div class="line"><a name="l11111"></a><span class="lineno">11111</span>&#160; : value_ref(const_cast&lt;<a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a>*&gt;(&amp;value)), is_rvalue(false)</div>
<div class="line"><a name="l11112"></a><span class="lineno">11112</span>&#160; {}</div>
<div class="line"><a name="l11113"></a><span class="lineno">11113</span>&#160; </div>
<div class="line"><a name="l11114"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#adfba2db547283a7c6a5df9a32e72efc5">11114</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#adfba2db547283a7c6a5df9a32e72efc5">json_ref</a>(std::initializer_list&lt;json_ref&gt; init)</div>
<div class="line"><a name="l11115"></a><span class="lineno">11115</span>&#160; : owned_value(init), value_ref(&amp;owned_value), is_rvalue(true)</div>
<div class="line"><a name="l11116"></a><span class="lineno">11116</span>&#160; {}</div>
<div class="line"><a name="l11117"></a><span class="lineno">11117</span>&#160; </div>
<div class="line"><a name="l11118"></a><span class="lineno">11118</span>&#160; <span class="keyword">template</span> &lt;</div>
<div class="line"><a name="l11119"></a><span class="lineno">11119</span>&#160; <span class="keyword">class</span>... Args,</div>
<div class="line"><a name="l11120"></a><span class="lineno">11120</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a>&lt;std::is_constructible&lt;<a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a>, Args...&gt;::value, <span class="keywordtype">int</span>&gt; = 0 &gt;</div>
<div class="line"><a name="l11121"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#a8a31d6c588d6c3c06b62008fd5d36c6c">11121</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a8a31d6c588d6c3c06b62008fd5d36c6c">json_ref</a>(Args &amp;&amp; ... args)</div>
<div class="line"><a name="l11122"></a><span class="lineno">11122</span>&#160; : owned_value(<a class="code" href="namespacestd.html">std</a>::forward&lt;Args&gt;(args)...), value_ref(&amp;owned_value),</div>
<div class="line"><a name="l11123"></a><span class="lineno">11123</span>&#160; is_rvalue(true) {}</div>
<div class="line"><a name="l11124"></a><span class="lineno">11124</span>&#160; </div>
<div class="line"><a name="l11125"></a><span class="lineno">11125</span>&#160; <span class="comment">// class should be movable only</span></div>
<div class="line"><a name="l11126"></a><span class="lineno">11126</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#ae1adf5bcee8b6fa0c358710604fb1938">json_ref</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l11127"></a><span class="lineno">11127</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#ae1adf5bcee8b6fa0c358710604fb1938">json_ref</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l11128"></a><span class="lineno">11128</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a98956ba676b1ae16b62346f9c4fb752e">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l11129"></a><span class="lineno">11129</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a98956ba676b1ae16b62346f9c4fb752e">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l11130"></a><span class="lineno">11130</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a8bcd4cfcafe952ce5140f8cb35ebe2f6">~json_ref</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l11131"></a><span class="lineno">11131</span>&#160; </div>
<div class="line"><a name="l11132"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#ae39e523218bf05cac3fb5b5b1cd5efb6">11132</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#ae39e523218bf05cac3fb5b5b1cd5efb6">moved_or_copied</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l11133"></a><span class="lineno">11133</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l11134"></a><span class="lineno">11134</span>&#160; <span class="keywordflow">if</span> (is_rvalue)</div>
<div class="line"><a name="l11135"></a><span class="lineno">11135</span>&#160; {</div>
<div class="line"><a name="l11136"></a><span class="lineno">11136</span>&#160; <span class="keywordflow">return</span> std::move(*value_ref);</div>
<div class="line"><a name="l11137"></a><span class="lineno">11137</span>&#160; }</div>
<div class="line"><a name="l11138"></a><span class="lineno">11138</span>&#160; <span class="keywordflow">return</span> *value_ref;</div>
<div class="line"><a name="l11139"></a><span class="lineno">11139</span>&#160; }</div>
<div class="line"><a name="l11140"></a><span class="lineno">11140</span>&#160; </div>
<div class="line"><a name="l11141"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#aa3100e41472dba02ab78ccc1607e44ab">11141</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> <span class="keyword">const</span>&amp; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#aa3100e41472dba02ab78ccc1607e44ab">operator*</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l11142"></a><span class="lineno">11142</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l11143"></a><span class="lineno">11143</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> const*<span class="keyword">&gt;</span>(value_ref);</div>
<div class="line"><a name="l11144"></a><span class="lineno">11144</span>&#160; }</div>
<div class="line"><a name="l11145"></a><span class="lineno">11145</span>&#160; </div>
<div class="line"><a name="l11146"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#adb652774a67829876449dc0b30637456">11146</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> <span class="keyword">const</span>* <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#adb652774a67829876449dc0b30637456">operator-&gt;</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l11147"></a><span class="lineno">11147</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l11148"></a><span class="lineno">11148</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> const*<span class="keyword">&gt;</span>(value_ref);</div>
<div class="line"><a name="l11149"></a><span class="lineno">11149</span>&#160; }</div>
<div class="line"><a name="l11150"></a><span class="lineno">11150</span>&#160; </div>
<div class="line"><a name="l11151"></a><span class="lineno">11151</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l11152"></a><span class="lineno">11152</span>&#160; <span class="keyword">mutable</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> owned_value = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l11153"></a><span class="lineno">11153</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a>* value_ref = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l11154"></a><span class="lineno">11154</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rvalue;</div>
<div class="line"><a name="l11155"></a><span class="lineno">11155</span>&#160;};</div>
<div class="line"><a name="l11156"></a><span class="lineno">11156</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l11157"></a><span class="lineno">11157</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l11158"></a><span class="lineno">11158</span>&#160; </div>
<div class="line"><a name="l11159"></a><span class="lineno">11159</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l11160"></a><span class="lineno">11160</span>&#160; </div>
<div class="line"><a name="l11161"></a><span class="lineno">11161</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/cpp_future.hpp&gt;</span></div>
<div class="line"><a name="l11162"></a><span class="lineno">11162</span>&#160; </div>
<div class="line"><a name="l11163"></a><span class="lineno">11163</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/type_traits.hpp&gt;</span></div>
<div class="line"><a name="l11164"></a><span class="lineno">11164</span>&#160; </div>
<div class="line"><a name="l11165"></a><span class="lineno">11165</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/output/binary_writer.hpp&gt;</span></div>
<div class="line"><a name="l11166"></a><span class="lineno">11166</span>&#160; </div>
<div class="line"><a name="l11167"></a><span class="lineno">11167</span>&#160; </div>
<div class="line"><a name="l11168"></a><span class="lineno">11168</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span> <span class="comment">// reverse</span></div>
<div class="line"><a name="l11169"></a><span class="lineno">11169</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span> <span class="comment">// array</span></div>
<div class="line"><a name="l11170"></a><span class="lineno">11170</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span> <span class="comment">// uint8_t, uint16_t, uint32_t, uint64_t</span></div>
<div class="line"><a name="l11171"></a><span class="lineno">11171</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span> <span class="comment">// memcpy</span></div>
<div class="line"><a name="l11172"></a><span class="lineno">11172</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span> <span class="comment">// numeric_limits</span></div>
<div class="line"><a name="l11173"></a><span class="lineno">11173</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string</span></div>
<div class="line"><a name="l11174"></a><span class="lineno">11174</span>&#160; </div>
<div class="line"><a name="l11175"></a><span class="lineno">11175</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/input/binary_reader.hpp&gt;</span></div>
<div class="line"><a name="l11176"></a><span class="lineno">11176</span>&#160; </div>
<div class="line"><a name="l11177"></a><span class="lineno">11177</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l11178"></a><span class="lineno">11178</span>&#160; </div>
<div class="line"><a name="l11179"></a><span class="lineno">11179</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/output/output_adapters.hpp&gt;</span></div>
<div class="line"><a name="l11180"></a><span class="lineno">11180</span>&#160; </div>
<div class="line"><a name="l11181"></a><span class="lineno">11181</span>&#160; </div>
<div class="line"><a name="l11182"></a><span class="lineno">11182</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span> <span class="comment">// copy</span></div>
<div class="line"><a name="l11183"></a><span class="lineno">11183</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// size_t</span></div>
<div class="line"><a name="l11184"></a><span class="lineno">11184</span>&#160;<span class="preprocessor">#include &lt;ios&gt;</span> <span class="comment">// streamsize</span></div>
<div class="line"><a name="l11185"></a><span class="lineno">11185</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// back_inserter</span></div>
<div class="line"><a name="l11186"></a><span class="lineno">11186</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span> <span class="comment">// shared_ptr, make_shared</span></div>
<div class="line"><a name="l11187"></a><span class="lineno">11187</span>&#160;<span class="preprocessor">#include &lt;ostream&gt;</span> <span class="comment">// basic_ostream</span></div>
<div class="line"><a name="l11188"></a><span class="lineno">11188</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// basic_string</span></div>
<div class="line"><a name="l11189"></a><span class="lineno">11189</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span> <span class="comment">// vector</span></div>
<div class="line"><a name="l11190"></a><span class="lineno">11190</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l11191"></a><span class="lineno">11191</span>&#160; </div>
<div class="line"><a name="l11192"></a><span class="lineno">11192</span>&#160; </div>
<div class="line"><a name="l11193"></a><span class="lineno">11193</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l11194"></a><span class="lineno">11194</span>&#160;{</div>
<div class="line"><a name="l11195"></a><span class="lineno">11195</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l11196"></a><span class="lineno">11196</span>&#160;{</div>
<div class="line"><a name="l11198"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">11198</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">output_adapter_protocol</a></div>
<div class="line"><a name="l11199"></a><span class="lineno">11199</span>&#160;{</div>
<div class="line"><a name="l11200"></a><span class="lineno">11200</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> write_character(CharType c) = 0;</div>
<div class="line"><a name="l11201"></a><span class="lineno">11201</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> write_characters(<span class="keyword">const</span> CharType* s, std::size_t length) = 0;</div>
<div class="line"><a name="l11202"></a><span class="lineno">11202</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">output_adapter_protocol</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l11203"></a><span class="lineno">11203</span>&#160;};</div>
<div class="line"><a name="l11204"></a><span class="lineno">11204</span>&#160; </div>
<div class="line"><a name="l11206"></a><span class="lineno">11206</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
<div class="line"><a name="l11207"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">11207</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t</a> = std::shared_ptr&lt;output_adapter_protocol&lt;CharType&gt;&gt;;</div>
<div class="line"><a name="l11208"></a><span class="lineno">11208</span>&#160; </div>
<div class="line"><a name="l11210"></a><span class="lineno">11210</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
<div class="line"><a name="l11211"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__vector__adapter.html">11211</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1output__vector__adapter.html">output_vector_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">output_adapter_protocol</a>&lt;CharType&gt;</div>
<div class="line"><a name="l11212"></a><span class="lineno">11212</span>&#160;{</div>
<div class="line"><a name="l11213"></a><span class="lineno">11213</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l11214"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__vector__adapter.html#a9c4fbf88fda356837038ec30a264cd3e">11214</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1output__vector__adapter.html#a9c4fbf88fda356837038ec30a264cd3e">output_vector_adapter</a>(std::vector&lt;CharType&gt;&amp; vec) noexcept</div>
<div class="line"><a name="l11215"></a><span class="lineno">11215</span>&#160; : v(vec)</div>
<div class="line"><a name="l11216"></a><span class="lineno">11216</span>&#160; {}</div>
<div class="line"><a name="l11217"></a><span class="lineno">11217</span>&#160; </div>
<div class="line"><a name="l11218"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__vector__adapter.html#af6a22d4210bb7bc2da66021300ddd6db">11218</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1output__vector__adapter.html#af6a22d4210bb7bc2da66021300ddd6db">write_character</a>(CharType c)<span class="keyword"> override</span></div>
<div class="line"><a name="l11219"></a><span class="lineno">11219</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l11220"></a><span class="lineno">11220</span>&#160; v.push_back(c);</div>
<div class="line"><a name="l11221"></a><span class="lineno">11221</span>&#160; }</div>
<div class="line"><a name="l11222"></a><span class="lineno">11222</span>&#160; </div>
<div class="line"><a name="l11223"></a><span class="lineno">11223</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l11224"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__vector__adapter.html#ad6f6c461dec7bedd5359454dc22fc9aa">11224</a></span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a> write_characters(const CharType* s, <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> length)<span class="keyword"> override</span></div>
<div class="line"><a name="l11225"></a><span class="lineno">11225</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l11226"></a><span class="lineno">11226</span>&#160; std::copy(s, s + length, std::back_inserter(v));</div>
<div class="line"><a name="l11227"></a><span class="lineno">11227</span>&#160; }</div>
<div class="line"><a name="l11228"></a><span class="lineno">11228</span>&#160; </div>
<div class="line"><a name="l11229"></a><span class="lineno">11229</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l11230"></a><span class="lineno">11230</span>&#160; std::vector&lt;CharType&gt;&amp; v;</div>
<div class="line"><a name="l11231"></a><span class="lineno">11231</span>&#160;};</div>
<div class="line"><a name="l11232"></a><span class="lineno">11232</span>&#160; </div>
<div class="line"><a name="l11234"></a><span class="lineno">11234</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
<div class="line"><a name="l11235"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__stream__adapter.html">11235</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1output__stream__adapter.html">output_stream_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">output_adapter_protocol</a>&lt;CharType&gt;</div>
<div class="line"><a name="l11236"></a><span class="lineno">11236</span>&#160;{</div>
<div class="line"><a name="l11237"></a><span class="lineno">11237</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l11238"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__stream__adapter.html#ae44ed343cb1a716248547f48dd045b6a">11238</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1output__stream__adapter.html#ae44ed343cb1a716248547f48dd045b6a">output_stream_adapter</a>(std::basic_ostream&lt;CharType&gt;&amp; s) noexcept</div>
<div class="line"><a name="l11239"></a><span class="lineno">11239</span>&#160; : stream(s)</div>
<div class="line"><a name="l11240"></a><span class="lineno">11240</span>&#160; {}</div>
<div class="line"><a name="l11241"></a><span class="lineno">11241</span>&#160; </div>
<div class="line"><a name="l11242"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__stream__adapter.html#a6e2698c76b200b2d8fac6cebfc43a245">11242</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1output__stream__adapter.html#a6e2698c76b200b2d8fac6cebfc43a245">write_character</a>(CharType c)<span class="keyword"> override</span></div>
<div class="line"><a name="l11243"></a><span class="lineno">11243</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l11244"></a><span class="lineno">11244</span>&#160; stream.put(c);</div>
<div class="line"><a name="l11245"></a><span class="lineno">11245</span>&#160; }</div>
<div class="line"><a name="l11246"></a><span class="lineno">11246</span>&#160; </div>
<div class="line"><a name="l11247"></a><span class="lineno">11247</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l11248"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__stream__adapter.html#ad61375497a7d03cb0bdcddfdaad185d0">11248</a></span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a> write_characters(const CharType* s, <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> length)<span class="keyword"> override</span></div>
<div class="line"><a name="l11249"></a><span class="lineno">11249</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l11250"></a><span class="lineno">11250</span>&#160; stream.write(s, <span class="keyword">static_cast&lt;</span>std::streamsize<span class="keyword">&gt;</span>(length));</div>
<div class="line"><a name="l11251"></a><span class="lineno">11251</span>&#160; }</div>
<div class="line"><a name="l11252"></a><span class="lineno">11252</span>&#160; </div>
<div class="line"><a name="l11253"></a><span class="lineno">11253</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l11254"></a><span class="lineno">11254</span>&#160; std::basic_ostream&lt;CharType&gt;&amp; stream;</div>
<div class="line"><a name="l11255"></a><span class="lineno">11255</span>&#160;};</div>
<div class="line"><a name="l11256"></a><span class="lineno">11256</span>&#160; </div>
<div class="line"><a name="l11258"></a><span class="lineno">11258</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType, <span class="keyword">typename</span> StringType = std::basic_<span class="keywordtype">string</span>&lt;CharType&gt;&gt;</div>
<div class="line"><a name="l11259"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__string__adapter.html">11259</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1output__string__adapter.html">output_string_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">output_adapter_protocol</a>&lt;CharType&gt;</div>
<div class="line"><a name="l11260"></a><span class="lineno">11260</span>&#160;{</div>
<div class="line"><a name="l11261"></a><span class="lineno">11261</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l11262"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__string__adapter.html#af3a49ecd0d23fe56ac21e13d8752abc7">11262</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1output__string__adapter.html#af3a49ecd0d23fe56ac21e13d8752abc7">output_string_adapter</a>(StringType&amp; s) noexcept</div>
<div class="line"><a name="l11263"></a><span class="lineno">11263</span>&#160; : str(s)</div>
<div class="line"><a name="l11264"></a><span class="lineno">11264</span>&#160; {}</div>
<div class="line"><a name="l11265"></a><span class="lineno">11265</span>&#160; </div>
<div class="line"><a name="l11266"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__string__adapter.html#a2d76cc6c88ddbc196a63fcfcac9ee7d1">11266</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1output__string__adapter.html#a2d76cc6c88ddbc196a63fcfcac9ee7d1">write_character</a>(CharType c)<span class="keyword"> override</span></div>
<div class="line"><a name="l11267"></a><span class="lineno">11267</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l11268"></a><span class="lineno">11268</span>&#160; str.push_back(c);</div>
<div class="line"><a name="l11269"></a><span class="lineno">11269</span>&#160; }</div>
<div class="line"><a name="l11270"></a><span class="lineno">11270</span>&#160; </div>
<div class="line"><a name="l11271"></a><span class="lineno">11271</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l11272"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__string__adapter.html#ab5ea4da075305d225dfd84ad997e8747">11272</a></span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a> write_characters(const CharType* s, <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> length)<span class="keyword"> override</span></div>
<div class="line"><a name="l11273"></a><span class="lineno">11273</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l11274"></a><span class="lineno">11274</span>&#160; str.append(s, length);</div>
<div class="line"><a name="l11275"></a><span class="lineno">11275</span>&#160; }</div>
<div class="line"><a name="l11276"></a><span class="lineno">11276</span>&#160; </div>
<div class="line"><a name="l11277"></a><span class="lineno">11277</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l11278"></a><span class="lineno">11278</span>&#160; StringType&amp; str;</div>
<div class="line"><a name="l11279"></a><span class="lineno">11279</span>&#160;};</div>
<div class="line"><a name="l11280"></a><span class="lineno">11280</span>&#160; </div>
<div class="line"><a name="l11281"></a><span class="lineno">11281</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType, <span class="keyword">typename</span> StringType = std::basic_<span class="keywordtype">string</span>&lt;CharType&gt;&gt;</div>
<div class="line"><a name="l11282"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__adapter.html">11282</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">output_adapter</a></div>
<div class="line"><a name="l11283"></a><span class="lineno">11283</span>&#160;{</div>
<div class="line"><a name="l11284"></a><span class="lineno">11284</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l11285"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__adapter.html#a05a30a77b568fd84676078d938cbd484">11285</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html#a05a30a77b568fd84676078d938cbd484">output_adapter</a>(std::vector&lt;CharType&gt;&amp; vec)</div>
<div class="line"><a name="l11286"></a><span class="lineno">11286</span>&#160; : oa(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;<a class="code" href="classnlohmann_1_1detail_1_1output__vector__adapter.html">output_vector_adapter</a>&lt;CharType&gt;&gt;(vec)) {}</div>
<div class="line"><a name="l11287"></a><span class="lineno">11287</span>&#160; </div>
<div class="line"><a name="l11288"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__adapter.html#a43b3ba852e6a2c3f4d312543bb04c00d">11288</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html#a43b3ba852e6a2c3f4d312543bb04c00d">output_adapter</a>(std::basic_ostream&lt;CharType&gt;&amp; s)</div>
<div class="line"><a name="l11289"></a><span class="lineno">11289</span>&#160; : oa(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;<a class="code" href="classnlohmann_1_1detail_1_1output__stream__adapter.html">output_stream_adapter</a>&lt;CharType&gt;&gt;(s)) {}</div>
<div class="line"><a name="l11290"></a><span class="lineno">11290</span>&#160; </div>
<div class="line"><a name="l11291"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__adapter.html#a6ad59d1ec534383b430cd7ef8a518539">11291</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html#a6ad59d1ec534383b430cd7ef8a518539">output_adapter</a>(StringType&amp; s)</div>
<div class="line"><a name="l11292"></a><span class="lineno">11292</span>&#160; : oa(<a class="code" href="namespacestd.html">std</a>::make_shared&lt;<a class="code" href="classnlohmann_1_1detail_1_1output__string__adapter.html">output_string_adapter</a>&lt;CharType, StringType&gt;&gt;(s)) {}</div>
<div class="line"><a name="l11293"></a><span class="lineno">11293</span>&#160; </div>
<div class="line"><a name="l11294"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__adapter.html#a5fdac7aec8ade2f4bb0b5df30550d90c">11294</a></span>&#160; <span class="keyword">operator</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t&lt;CharType&gt;</a>()</div>
<div class="line"><a name="l11295"></a><span class="lineno">11295</span>&#160; {</div>
<div class="line"><a name="l11296"></a><span class="lineno">11296</span>&#160; <span class="keywordflow">return</span> oa;</div>
<div class="line"><a name="l11297"></a><span class="lineno">11297</span>&#160; }</div>
<div class="line"><a name="l11298"></a><span class="lineno">11298</span>&#160; </div>
<div class="line"><a name="l11299"></a><span class="lineno">11299</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l11300"></a><span class="lineno">11300</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t&lt;CharType&gt;</a> oa = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l11301"></a><span class="lineno">11301</span>&#160;};</div>
<div class="line"><a name="l11302"></a><span class="lineno">11302</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l11303"></a><span class="lineno">11303</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l11304"></a><span class="lineno">11304</span>&#160; </div>
<div class="line"><a name="l11305"></a><span class="lineno">11305</span>&#160; </div>
<div class="line"><a name="l11306"></a><span class="lineno">11306</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l11307"></a><span class="lineno">11307</span>&#160;{</div>
<div class="line"><a name="l11308"></a><span class="lineno">11308</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l11309"></a><span class="lineno">11309</span>&#160;{</div>
<div class="line"><a name="l11311"></a><span class="lineno">11311</span>&#160;<span class="comment">// binary writer //</span></div>
<div class="line"><a name="l11313"></a><span class="lineno">11313</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l11317"></a><span class="lineno">11317</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CharType&gt;</div>
<div class="line"><a name="l11318"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html">11318</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer</a></div>
<div class="line"><a name="l11319"></a><span class="lineno">11319</span>&#160;{</div>
<div class="line"><a name="l11320"></a><span class="lineno">11320</span>&#160; <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l11321"></a><span class="lineno">11321</span>&#160; </div>
<div class="line"><a name="l11322"></a><span class="lineno">11322</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l11328"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#a373289af95a946c19bb4a58a5df71a78">11328</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a373289af95a946c19bb4a58a5df71a78">binary_writer</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t&lt;CharType&gt;</a> adapter) : oa(adapter)</div>
<div class="line"><a name="l11329"></a><span class="lineno">11329</span>&#160; {</div>
<div class="line"><a name="l11330"></a><span class="lineno">11330</span>&#160; assert(oa);</div>
<div class="line"><a name="l11331"></a><span class="lineno">11331</span>&#160; }</div>
<div class="line"><a name="l11332"></a><span class="lineno">11332</span>&#160; </div>
<div class="line"><a name="l11337"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#a9ffc566db5219b473762462234b47db9">11337</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a9ffc566db5219b473762462234b47db9">write_bson</a>(<span class="keyword">const</span> BasicJsonType&amp; j)</div>
<div class="line"><a name="l11338"></a><span class="lineno">11338</span>&#160; {</div>
<div class="line"><a name="l11339"></a><span class="lineno">11339</span>&#160; <span class="keywordflow">switch</span> (j.type())</div>
<div class="line"><a name="l11340"></a><span class="lineno">11340</span>&#160; {</div>
<div class="line"><a name="l11341"></a><span class="lineno">11341</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l11342"></a><span class="lineno">11342</span>&#160; {</div>
<div class="line"><a name="l11343"></a><span class="lineno">11343</span>&#160; write_bson_object(*j.m_value.object);</div>
<div class="line"><a name="l11344"></a><span class="lineno">11344</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11345"></a><span class="lineno">11345</span>&#160; }</div>
<div class="line"><a name="l11346"></a><span class="lineno">11346</span>&#160; </div>
<div class="line"><a name="l11347"></a><span class="lineno">11347</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l11348"></a><span class="lineno">11348</span>&#160; {</div>
<div class="line"><a name="l11349"></a><span class="lineno">11349</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(317, <span class="stringliteral">&quot;to serialize to BSON, top-level type must be object, but is &quot;</span> + std::string(j.type_name())));</div>
<div class="line"><a name="l11350"></a><span class="lineno">11350</span>&#160; }</div>
<div class="line"><a name="l11351"></a><span class="lineno">11351</span>&#160; }</div>
<div class="line"><a name="l11352"></a><span class="lineno">11352</span>&#160; }</div>
<div class="line"><a name="l11353"></a><span class="lineno">11353</span>&#160; </div>
<div class="line"><a name="l11357"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">11357</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(<span class="keyword">const</span> BasicJsonType&amp; j)</div>
<div class="line"><a name="l11358"></a><span class="lineno">11358</span>&#160; {</div>
<div class="line"><a name="l11359"></a><span class="lineno">11359</span>&#160; <span class="keywordflow">switch</span> (j.type())</div>
<div class="line"><a name="l11360"></a><span class="lineno">11360</span>&#160; {</div>
<div class="line"><a name="l11361"></a><span class="lineno">11361</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l11362"></a><span class="lineno">11362</span>&#160; {</div>
<div class="line"><a name="l11363"></a><span class="lineno">11363</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xF6));</div>
<div class="line"><a name="l11364"></a><span class="lineno">11364</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11365"></a><span class="lineno">11365</span>&#160; }</div>
<div class="line"><a name="l11366"></a><span class="lineno">11366</span>&#160; </div>
<div class="line"><a name="l11367"></a><span class="lineno">11367</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l11368"></a><span class="lineno">11368</span>&#160; {</div>
<div class="line"><a name="l11369"></a><span class="lineno">11369</span>&#160; oa-&gt;write_character(j.m_value.boolean</div>
<div class="line"><a name="l11370"></a><span class="lineno">11370</span>&#160; ? <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xF5)</div>
<div class="line"><a name="l11371"></a><span class="lineno">11371</span>&#160; : <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xF4));</div>
<div class="line"><a name="l11372"></a><span class="lineno">11372</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11373"></a><span class="lineno">11373</span>&#160; }</div>
<div class="line"><a name="l11374"></a><span class="lineno">11374</span>&#160; </div>
<div class="line"><a name="l11375"></a><span class="lineno">11375</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l11376"></a><span class="lineno">11376</span>&#160; {</div>
<div class="line"><a name="l11377"></a><span class="lineno">11377</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_integer &gt;= 0)</div>
<div class="line"><a name="l11378"></a><span class="lineno">11378</span>&#160; {</div>
<div class="line"><a name="l11379"></a><span class="lineno">11379</span>&#160; <span class="comment">// CBOR does not differentiate between positive signed</span></div>
<div class="line"><a name="l11380"></a><span class="lineno">11380</span>&#160; <span class="comment">// integers and unsigned integers. Therefore, we used the</span></div>
<div class="line"><a name="l11381"></a><span class="lineno">11381</span>&#160; <span class="comment">// code from the value_t::number_unsigned case here.</span></div>
<div class="line"><a name="l11382"></a><span class="lineno">11382</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_integer &lt;= 0x17)</div>
<div class="line"><a name="l11383"></a><span class="lineno">11383</span>&#160; {</div>
<div class="line"><a name="l11384"></a><span class="lineno">11384</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11385"></a><span class="lineno">11385</span>&#160; }</div>
<div class="line"><a name="l11386"></a><span class="lineno">11386</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l11387"></a><span class="lineno">11387</span>&#160; {</div>
<div class="line"><a name="l11388"></a><span class="lineno">11388</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x18));</div>
<div class="line"><a name="l11389"></a><span class="lineno">11389</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11390"></a><span class="lineno">11390</span>&#160; }</div>
<div class="line"><a name="l11391"></a><span class="lineno">11391</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11392"></a><span class="lineno">11392</span>&#160; {</div>
<div class="line"><a name="l11393"></a><span class="lineno">11393</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x19));</div>
<div class="line"><a name="l11394"></a><span class="lineno">11394</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11395"></a><span class="lineno">11395</span>&#160; }</div>
<div class="line"><a name="l11396"></a><span class="lineno">11396</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11397"></a><span class="lineno">11397</span>&#160; {</div>
<div class="line"><a name="l11398"></a><span class="lineno">11398</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x1A));</div>
<div class="line"><a name="l11399"></a><span class="lineno">11399</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11400"></a><span class="lineno">11400</span>&#160; }</div>
<div class="line"><a name="l11401"></a><span class="lineno">11401</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l11402"></a><span class="lineno">11402</span>&#160; {</div>
<div class="line"><a name="l11403"></a><span class="lineno">11403</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x1B));</div>
<div class="line"><a name="l11404"></a><span class="lineno">11404</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11405"></a><span class="lineno">11405</span>&#160; }</div>
<div class="line"><a name="l11406"></a><span class="lineno">11406</span>&#160; }</div>
<div class="line"><a name="l11407"></a><span class="lineno">11407</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l11408"></a><span class="lineno">11408</span>&#160; {</div>
<div class="line"><a name="l11409"></a><span class="lineno">11409</span>&#160; <span class="comment">// The conversions below encode the sign in the first</span></div>
<div class="line"><a name="l11410"></a><span class="lineno">11410</span>&#160; <span class="comment">// byte, and the value is converted to a positive number.</span></div>
<div class="line"><a name="l11411"></a><span class="lineno">11411</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> positive_number = -1 - j.m_value.number_integer;</div>
<div class="line"><a name="l11412"></a><span class="lineno">11412</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_integer &gt;= -24)</div>
<div class="line"><a name="l11413"></a><span class="lineno">11413</span>&#160; {</div>
<div class="line"><a name="l11414"></a><span class="lineno">11414</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(0x20 + positive_number));</div>
<div class="line"><a name="l11415"></a><span class="lineno">11415</span>&#160; }</div>
<div class="line"><a name="l11416"></a><span class="lineno">11416</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (positive_number &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l11417"></a><span class="lineno">11417</span>&#160; {</div>
<div class="line"><a name="l11418"></a><span class="lineno">11418</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x38));</div>
<div class="line"><a name="l11419"></a><span class="lineno">11419</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(positive_number));</div>
<div class="line"><a name="l11420"></a><span class="lineno">11420</span>&#160; }</div>
<div class="line"><a name="l11421"></a><span class="lineno">11421</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (positive_number &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11422"></a><span class="lineno">11422</span>&#160; {</div>
<div class="line"><a name="l11423"></a><span class="lineno">11423</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x39));</div>
<div class="line"><a name="l11424"></a><span class="lineno">11424</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(positive_number));</div>
<div class="line"><a name="l11425"></a><span class="lineno">11425</span>&#160; }</div>
<div class="line"><a name="l11426"></a><span class="lineno">11426</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (positive_number &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11427"></a><span class="lineno">11427</span>&#160; {</div>
<div class="line"><a name="l11428"></a><span class="lineno">11428</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x3A));</div>
<div class="line"><a name="l11429"></a><span class="lineno">11429</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(positive_number));</div>
<div class="line"><a name="l11430"></a><span class="lineno">11430</span>&#160; }</div>
<div class="line"><a name="l11431"></a><span class="lineno">11431</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l11432"></a><span class="lineno">11432</span>&#160; {</div>
<div class="line"><a name="l11433"></a><span class="lineno">11433</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x3B));</div>
<div class="line"><a name="l11434"></a><span class="lineno">11434</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>(positive_number));</div>
<div class="line"><a name="l11435"></a><span class="lineno">11435</span>&#160; }</div>
<div class="line"><a name="l11436"></a><span class="lineno">11436</span>&#160; }</div>
<div class="line"><a name="l11437"></a><span class="lineno">11437</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11438"></a><span class="lineno">11438</span>&#160; }</div>
<div class="line"><a name="l11439"></a><span class="lineno">11439</span>&#160; </div>
<div class="line"><a name="l11440"></a><span class="lineno">11440</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l11441"></a><span class="lineno">11441</span>&#160; {</div>
<div class="line"><a name="l11442"></a><span class="lineno">11442</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= 0x17)</div>
<div class="line"><a name="l11443"></a><span class="lineno">11443</span>&#160; {</div>
<div class="line"><a name="l11444"></a><span class="lineno">11444</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(j.m_value.number_unsigned));</div>
<div class="line"><a name="l11445"></a><span class="lineno">11445</span>&#160; }</div>
<div class="line"><a name="l11446"></a><span class="lineno">11446</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l11447"></a><span class="lineno">11447</span>&#160; {</div>
<div class="line"><a name="l11448"></a><span class="lineno">11448</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x18));</div>
<div class="line"><a name="l11449"></a><span class="lineno">11449</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(j.m_value.number_unsigned));</div>
<div class="line"><a name="l11450"></a><span class="lineno">11450</span>&#160; }</div>
<div class="line"><a name="l11451"></a><span class="lineno">11451</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11452"></a><span class="lineno">11452</span>&#160; {</div>
<div class="line"><a name="l11453"></a><span class="lineno">11453</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x19));</div>
<div class="line"><a name="l11454"></a><span class="lineno">11454</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(j.m_value.number_unsigned));</div>
<div class="line"><a name="l11455"></a><span class="lineno">11455</span>&#160; }</div>
<div class="line"><a name="l11456"></a><span class="lineno">11456</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11457"></a><span class="lineno">11457</span>&#160; {</div>
<div class="line"><a name="l11458"></a><span class="lineno">11458</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x1A));</div>
<div class="line"><a name="l11459"></a><span class="lineno">11459</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(j.m_value.number_unsigned));</div>
<div class="line"><a name="l11460"></a><span class="lineno">11460</span>&#160; }</div>
<div class="line"><a name="l11461"></a><span class="lineno">11461</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l11462"></a><span class="lineno">11462</span>&#160; {</div>
<div class="line"><a name="l11463"></a><span class="lineno">11463</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x1B));</div>
<div class="line"><a name="l11464"></a><span class="lineno">11464</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>(j.m_value.number_unsigned));</div>
<div class="line"><a name="l11465"></a><span class="lineno">11465</span>&#160; }</div>
<div class="line"><a name="l11466"></a><span class="lineno">11466</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11467"></a><span class="lineno">11467</span>&#160; }</div>
<div class="line"><a name="l11468"></a><span class="lineno">11468</span>&#160; </div>
<div class="line"><a name="l11469"></a><span class="lineno">11469</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l11470"></a><span class="lineno">11470</span>&#160; {</div>
<div class="line"><a name="l11471"></a><span class="lineno">11471</span>&#160; oa-&gt;write_character(get_cbor_float_prefix(j.m_value.number_float));</div>
<div class="line"><a name="l11472"></a><span class="lineno">11472</span>&#160; write_number(j.m_value.number_float);</div>
<div class="line"><a name="l11473"></a><span class="lineno">11473</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11474"></a><span class="lineno">11474</span>&#160; }</div>
<div class="line"><a name="l11475"></a><span class="lineno">11475</span>&#160; </div>
<div class="line"><a name="l11476"></a><span class="lineno">11476</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l11477"></a><span class="lineno">11477</span>&#160; {</div>
<div class="line"><a name="l11478"></a><span class="lineno">11478</span>&#160; <span class="comment">// step 1: write control byte and the string length</span></div>
<div class="line"><a name="l11479"></a><span class="lineno">11479</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.string-&gt;size();</div>
<div class="line"><a name="l11480"></a><span class="lineno">11480</span>&#160; <span class="keywordflow">if</span> (N &lt;= 0x17)</div>
<div class="line"><a name="l11481"></a><span class="lineno">11481</span>&#160; {</div>
<div class="line"><a name="l11482"></a><span class="lineno">11482</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(0x60 + N));</div>
<div class="line"><a name="l11483"></a><span class="lineno">11483</span>&#160; }</div>
<div class="line"><a name="l11484"></a><span class="lineno">11484</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l11485"></a><span class="lineno">11485</span>&#160; {</div>
<div class="line"><a name="l11486"></a><span class="lineno">11486</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x78));</div>
<div class="line"><a name="l11487"></a><span class="lineno">11487</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11488"></a><span class="lineno">11488</span>&#160; }</div>
<div class="line"><a name="l11489"></a><span class="lineno">11489</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11490"></a><span class="lineno">11490</span>&#160; {</div>
<div class="line"><a name="l11491"></a><span class="lineno">11491</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x79));</div>
<div class="line"><a name="l11492"></a><span class="lineno">11492</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11493"></a><span class="lineno">11493</span>&#160; }</div>
<div class="line"><a name="l11494"></a><span class="lineno">11494</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11495"></a><span class="lineno">11495</span>&#160; {</div>
<div class="line"><a name="l11496"></a><span class="lineno">11496</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x7A));</div>
<div class="line"><a name="l11497"></a><span class="lineno">11497</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11498"></a><span class="lineno">11498</span>&#160; }</div>
<div class="line"><a name="l11499"></a><span class="lineno">11499</span>&#160; <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a name="l11500"></a><span class="lineno">11500</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint64_t&gt;::max)())</div>
<div class="line"><a name="l11501"></a><span class="lineno">11501</span>&#160; {</div>
<div class="line"><a name="l11502"></a><span class="lineno">11502</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x7B));</div>
<div class="line"><a name="l11503"></a><span class="lineno">11503</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11504"></a><span class="lineno">11504</span>&#160; }</div>
<div class="line"><a name="l11505"></a><span class="lineno">11505</span>&#160; <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a name="l11506"></a><span class="lineno">11506</span>&#160; </div>
<div class="line"><a name="l11507"></a><span class="lineno">11507</span>&#160; <span class="comment">// step 2: write the string</span></div>
<div class="line"><a name="l11508"></a><span class="lineno">11508</span>&#160; oa-&gt;write_characters(</div>
<div class="line"><a name="l11509"></a><span class="lineno">11509</span>&#160; <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>CharType*<span class="keyword">&gt;</span>(j.m_value.string-&gt;c_str()),</div>
<div class="line"><a name="l11510"></a><span class="lineno">11510</span>&#160; j.m_value.string-&gt;size());</div>
<div class="line"><a name="l11511"></a><span class="lineno">11511</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11512"></a><span class="lineno">11512</span>&#160; }</div>
<div class="line"><a name="l11513"></a><span class="lineno">11513</span>&#160; </div>
<div class="line"><a name="l11514"></a><span class="lineno">11514</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l11515"></a><span class="lineno">11515</span>&#160; {</div>
<div class="line"><a name="l11516"></a><span class="lineno">11516</span>&#160; <span class="comment">// step 1: write control byte and the array size</span></div>
<div class="line"><a name="l11517"></a><span class="lineno">11517</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.array-&gt;size();</div>
<div class="line"><a name="l11518"></a><span class="lineno">11518</span>&#160; <span class="keywordflow">if</span> (N &lt;= 0x17)</div>
<div class="line"><a name="l11519"></a><span class="lineno">11519</span>&#160; {</div>
<div class="line"><a name="l11520"></a><span class="lineno">11520</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(0x80 + N));</div>
<div class="line"><a name="l11521"></a><span class="lineno">11521</span>&#160; }</div>
<div class="line"><a name="l11522"></a><span class="lineno">11522</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l11523"></a><span class="lineno">11523</span>&#160; {</div>
<div class="line"><a name="l11524"></a><span class="lineno">11524</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x98));</div>
<div class="line"><a name="l11525"></a><span class="lineno">11525</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11526"></a><span class="lineno">11526</span>&#160; }</div>
<div class="line"><a name="l11527"></a><span class="lineno">11527</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11528"></a><span class="lineno">11528</span>&#160; {</div>
<div class="line"><a name="l11529"></a><span class="lineno">11529</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x99));</div>
<div class="line"><a name="l11530"></a><span class="lineno">11530</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11531"></a><span class="lineno">11531</span>&#160; }</div>
<div class="line"><a name="l11532"></a><span class="lineno">11532</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11533"></a><span class="lineno">11533</span>&#160; {</div>
<div class="line"><a name="l11534"></a><span class="lineno">11534</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x9A));</div>
<div class="line"><a name="l11535"></a><span class="lineno">11535</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11536"></a><span class="lineno">11536</span>&#160; }</div>
<div class="line"><a name="l11537"></a><span class="lineno">11537</span>&#160; <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a name="l11538"></a><span class="lineno">11538</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint64_t&gt;::max)())</div>
<div class="line"><a name="l11539"></a><span class="lineno">11539</span>&#160; {</div>
<div class="line"><a name="l11540"></a><span class="lineno">11540</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x9B));</div>
<div class="line"><a name="l11541"></a><span class="lineno">11541</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11542"></a><span class="lineno">11542</span>&#160; }</div>
<div class="line"><a name="l11543"></a><span class="lineno">11543</span>&#160; <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a name="l11544"></a><span class="lineno">11544</span>&#160; </div>
<div class="line"><a name="l11545"></a><span class="lineno">11545</span>&#160; <span class="comment">// step 2: write each element</span></div>
<div class="line"><a name="l11546"></a><span class="lineno">11546</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; el : *j.m_value.array)</div>
<div class="line"><a name="l11547"></a><span class="lineno">11547</span>&#160; {</div>
<div class="line"><a name="l11548"></a><span class="lineno">11548</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(el);</div>
<div class="line"><a name="l11549"></a><span class="lineno">11549</span>&#160; }</div>
<div class="line"><a name="l11550"></a><span class="lineno">11550</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11551"></a><span class="lineno">11551</span>&#160; }</div>
<div class="line"><a name="l11552"></a><span class="lineno">11552</span>&#160; </div>
<div class="line"><a name="l11553"></a><span class="lineno">11553</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l11554"></a><span class="lineno">11554</span>&#160; {</div>
<div class="line"><a name="l11555"></a><span class="lineno">11555</span>&#160; <span class="comment">// step 1: write control byte and the object size</span></div>
<div class="line"><a name="l11556"></a><span class="lineno">11556</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.object-&gt;size();</div>
<div class="line"><a name="l11557"></a><span class="lineno">11557</span>&#160; <span class="keywordflow">if</span> (N &lt;= 0x17)</div>
<div class="line"><a name="l11558"></a><span class="lineno">11558</span>&#160; {</div>
<div class="line"><a name="l11559"></a><span class="lineno">11559</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(0xA0 + N));</div>
<div class="line"><a name="l11560"></a><span class="lineno">11560</span>&#160; }</div>
<div class="line"><a name="l11561"></a><span class="lineno">11561</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l11562"></a><span class="lineno">11562</span>&#160; {</div>
<div class="line"><a name="l11563"></a><span class="lineno">11563</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xB8));</div>
<div class="line"><a name="l11564"></a><span class="lineno">11564</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11565"></a><span class="lineno">11565</span>&#160; }</div>
<div class="line"><a name="l11566"></a><span class="lineno">11566</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11567"></a><span class="lineno">11567</span>&#160; {</div>
<div class="line"><a name="l11568"></a><span class="lineno">11568</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xB9));</div>
<div class="line"><a name="l11569"></a><span class="lineno">11569</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11570"></a><span class="lineno">11570</span>&#160; }</div>
<div class="line"><a name="l11571"></a><span class="lineno">11571</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11572"></a><span class="lineno">11572</span>&#160; {</div>
<div class="line"><a name="l11573"></a><span class="lineno">11573</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xBA));</div>
<div class="line"><a name="l11574"></a><span class="lineno">11574</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11575"></a><span class="lineno">11575</span>&#160; }</div>
<div class="line"><a name="l11576"></a><span class="lineno">11576</span>&#160; <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a name="l11577"></a><span class="lineno">11577</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint64_t&gt;::max)())</div>
<div class="line"><a name="l11578"></a><span class="lineno">11578</span>&#160; {</div>
<div class="line"><a name="l11579"></a><span class="lineno">11579</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xBB));</div>
<div class="line"><a name="l11580"></a><span class="lineno">11580</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11581"></a><span class="lineno">11581</span>&#160; }</div>
<div class="line"><a name="l11582"></a><span class="lineno">11582</span>&#160; <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a name="l11583"></a><span class="lineno">11583</span>&#160; </div>
<div class="line"><a name="l11584"></a><span class="lineno">11584</span>&#160; <span class="comment">// step 2: write each element</span></div>
<div class="line"><a name="l11585"></a><span class="lineno">11585</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; el : *j.m_value.object)</div>
<div class="line"><a name="l11586"></a><span class="lineno">11586</span>&#160; {</div>
<div class="line"><a name="l11587"></a><span class="lineno">11587</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(el.first);</div>
<div class="line"><a name="l11588"></a><span class="lineno">11588</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(el.second);</div>
<div class="line"><a name="l11589"></a><span class="lineno">11589</span>&#160; }</div>
<div class="line"><a name="l11590"></a><span class="lineno">11590</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11591"></a><span class="lineno">11591</span>&#160; }</div>
<div class="line"><a name="l11592"></a><span class="lineno">11592</span>&#160; </div>
<div class="line"><a name="l11593"></a><span class="lineno">11593</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l11594"></a><span class="lineno">11594</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11595"></a><span class="lineno">11595</span>&#160; }</div>
<div class="line"><a name="l11596"></a><span class="lineno">11596</span>&#160; }</div>
<div class="line"><a name="l11597"></a><span class="lineno">11597</span>&#160; </div>
<div class="line"><a name="l11601"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">11601</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(<span class="keyword">const</span> BasicJsonType&amp; j)</div>
<div class="line"><a name="l11602"></a><span class="lineno">11602</span>&#160; {</div>
<div class="line"><a name="l11603"></a><span class="lineno">11603</span>&#160; <span class="keywordflow">switch</span> (j.type())</div>
<div class="line"><a name="l11604"></a><span class="lineno">11604</span>&#160; {</div>
<div class="line"><a name="l11605"></a><span class="lineno">11605</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>: <span class="comment">// nil</span></div>
<div class="line"><a name="l11606"></a><span class="lineno">11606</span>&#160; {</div>
<div class="line"><a name="l11607"></a><span class="lineno">11607</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xC0));</div>
<div class="line"><a name="l11608"></a><span class="lineno">11608</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11609"></a><span class="lineno">11609</span>&#160; }</div>
<div class="line"><a name="l11610"></a><span class="lineno">11610</span>&#160; </div>
<div class="line"><a name="l11611"></a><span class="lineno">11611</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>: <span class="comment">// true and false</span></div>
<div class="line"><a name="l11612"></a><span class="lineno">11612</span>&#160; {</div>
<div class="line"><a name="l11613"></a><span class="lineno">11613</span>&#160; oa-&gt;write_character(j.m_value.boolean</div>
<div class="line"><a name="l11614"></a><span class="lineno">11614</span>&#160; ? <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xC3)</div>
<div class="line"><a name="l11615"></a><span class="lineno">11615</span>&#160; : <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xC2));</div>
<div class="line"><a name="l11616"></a><span class="lineno">11616</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11617"></a><span class="lineno">11617</span>&#160; }</div>
<div class="line"><a name="l11618"></a><span class="lineno">11618</span>&#160; </div>
<div class="line"><a name="l11619"></a><span class="lineno">11619</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l11620"></a><span class="lineno">11620</span>&#160; {</div>
<div class="line"><a name="l11621"></a><span class="lineno">11621</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_integer &gt;= 0)</div>
<div class="line"><a name="l11622"></a><span class="lineno">11622</span>&#160; {</div>
<div class="line"><a name="l11623"></a><span class="lineno">11623</span>&#160; <span class="comment">// MessagePack does not differentiate between positive</span></div>
<div class="line"><a name="l11624"></a><span class="lineno">11624</span>&#160; <span class="comment">// signed integers and unsigned integers. Therefore, we used</span></div>
<div class="line"><a name="l11625"></a><span class="lineno">11625</span>&#160; <span class="comment">// the code from the value_t::number_unsigned case here.</span></div>
<div class="line"><a name="l11626"></a><span class="lineno">11626</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt; 128)</div>
<div class="line"><a name="l11627"></a><span class="lineno">11627</span>&#160; {</div>
<div class="line"><a name="l11628"></a><span class="lineno">11628</span>&#160; <span class="comment">// positive fixnum</span></div>
<div class="line"><a name="l11629"></a><span class="lineno">11629</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11630"></a><span class="lineno">11630</span>&#160; }</div>
<div class="line"><a name="l11631"></a><span class="lineno">11631</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l11632"></a><span class="lineno">11632</span>&#160; {</div>
<div class="line"><a name="l11633"></a><span class="lineno">11633</span>&#160; <span class="comment">// uint 8</span></div>
<div class="line"><a name="l11634"></a><span class="lineno">11634</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCC));</div>
<div class="line"><a name="l11635"></a><span class="lineno">11635</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11636"></a><span class="lineno">11636</span>&#160; }</div>
<div class="line"><a name="l11637"></a><span class="lineno">11637</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11638"></a><span class="lineno">11638</span>&#160; {</div>
<div class="line"><a name="l11639"></a><span class="lineno">11639</span>&#160; <span class="comment">// uint 16</span></div>
<div class="line"><a name="l11640"></a><span class="lineno">11640</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCD));</div>
<div class="line"><a name="l11641"></a><span class="lineno">11641</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11642"></a><span class="lineno">11642</span>&#160; }</div>
<div class="line"><a name="l11643"></a><span class="lineno">11643</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11644"></a><span class="lineno">11644</span>&#160; {</div>
<div class="line"><a name="l11645"></a><span class="lineno">11645</span>&#160; <span class="comment">// uint 32</span></div>
<div class="line"><a name="l11646"></a><span class="lineno">11646</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCE));</div>
<div class="line"><a name="l11647"></a><span class="lineno">11647</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11648"></a><span class="lineno">11648</span>&#160; }</div>
<div class="line"><a name="l11649"></a><span class="lineno">11649</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint64_t&gt;::max)())</div>
<div class="line"><a name="l11650"></a><span class="lineno">11650</span>&#160; {</div>
<div class="line"><a name="l11651"></a><span class="lineno">11651</span>&#160; <span class="comment">// uint 64</span></div>
<div class="line"><a name="l11652"></a><span class="lineno">11652</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCF));</div>
<div class="line"><a name="l11653"></a><span class="lineno">11653</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11654"></a><span class="lineno">11654</span>&#160; }</div>
<div class="line"><a name="l11655"></a><span class="lineno">11655</span>&#160; }</div>
<div class="line"><a name="l11656"></a><span class="lineno">11656</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l11657"></a><span class="lineno">11657</span>&#160; {</div>
<div class="line"><a name="l11658"></a><span class="lineno">11658</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_integer &gt;= -32)</div>
<div class="line"><a name="l11659"></a><span class="lineno">11659</span>&#160; {</div>
<div class="line"><a name="l11660"></a><span class="lineno">11660</span>&#160; <span class="comment">// negative fixnum</span></div>
<div class="line"><a name="l11661"></a><span class="lineno">11661</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int8_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11662"></a><span class="lineno">11662</span>&#160; }</div>
<div class="line"><a name="l11663"></a><span class="lineno">11663</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer &gt;= (std::numeric_limits&lt;std::int8_t&gt;::min)() and</div>
<div class="line"><a name="l11664"></a><span class="lineno">11664</span>&#160; j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::int8_t&gt;::max)())</div>
<div class="line"><a name="l11665"></a><span class="lineno">11665</span>&#160; {</div>
<div class="line"><a name="l11666"></a><span class="lineno">11666</span>&#160; <span class="comment">// int 8</span></div>
<div class="line"><a name="l11667"></a><span class="lineno">11667</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xD0));</div>
<div class="line"><a name="l11668"></a><span class="lineno">11668</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int8_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11669"></a><span class="lineno">11669</span>&#160; }</div>
<div class="line"><a name="l11670"></a><span class="lineno">11670</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer &gt;= (std::numeric_limits&lt;std::int16_t&gt;::min)() and</div>
<div class="line"><a name="l11671"></a><span class="lineno">11671</span>&#160; j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::int16_t&gt;::max)())</div>
<div class="line"><a name="l11672"></a><span class="lineno">11672</span>&#160; {</div>
<div class="line"><a name="l11673"></a><span class="lineno">11673</span>&#160; <span class="comment">// int 16</span></div>
<div class="line"><a name="l11674"></a><span class="lineno">11674</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xD1));</div>
<div class="line"><a name="l11675"></a><span class="lineno">11675</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int16_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11676"></a><span class="lineno">11676</span>&#160; }</div>
<div class="line"><a name="l11677"></a><span class="lineno">11677</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer &gt;= (std::numeric_limits&lt;std::int32_t&gt;::min)() and</div>
<div class="line"><a name="l11678"></a><span class="lineno">11678</span>&#160; j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::int32_t&gt;::max)())</div>
<div class="line"><a name="l11679"></a><span class="lineno">11679</span>&#160; {</div>
<div class="line"><a name="l11680"></a><span class="lineno">11680</span>&#160; <span class="comment">// int 32</span></div>
<div class="line"><a name="l11681"></a><span class="lineno">11681</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xD2));</div>
<div class="line"><a name="l11682"></a><span class="lineno">11682</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int32_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11683"></a><span class="lineno">11683</span>&#160; }</div>
<div class="line"><a name="l11684"></a><span class="lineno">11684</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer &gt;= (std::numeric_limits&lt;std::int64_t&gt;::min)() and</div>
<div class="line"><a name="l11685"></a><span class="lineno">11685</span>&#160; j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::int64_t&gt;::max)())</div>
<div class="line"><a name="l11686"></a><span class="lineno">11686</span>&#160; {</div>
<div class="line"><a name="l11687"></a><span class="lineno">11687</span>&#160; <span class="comment">// int 64</span></div>
<div class="line"><a name="l11688"></a><span class="lineno">11688</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xD3));</div>
<div class="line"><a name="l11689"></a><span class="lineno">11689</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int64_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11690"></a><span class="lineno">11690</span>&#160; }</div>
<div class="line"><a name="l11691"></a><span class="lineno">11691</span>&#160; }</div>
<div class="line"><a name="l11692"></a><span class="lineno">11692</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11693"></a><span class="lineno">11693</span>&#160; }</div>
<div class="line"><a name="l11694"></a><span class="lineno">11694</span>&#160; </div>
<div class="line"><a name="l11695"></a><span class="lineno">11695</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l11696"></a><span class="lineno">11696</span>&#160; {</div>
<div class="line"><a name="l11697"></a><span class="lineno">11697</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt; 128)</div>
<div class="line"><a name="l11698"></a><span class="lineno">11698</span>&#160; {</div>
<div class="line"><a name="l11699"></a><span class="lineno">11699</span>&#160; <span class="comment">// positive fixnum</span></div>
<div class="line"><a name="l11700"></a><span class="lineno">11700</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11701"></a><span class="lineno">11701</span>&#160; }</div>
<div class="line"><a name="l11702"></a><span class="lineno">11702</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l11703"></a><span class="lineno">11703</span>&#160; {</div>
<div class="line"><a name="l11704"></a><span class="lineno">11704</span>&#160; <span class="comment">// uint 8</span></div>
<div class="line"><a name="l11705"></a><span class="lineno">11705</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCC));</div>
<div class="line"><a name="l11706"></a><span class="lineno">11706</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11707"></a><span class="lineno">11707</span>&#160; }</div>
<div class="line"><a name="l11708"></a><span class="lineno">11708</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11709"></a><span class="lineno">11709</span>&#160; {</div>
<div class="line"><a name="l11710"></a><span class="lineno">11710</span>&#160; <span class="comment">// uint 16</span></div>
<div class="line"><a name="l11711"></a><span class="lineno">11711</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCD));</div>
<div class="line"><a name="l11712"></a><span class="lineno">11712</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11713"></a><span class="lineno">11713</span>&#160; }</div>
<div class="line"><a name="l11714"></a><span class="lineno">11714</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11715"></a><span class="lineno">11715</span>&#160; {</div>
<div class="line"><a name="l11716"></a><span class="lineno">11716</span>&#160; <span class="comment">// uint 32</span></div>
<div class="line"><a name="l11717"></a><span class="lineno">11717</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCE));</div>
<div class="line"><a name="l11718"></a><span class="lineno">11718</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11719"></a><span class="lineno">11719</span>&#160; }</div>
<div class="line"><a name="l11720"></a><span class="lineno">11720</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= (std::numeric_limits&lt;std::uint64_t&gt;::max)())</div>
<div class="line"><a name="l11721"></a><span class="lineno">11721</span>&#160; {</div>
<div class="line"><a name="l11722"></a><span class="lineno">11722</span>&#160; <span class="comment">// uint 64</span></div>
<div class="line"><a name="l11723"></a><span class="lineno">11723</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCF));</div>
<div class="line"><a name="l11724"></a><span class="lineno">11724</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>(j.m_value.number_integer));</div>
<div class="line"><a name="l11725"></a><span class="lineno">11725</span>&#160; }</div>
<div class="line"><a name="l11726"></a><span class="lineno">11726</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11727"></a><span class="lineno">11727</span>&#160; }</div>
<div class="line"><a name="l11728"></a><span class="lineno">11728</span>&#160; </div>
<div class="line"><a name="l11729"></a><span class="lineno">11729</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l11730"></a><span class="lineno">11730</span>&#160; {</div>
<div class="line"><a name="l11731"></a><span class="lineno">11731</span>&#160; oa-&gt;write_character(get_msgpack_float_prefix(j.m_value.number_float));</div>
<div class="line"><a name="l11732"></a><span class="lineno">11732</span>&#160; write_number(j.m_value.number_float);</div>
<div class="line"><a name="l11733"></a><span class="lineno">11733</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11734"></a><span class="lineno">11734</span>&#160; }</div>
<div class="line"><a name="l11735"></a><span class="lineno">11735</span>&#160; </div>
<div class="line"><a name="l11736"></a><span class="lineno">11736</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l11737"></a><span class="lineno">11737</span>&#160; {</div>
<div class="line"><a name="l11738"></a><span class="lineno">11738</span>&#160; <span class="comment">// step 1: write control byte and the string length</span></div>
<div class="line"><a name="l11739"></a><span class="lineno">11739</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.string-&gt;size();</div>
<div class="line"><a name="l11740"></a><span class="lineno">11740</span>&#160; <span class="keywordflow">if</span> (N &lt;= 31)</div>
<div class="line"><a name="l11741"></a><span class="lineno">11741</span>&#160; {</div>
<div class="line"><a name="l11742"></a><span class="lineno">11742</span>&#160; <span class="comment">// fixstr</span></div>
<div class="line"><a name="l11743"></a><span class="lineno">11743</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(0xA0 | N));</div>
<div class="line"><a name="l11744"></a><span class="lineno">11744</span>&#160; }</div>
<div class="line"><a name="l11745"></a><span class="lineno">11745</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l11746"></a><span class="lineno">11746</span>&#160; {</div>
<div class="line"><a name="l11747"></a><span class="lineno">11747</span>&#160; <span class="comment">// str 8</span></div>
<div class="line"><a name="l11748"></a><span class="lineno">11748</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xD9));</div>
<div class="line"><a name="l11749"></a><span class="lineno">11749</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11750"></a><span class="lineno">11750</span>&#160; }</div>
<div class="line"><a name="l11751"></a><span class="lineno">11751</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11752"></a><span class="lineno">11752</span>&#160; {</div>
<div class="line"><a name="l11753"></a><span class="lineno">11753</span>&#160; <span class="comment">// str 16</span></div>
<div class="line"><a name="l11754"></a><span class="lineno">11754</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDA));</div>
<div class="line"><a name="l11755"></a><span class="lineno">11755</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11756"></a><span class="lineno">11756</span>&#160; }</div>
<div class="line"><a name="l11757"></a><span class="lineno">11757</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11758"></a><span class="lineno">11758</span>&#160; {</div>
<div class="line"><a name="l11759"></a><span class="lineno">11759</span>&#160; <span class="comment">// str 32</span></div>
<div class="line"><a name="l11760"></a><span class="lineno">11760</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDB));</div>
<div class="line"><a name="l11761"></a><span class="lineno">11761</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11762"></a><span class="lineno">11762</span>&#160; }</div>
<div class="line"><a name="l11763"></a><span class="lineno">11763</span>&#160; </div>
<div class="line"><a name="l11764"></a><span class="lineno">11764</span>&#160; <span class="comment">// step 2: write the string</span></div>
<div class="line"><a name="l11765"></a><span class="lineno">11765</span>&#160; oa-&gt;write_characters(</div>
<div class="line"><a name="l11766"></a><span class="lineno">11766</span>&#160; <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>CharType*<span class="keyword">&gt;</span>(j.m_value.string-&gt;c_str()),</div>
<div class="line"><a name="l11767"></a><span class="lineno">11767</span>&#160; j.m_value.string-&gt;size());</div>
<div class="line"><a name="l11768"></a><span class="lineno">11768</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11769"></a><span class="lineno">11769</span>&#160; }</div>
<div class="line"><a name="l11770"></a><span class="lineno">11770</span>&#160; </div>
<div class="line"><a name="l11771"></a><span class="lineno">11771</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l11772"></a><span class="lineno">11772</span>&#160; {</div>
<div class="line"><a name="l11773"></a><span class="lineno">11773</span>&#160; <span class="comment">// step 1: write control byte and the array size</span></div>
<div class="line"><a name="l11774"></a><span class="lineno">11774</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.array-&gt;size();</div>
<div class="line"><a name="l11775"></a><span class="lineno">11775</span>&#160; <span class="keywordflow">if</span> (N &lt;= 15)</div>
<div class="line"><a name="l11776"></a><span class="lineno">11776</span>&#160; {</div>
<div class="line"><a name="l11777"></a><span class="lineno">11777</span>&#160; <span class="comment">// fixarray</span></div>
<div class="line"><a name="l11778"></a><span class="lineno">11778</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(0x90 | N));</div>
<div class="line"><a name="l11779"></a><span class="lineno">11779</span>&#160; }</div>
<div class="line"><a name="l11780"></a><span class="lineno">11780</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11781"></a><span class="lineno">11781</span>&#160; {</div>
<div class="line"><a name="l11782"></a><span class="lineno">11782</span>&#160; <span class="comment">// array 16</span></div>
<div class="line"><a name="l11783"></a><span class="lineno">11783</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDC));</div>
<div class="line"><a name="l11784"></a><span class="lineno">11784</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11785"></a><span class="lineno">11785</span>&#160; }</div>
<div class="line"><a name="l11786"></a><span class="lineno">11786</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11787"></a><span class="lineno">11787</span>&#160; {</div>
<div class="line"><a name="l11788"></a><span class="lineno">11788</span>&#160; <span class="comment">// array 32</span></div>
<div class="line"><a name="l11789"></a><span class="lineno">11789</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDD));</div>
<div class="line"><a name="l11790"></a><span class="lineno">11790</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11791"></a><span class="lineno">11791</span>&#160; }</div>
<div class="line"><a name="l11792"></a><span class="lineno">11792</span>&#160; </div>
<div class="line"><a name="l11793"></a><span class="lineno">11793</span>&#160; <span class="comment">// step 2: write each element</span></div>
<div class="line"><a name="l11794"></a><span class="lineno">11794</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; el : *j.m_value.array)</div>
<div class="line"><a name="l11795"></a><span class="lineno">11795</span>&#160; {</div>
<div class="line"><a name="l11796"></a><span class="lineno">11796</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(el);</div>
<div class="line"><a name="l11797"></a><span class="lineno">11797</span>&#160; }</div>
<div class="line"><a name="l11798"></a><span class="lineno">11798</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11799"></a><span class="lineno">11799</span>&#160; }</div>
<div class="line"><a name="l11800"></a><span class="lineno">11800</span>&#160; </div>
<div class="line"><a name="l11801"></a><span class="lineno">11801</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l11802"></a><span class="lineno">11802</span>&#160; {</div>
<div class="line"><a name="l11803"></a><span class="lineno">11803</span>&#160; <span class="comment">// step 1: write control byte and the object size</span></div>
<div class="line"><a name="l11804"></a><span class="lineno">11804</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.object-&gt;size();</div>
<div class="line"><a name="l11805"></a><span class="lineno">11805</span>&#160; <span class="keywordflow">if</span> (N &lt;= 15)</div>
<div class="line"><a name="l11806"></a><span class="lineno">11806</span>&#160; {</div>
<div class="line"><a name="l11807"></a><span class="lineno">11807</span>&#160; <span class="comment">// fixmap</span></div>
<div class="line"><a name="l11808"></a><span class="lineno">11808</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(0x80 | (N &amp; 0xF)));</div>
<div class="line"><a name="l11809"></a><span class="lineno">11809</span>&#160; }</div>
<div class="line"><a name="l11810"></a><span class="lineno">11810</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint16_t&gt;::max)())</div>
<div class="line"><a name="l11811"></a><span class="lineno">11811</span>&#160; {</div>
<div class="line"><a name="l11812"></a><span class="lineno">11812</span>&#160; <span class="comment">// map 16</span></div>
<div class="line"><a name="l11813"></a><span class="lineno">11813</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDE));</div>
<div class="line"><a name="l11814"></a><span class="lineno">11814</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11815"></a><span class="lineno">11815</span>&#160; }</div>
<div class="line"><a name="l11816"></a><span class="lineno">11816</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N &lt;= (std::numeric_limits&lt;std::uint32_t&gt;::max)())</div>
<div class="line"><a name="l11817"></a><span class="lineno">11817</span>&#160; {</div>
<div class="line"><a name="l11818"></a><span class="lineno">11818</span>&#160; <span class="comment">// map 32</span></div>
<div class="line"><a name="l11819"></a><span class="lineno">11819</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDF));</div>
<div class="line"><a name="l11820"></a><span class="lineno">11820</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(N));</div>
<div class="line"><a name="l11821"></a><span class="lineno">11821</span>&#160; }</div>
<div class="line"><a name="l11822"></a><span class="lineno">11822</span>&#160; </div>
<div class="line"><a name="l11823"></a><span class="lineno">11823</span>&#160; <span class="comment">// step 2: write each element</span></div>
<div class="line"><a name="l11824"></a><span class="lineno">11824</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; el : *j.m_value.object)</div>
<div class="line"><a name="l11825"></a><span class="lineno">11825</span>&#160; {</div>
<div class="line"><a name="l11826"></a><span class="lineno">11826</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(el.first);</div>
<div class="line"><a name="l11827"></a><span class="lineno">11827</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(el.second);</div>
<div class="line"><a name="l11828"></a><span class="lineno">11828</span>&#160; }</div>
<div class="line"><a name="l11829"></a><span class="lineno">11829</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11830"></a><span class="lineno">11830</span>&#160; }</div>
<div class="line"><a name="l11831"></a><span class="lineno">11831</span>&#160; </div>
<div class="line"><a name="l11832"></a><span class="lineno">11832</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l11833"></a><span class="lineno">11833</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11834"></a><span class="lineno">11834</span>&#160; }</div>
<div class="line"><a name="l11835"></a><span class="lineno">11835</span>&#160; }</div>
<div class="line"><a name="l11836"></a><span class="lineno">11836</span>&#160; </div>
<div class="line"><a name="l11843"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">11843</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">write_ubjson</a>(<span class="keyword">const</span> BasicJsonType&amp; j, <span class="keyword">const</span> <span class="keywordtype">bool</span> use_count,</div>
<div class="line"><a name="l11844"></a><span class="lineno">11844</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> use_type, <span class="keyword">const</span> <span class="keywordtype">bool</span> add_prefix = <span class="keyword">true</span>)</div>
<div class="line"><a name="l11845"></a><span class="lineno">11845</span>&#160; {</div>
<div class="line"><a name="l11846"></a><span class="lineno">11846</span>&#160; <span class="keywordflow">switch</span> (j.type())</div>
<div class="line"><a name="l11847"></a><span class="lineno">11847</span>&#160; {</div>
<div class="line"><a name="l11848"></a><span class="lineno">11848</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l11849"></a><span class="lineno">11849</span>&#160; {</div>
<div class="line"><a name="l11850"></a><span class="lineno">11850</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l11851"></a><span class="lineno">11851</span>&#160; {</div>
<div class="line"><a name="l11852"></a><span class="lineno">11852</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;Z&#39;</span>));</div>
<div class="line"><a name="l11853"></a><span class="lineno">11853</span>&#160; }</div>
<div class="line"><a name="l11854"></a><span class="lineno">11854</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11855"></a><span class="lineno">11855</span>&#160; }</div>
<div class="line"><a name="l11856"></a><span class="lineno">11856</span>&#160; </div>
<div class="line"><a name="l11857"></a><span class="lineno">11857</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l11858"></a><span class="lineno">11858</span>&#160; {</div>
<div class="line"><a name="l11859"></a><span class="lineno">11859</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l11860"></a><span class="lineno">11860</span>&#160; {</div>
<div class="line"><a name="l11861"></a><span class="lineno">11861</span>&#160; oa-&gt;write_character(j.m_value.boolean</div>
<div class="line"><a name="l11862"></a><span class="lineno">11862</span>&#160; ? <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;T&#39;</span>)</div>
<div class="line"><a name="l11863"></a><span class="lineno">11863</span>&#160; : <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;F&#39;</span>));</div>
<div class="line"><a name="l11864"></a><span class="lineno">11864</span>&#160; }</div>
<div class="line"><a name="l11865"></a><span class="lineno">11865</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11866"></a><span class="lineno">11866</span>&#160; }</div>
<div class="line"><a name="l11867"></a><span class="lineno">11867</span>&#160; </div>
<div class="line"><a name="l11868"></a><span class="lineno">11868</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l11869"></a><span class="lineno">11869</span>&#160; {</div>
<div class="line"><a name="l11870"></a><span class="lineno">11870</span>&#160; write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix);</div>
<div class="line"><a name="l11871"></a><span class="lineno">11871</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11872"></a><span class="lineno">11872</span>&#160; }</div>
<div class="line"><a name="l11873"></a><span class="lineno">11873</span>&#160; </div>
<div class="line"><a name="l11874"></a><span class="lineno">11874</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l11875"></a><span class="lineno">11875</span>&#160; {</div>
<div class="line"><a name="l11876"></a><span class="lineno">11876</span>&#160; write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix);</div>
<div class="line"><a name="l11877"></a><span class="lineno">11877</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11878"></a><span class="lineno">11878</span>&#160; }</div>
<div class="line"><a name="l11879"></a><span class="lineno">11879</span>&#160; </div>
<div class="line"><a name="l11880"></a><span class="lineno">11880</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l11881"></a><span class="lineno">11881</span>&#160; {</div>
<div class="line"><a name="l11882"></a><span class="lineno">11882</span>&#160; write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix);</div>
<div class="line"><a name="l11883"></a><span class="lineno">11883</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11884"></a><span class="lineno">11884</span>&#160; }</div>
<div class="line"><a name="l11885"></a><span class="lineno">11885</span>&#160; </div>
<div class="line"><a name="l11886"></a><span class="lineno">11886</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l11887"></a><span class="lineno">11887</span>&#160; {</div>
<div class="line"><a name="l11888"></a><span class="lineno">11888</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l11889"></a><span class="lineno">11889</span>&#160; {</div>
<div class="line"><a name="l11890"></a><span class="lineno">11890</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;S&#39;</span>));</div>
<div class="line"><a name="l11891"></a><span class="lineno">11891</span>&#160; }</div>
<div class="line"><a name="l11892"></a><span class="lineno">11892</span>&#160; write_number_with_ubjson_prefix(j.m_value.string-&gt;size(), <span class="keyword">true</span>);</div>
<div class="line"><a name="l11893"></a><span class="lineno">11893</span>&#160; oa-&gt;write_characters(</div>
<div class="line"><a name="l11894"></a><span class="lineno">11894</span>&#160; <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>CharType*<span class="keyword">&gt;</span>(j.m_value.string-&gt;c_str()),</div>
<div class="line"><a name="l11895"></a><span class="lineno">11895</span>&#160; j.m_value.string-&gt;size());</div>
<div class="line"><a name="l11896"></a><span class="lineno">11896</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11897"></a><span class="lineno">11897</span>&#160; }</div>
<div class="line"><a name="l11898"></a><span class="lineno">11898</span>&#160; </div>
<div class="line"><a name="l11899"></a><span class="lineno">11899</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l11900"></a><span class="lineno">11900</span>&#160; {</div>
<div class="line"><a name="l11901"></a><span class="lineno">11901</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l11902"></a><span class="lineno">11902</span>&#160; {</div>
<div class="line"><a name="l11903"></a><span class="lineno">11903</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;[&#39;</span>));</div>
<div class="line"><a name="l11904"></a><span class="lineno">11904</span>&#160; }</div>
<div class="line"><a name="l11905"></a><span class="lineno">11905</span>&#160; </div>
<div class="line"><a name="l11906"></a><span class="lineno">11906</span>&#160; <span class="keywordtype">bool</span> prefix_required = <span class="keyword">true</span>;</div>
<div class="line"><a name="l11907"></a><span class="lineno">11907</span>&#160; <span class="keywordflow">if</span> (use_type and not j.m_value.array-&gt;empty())</div>
<div class="line"><a name="l11908"></a><span class="lineno">11908</span>&#160; {</div>
<div class="line"><a name="l11909"></a><span class="lineno">11909</span>&#160; assert(use_count);</div>
<div class="line"><a name="l11910"></a><span class="lineno">11910</span>&#160; <span class="keyword">const</span> CharType first_prefix = ubjson_prefix(j.front());</div>
<div class="line"><a name="l11911"></a><span class="lineno">11911</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> same_prefix = std::all_of(j.begin() + 1, j.end(),</div>
<div class="line"><a name="l11912"></a><span class="lineno">11912</span>&#160; [<span class="keyword">this</span>, first_prefix](<span class="keyword">const</span> BasicJsonType &amp; v)</div>
<div class="line"><a name="l11913"></a><span class="lineno">11913</span>&#160; {</div>
<div class="line"><a name="l11914"></a><span class="lineno">11914</span>&#160; return ubjson_prefix(v) == first_prefix;</div>
<div class="line"><a name="l11915"></a><span class="lineno">11915</span>&#160; });</div>
<div class="line"><a name="l11916"></a><span class="lineno">11916</span>&#160; </div>
<div class="line"><a name="l11917"></a><span class="lineno">11917</span>&#160; <span class="keywordflow">if</span> (same_prefix)</div>
<div class="line"><a name="l11918"></a><span class="lineno">11918</span>&#160; {</div>
<div class="line"><a name="l11919"></a><span class="lineno">11919</span>&#160; prefix_required = <span class="keyword">false</span>;</div>
<div class="line"><a name="l11920"></a><span class="lineno">11920</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;$&#39;</span>));</div>
<div class="line"><a name="l11921"></a><span class="lineno">11921</span>&#160; oa-&gt;write_character(first_prefix);</div>
<div class="line"><a name="l11922"></a><span class="lineno">11922</span>&#160; }</div>
<div class="line"><a name="l11923"></a><span class="lineno">11923</span>&#160; }</div>
<div class="line"><a name="l11924"></a><span class="lineno">11924</span>&#160; </div>
<div class="line"><a name="l11925"></a><span class="lineno">11925</span>&#160; <span class="keywordflow">if</span> (use_count)</div>
<div class="line"><a name="l11926"></a><span class="lineno">11926</span>&#160; {</div>
<div class="line"><a name="l11927"></a><span class="lineno">11927</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;#&#39;</span>));</div>
<div class="line"><a name="l11928"></a><span class="lineno">11928</span>&#160; write_number_with_ubjson_prefix(j.m_value.array-&gt;size(), <span class="keyword">true</span>);</div>
<div class="line"><a name="l11929"></a><span class="lineno">11929</span>&#160; }</div>
<div class="line"><a name="l11930"></a><span class="lineno">11930</span>&#160; </div>
<div class="line"><a name="l11931"></a><span class="lineno">11931</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; el : *j.m_value.array)</div>
<div class="line"><a name="l11932"></a><span class="lineno">11932</span>&#160; {</div>
<div class="line"><a name="l11933"></a><span class="lineno">11933</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">write_ubjson</a>(el, use_count, use_type, prefix_required);</div>
<div class="line"><a name="l11934"></a><span class="lineno">11934</span>&#160; }</div>
<div class="line"><a name="l11935"></a><span class="lineno">11935</span>&#160; </div>
<div class="line"><a name="l11936"></a><span class="lineno">11936</span>&#160; <span class="keywordflow">if</span> (not use_count)</div>
<div class="line"><a name="l11937"></a><span class="lineno">11937</span>&#160; {</div>
<div class="line"><a name="l11938"></a><span class="lineno">11938</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;]&#39;</span>));</div>
<div class="line"><a name="l11939"></a><span class="lineno">11939</span>&#160; }</div>
<div class="line"><a name="l11940"></a><span class="lineno">11940</span>&#160; </div>
<div class="line"><a name="l11941"></a><span class="lineno">11941</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11942"></a><span class="lineno">11942</span>&#160; }</div>
<div class="line"><a name="l11943"></a><span class="lineno">11943</span>&#160; </div>
<div class="line"><a name="l11944"></a><span class="lineno">11944</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l11945"></a><span class="lineno">11945</span>&#160; {</div>
<div class="line"><a name="l11946"></a><span class="lineno">11946</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l11947"></a><span class="lineno">11947</span>&#160; {</div>
<div class="line"><a name="l11948"></a><span class="lineno">11948</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;{&#39;</span>));</div>
<div class="line"><a name="l11949"></a><span class="lineno">11949</span>&#160; }</div>
<div class="line"><a name="l11950"></a><span class="lineno">11950</span>&#160; </div>
<div class="line"><a name="l11951"></a><span class="lineno">11951</span>&#160; <span class="keywordtype">bool</span> prefix_required = <span class="keyword">true</span>;</div>
<div class="line"><a name="l11952"></a><span class="lineno">11952</span>&#160; <span class="keywordflow">if</span> (use_type and not j.m_value.object-&gt;empty())</div>
<div class="line"><a name="l11953"></a><span class="lineno">11953</span>&#160; {</div>
<div class="line"><a name="l11954"></a><span class="lineno">11954</span>&#160; assert(use_count);</div>
<div class="line"><a name="l11955"></a><span class="lineno">11955</span>&#160; <span class="keyword">const</span> CharType first_prefix = ubjson_prefix(j.front());</div>
<div class="line"><a name="l11956"></a><span class="lineno">11956</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> same_prefix = std::all_of(j.begin(), j.end(),</div>
<div class="line"><a name="l11957"></a><span class="lineno">11957</span>&#160; [<span class="keyword">this</span>, first_prefix](<span class="keyword">const</span> BasicJsonType &amp; v)</div>
<div class="line"><a name="l11958"></a><span class="lineno">11958</span>&#160; {</div>
<div class="line"><a name="l11959"></a><span class="lineno">11959</span>&#160; return ubjson_prefix(v) == first_prefix;</div>
<div class="line"><a name="l11960"></a><span class="lineno">11960</span>&#160; });</div>
<div class="line"><a name="l11961"></a><span class="lineno">11961</span>&#160; </div>
<div class="line"><a name="l11962"></a><span class="lineno">11962</span>&#160; <span class="keywordflow">if</span> (same_prefix)</div>
<div class="line"><a name="l11963"></a><span class="lineno">11963</span>&#160; {</div>
<div class="line"><a name="l11964"></a><span class="lineno">11964</span>&#160; prefix_required = <span class="keyword">false</span>;</div>
<div class="line"><a name="l11965"></a><span class="lineno">11965</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;$&#39;</span>));</div>
<div class="line"><a name="l11966"></a><span class="lineno">11966</span>&#160; oa-&gt;write_character(first_prefix);</div>
<div class="line"><a name="l11967"></a><span class="lineno">11967</span>&#160; }</div>
<div class="line"><a name="l11968"></a><span class="lineno">11968</span>&#160; }</div>
<div class="line"><a name="l11969"></a><span class="lineno">11969</span>&#160; </div>
<div class="line"><a name="l11970"></a><span class="lineno">11970</span>&#160; <span class="keywordflow">if</span> (use_count)</div>
<div class="line"><a name="l11971"></a><span class="lineno">11971</span>&#160; {</div>
<div class="line"><a name="l11972"></a><span class="lineno">11972</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;#&#39;</span>));</div>
<div class="line"><a name="l11973"></a><span class="lineno">11973</span>&#160; write_number_with_ubjson_prefix(j.m_value.object-&gt;size(), <span class="keyword">true</span>);</div>
<div class="line"><a name="l11974"></a><span class="lineno">11974</span>&#160; }</div>
<div class="line"><a name="l11975"></a><span class="lineno">11975</span>&#160; </div>
<div class="line"><a name="l11976"></a><span class="lineno">11976</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; el : *j.m_value.object)</div>
<div class="line"><a name="l11977"></a><span class="lineno">11977</span>&#160; {</div>
<div class="line"><a name="l11978"></a><span class="lineno">11978</span>&#160; write_number_with_ubjson_prefix(el.first.size(), <span class="keyword">true</span>);</div>
<div class="line"><a name="l11979"></a><span class="lineno">11979</span>&#160; oa-&gt;write_characters(</div>
<div class="line"><a name="l11980"></a><span class="lineno">11980</span>&#160; <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>CharType*<span class="keyword">&gt;</span>(el.first.c_str()),</div>
<div class="line"><a name="l11981"></a><span class="lineno">11981</span>&#160; el.first.size());</div>
<div class="line"><a name="l11982"></a><span class="lineno">11982</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">write_ubjson</a>(el.second, use_count, use_type, prefix_required);</div>
<div class="line"><a name="l11983"></a><span class="lineno">11983</span>&#160; }</div>
<div class="line"><a name="l11984"></a><span class="lineno">11984</span>&#160; </div>
<div class="line"><a name="l11985"></a><span class="lineno">11985</span>&#160; <span class="keywordflow">if</span> (not use_count)</div>
<div class="line"><a name="l11986"></a><span class="lineno">11986</span>&#160; {</div>
<div class="line"><a name="l11987"></a><span class="lineno">11987</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;}&#39;</span>));</div>
<div class="line"><a name="l11988"></a><span class="lineno">11988</span>&#160; }</div>
<div class="line"><a name="l11989"></a><span class="lineno">11989</span>&#160; </div>
<div class="line"><a name="l11990"></a><span class="lineno">11990</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11991"></a><span class="lineno">11991</span>&#160; }</div>
<div class="line"><a name="l11992"></a><span class="lineno">11992</span>&#160; </div>
<div class="line"><a name="l11993"></a><span class="lineno">11993</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l11994"></a><span class="lineno">11994</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l11995"></a><span class="lineno">11995</span>&#160; }</div>
<div class="line"><a name="l11996"></a><span class="lineno">11996</span>&#160; }</div>
<div class="line"><a name="l11997"></a><span class="lineno">11997</span>&#160; </div>
<div class="line"><a name="l11998"></a><span class="lineno">11998</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l12000"></a><span class="lineno">12000</span>&#160; <span class="comment">// BSON //</span></div>
<div class="line"><a name="l12002"></a><span class="lineno">12002</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l12007"></a><span class="lineno">12007</span>&#160; <span class="keyword">static</span> std::size_t calc_bson_entry_header_size(<span class="keyword">const</span> string_t&amp; name)</div>
<div class="line"><a name="l12008"></a><span class="lineno">12008</span>&#160; {</div>
<div class="line"><a name="l12009"></a><span class="lineno">12009</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> it = name.find(<span class="keyword">static_cast&lt;</span>typename string_t::value_type<span class="keyword">&gt;</span>(0));</div>
<div class="line"><a name="l12010"></a><span class="lineno">12010</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(it != BasicJsonType::string_t::npos))</div>
<div class="line"><a name="l12011"></a><span class="lineno">12011</span>&#160; {</div>
<div class="line"><a name="l12012"></a><span class="lineno">12012</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(409,</div>
<div class="line"><a name="l12013"></a><span class="lineno">12013</span>&#160; <span class="stringliteral">&quot;BSON key cannot contain code point U+0000 (at byte &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(it) + <span class="stringliteral">&quot;)&quot;</span>));</div>
<div class="line"><a name="l12014"></a><span class="lineno">12014</span>&#160; }</div>
<div class="line"><a name="l12015"></a><span class="lineno">12015</span>&#160; </div>
<div class="line"><a name="l12016"></a><span class="lineno">12016</span>&#160; <span class="keywordflow">return</span> <span class="comment">/*id*/</span> 1ul + name.size() + <span class="comment">/*zero-terminator*/</span>1u;</div>
<div class="line"><a name="l12017"></a><span class="lineno">12017</span>&#160; }</div>
<div class="line"><a name="l12018"></a><span class="lineno">12018</span>&#160; </div>
<div class="line"><a name="l12022"></a><span class="lineno">12022</span>&#160; <span class="keywordtype">void</span> write_bson_entry_header(<span class="keyword">const</span> string_t&amp; name,</div>
<div class="line"><a name="l12023"></a><span class="lineno">12023</span>&#160; <span class="keyword">const</span> std::uint8_t element_type)</div>
<div class="line"><a name="l12024"></a><span class="lineno">12024</span>&#160; {</div>
<div class="line"><a name="l12025"></a><span class="lineno">12025</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(element_type)); <span class="comment">// boolean</span></div>
<div class="line"><a name="l12026"></a><span class="lineno">12026</span>&#160; oa-&gt;write_characters(</div>
<div class="line"><a name="l12027"></a><span class="lineno">12027</span>&#160; <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>CharType*<span class="keyword">&gt;</span>(name.c_str()),</div>
<div class="line"><a name="l12028"></a><span class="lineno">12028</span>&#160; name.size() + 1u);</div>
<div class="line"><a name="l12029"></a><span class="lineno">12029</span>&#160; }</div>
<div class="line"><a name="l12030"></a><span class="lineno">12030</span>&#160; </div>
<div class="line"><a name="l12034"></a><span class="lineno">12034</span>&#160; <span class="keywordtype">void</span> write_bson_boolean(<span class="keyword">const</span> string_t&amp; name,</div>
<div class="line"><a name="l12035"></a><span class="lineno">12035</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> value)</div>
<div class="line"><a name="l12036"></a><span class="lineno">12036</span>&#160; {</div>
<div class="line"><a name="l12037"></a><span class="lineno">12037</span>&#160; write_bson_entry_header(name, 0x08);</div>
<div class="line"><a name="l12038"></a><span class="lineno">12038</span>&#160; oa-&gt;write_character(value ? <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x01) : <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x00));</div>
<div class="line"><a name="l12039"></a><span class="lineno">12039</span>&#160; }</div>
<div class="line"><a name="l12040"></a><span class="lineno">12040</span>&#160; </div>
<div class="line"><a name="l12044"></a><span class="lineno">12044</span>&#160; <span class="keywordtype">void</span> write_bson_double(<span class="keyword">const</span> string_t&amp; name,</div>
<div class="line"><a name="l12045"></a><span class="lineno">12045</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> value)</div>
<div class="line"><a name="l12046"></a><span class="lineno">12046</span>&#160; {</div>
<div class="line"><a name="l12047"></a><span class="lineno">12047</span>&#160; write_bson_entry_header(name, 0x01);</div>
<div class="line"><a name="l12048"></a><span class="lineno">12048</span>&#160; write_number&lt;double, true&gt;(value);</div>
<div class="line"><a name="l12049"></a><span class="lineno">12049</span>&#160; }</div>
<div class="line"><a name="l12050"></a><span class="lineno">12050</span>&#160; </div>
<div class="line"><a name="l12054"></a><span class="lineno">12054</span>&#160; <span class="keyword">static</span> std::size_t calc_bson_string_size(<span class="keyword">const</span> string_t&amp; value)</div>
<div class="line"><a name="l12055"></a><span class="lineno">12055</span>&#160; {</div>
<div class="line"><a name="l12056"></a><span class="lineno">12056</span>&#160; <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(std::int32_t) + value.size() + 1ul;</div>
<div class="line"><a name="l12057"></a><span class="lineno">12057</span>&#160; }</div>
<div class="line"><a name="l12058"></a><span class="lineno">12058</span>&#160; </div>
<div class="line"><a name="l12062"></a><span class="lineno">12062</span>&#160; <span class="keywordtype">void</span> write_bson_string(<span class="keyword">const</span> string_t&amp; name,</div>
<div class="line"><a name="l12063"></a><span class="lineno">12063</span>&#160; <span class="keyword">const</span> string_t&amp; value)</div>
<div class="line"><a name="l12064"></a><span class="lineno">12064</span>&#160; {</div>
<div class="line"><a name="l12065"></a><span class="lineno">12065</span>&#160; write_bson_entry_header(name, 0x02);</div>
<div class="line"><a name="l12066"></a><span class="lineno">12066</span>&#160; </div>
<div class="line"><a name="l12067"></a><span class="lineno">12067</span>&#160; write_number&lt;std::int32_t, true&gt;(<span class="keyword">static_cast&lt;</span>std::int32_t<span class="keyword">&gt;</span>(value.size() + 1ul));</div>
<div class="line"><a name="l12068"></a><span class="lineno">12068</span>&#160; oa-&gt;write_characters(</div>
<div class="line"><a name="l12069"></a><span class="lineno">12069</span>&#160; <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>CharType*<span class="keyword">&gt;</span>(value.c_str()),</div>
<div class="line"><a name="l12070"></a><span class="lineno">12070</span>&#160; value.size() + 1);</div>
<div class="line"><a name="l12071"></a><span class="lineno">12071</span>&#160; }</div>
<div class="line"><a name="l12072"></a><span class="lineno">12072</span>&#160; </div>
<div class="line"><a name="l12076"></a><span class="lineno">12076</span>&#160; <span class="keywordtype">void</span> write_bson_null(<span class="keyword">const</span> string_t&amp; name)</div>
<div class="line"><a name="l12077"></a><span class="lineno">12077</span>&#160; {</div>
<div class="line"><a name="l12078"></a><span class="lineno">12078</span>&#160; write_bson_entry_header(name, 0x0A);</div>
<div class="line"><a name="l12079"></a><span class="lineno">12079</span>&#160; }</div>
<div class="line"><a name="l12080"></a><span class="lineno">12080</span>&#160; </div>
<div class="line"><a name="l12084"></a><span class="lineno">12084</span>&#160; <span class="keyword">static</span> std::size_t calc_bson_integer_size(<span class="keyword">const</span> std::int64_t value)</div>
<div class="line"><a name="l12085"></a><span class="lineno">12085</span>&#160; {</div>
<div class="line"><a name="l12086"></a><span class="lineno">12086</span>&#160; <span class="keywordflow">return</span> (std::numeric_limits&lt;std::int32_t&gt;::min)() &lt;= value and value &lt;= (std::numeric_limits&lt;std::int32_t&gt;::max)()</div>
<div class="line"><a name="l12087"></a><span class="lineno">12087</span>&#160; ? <span class="keyword">sizeof</span>(std::int32_t)</div>
<div class="line"><a name="l12088"></a><span class="lineno">12088</span>&#160; : <span class="keyword">sizeof</span>(std::int64_t);</div>
<div class="line"><a name="l12089"></a><span class="lineno">12089</span>&#160; }</div>
<div class="line"><a name="l12090"></a><span class="lineno">12090</span>&#160; </div>
<div class="line"><a name="l12094"></a><span class="lineno">12094</span>&#160; <span class="keywordtype">void</span> write_bson_integer(<span class="keyword">const</span> string_t&amp; name,</div>
<div class="line"><a name="l12095"></a><span class="lineno">12095</span>&#160; <span class="keyword">const</span> std::int64_t value)</div>
<div class="line"><a name="l12096"></a><span class="lineno">12096</span>&#160; {</div>
<div class="line"><a name="l12097"></a><span class="lineno">12097</span>&#160; <span class="keywordflow">if</span> ((std::numeric_limits&lt;std::int32_t&gt;::min)() &lt;= value and value &lt;= (std::numeric_limits&lt;std::int32_t&gt;::max)())</div>
<div class="line"><a name="l12098"></a><span class="lineno">12098</span>&#160; {</div>
<div class="line"><a name="l12099"></a><span class="lineno">12099</span>&#160; write_bson_entry_header(name, 0x10); <span class="comment">// int32</span></div>
<div class="line"><a name="l12100"></a><span class="lineno">12100</span>&#160; write_number&lt;std::int32_t, true&gt;(<span class="keyword">static_cast&lt;</span>std::int32_t<span class="keyword">&gt;</span>(value));</div>
<div class="line"><a name="l12101"></a><span class="lineno">12101</span>&#160; }</div>
<div class="line"><a name="l12102"></a><span class="lineno">12102</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l12103"></a><span class="lineno">12103</span>&#160; {</div>
<div class="line"><a name="l12104"></a><span class="lineno">12104</span>&#160; write_bson_entry_header(name, 0x12); <span class="comment">// int64</span></div>
<div class="line"><a name="l12105"></a><span class="lineno">12105</span>&#160; write_number&lt;std::int64_t, true&gt;(<span class="keyword">static_cast&lt;</span>std::int64_t<span class="keyword">&gt;</span>(value));</div>
<div class="line"><a name="l12106"></a><span class="lineno">12106</span>&#160; }</div>
<div class="line"><a name="l12107"></a><span class="lineno">12107</span>&#160; }</div>
<div class="line"><a name="l12108"></a><span class="lineno">12108</span>&#160; </div>
<div class="line"><a name="l12112"></a><span class="lineno">12112</span>&#160; <span class="keyword">static</span> constexpr std::size_t calc_bson_unsigned_size(<span class="keyword">const</span> std::uint64_t value) noexcept</div>
<div class="line"><a name="l12113"></a><span class="lineno">12113</span>&#160; {</div>
<div class="line"><a name="l12114"></a><span class="lineno">12114</span>&#160; <span class="keywordflow">return</span> (value &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::int32_t&gt;::max)()))</div>
<div class="line"><a name="l12115"></a><span class="lineno">12115</span>&#160; ? <span class="keyword">sizeof</span>(std::int32_t)</div>
<div class="line"><a name="l12116"></a><span class="lineno">12116</span>&#160; : <span class="keyword">sizeof</span>(std::int64_t);</div>
<div class="line"><a name="l12117"></a><span class="lineno">12117</span>&#160; }</div>
<div class="line"><a name="l12118"></a><span class="lineno">12118</span>&#160; </div>
<div class="line"><a name="l12122"></a><span class="lineno">12122</span>&#160; <span class="keywordtype">void</span> write_bson_unsigned(<span class="keyword">const</span> string_t&amp; name,</div>
<div class="line"><a name="l12123"></a><span class="lineno">12123</span>&#160; <span class="keyword">const</span> std::uint64_t value)</div>
<div class="line"><a name="l12124"></a><span class="lineno">12124</span>&#160; {</div>
<div class="line"><a name="l12125"></a><span class="lineno">12125</span>&#160; <span class="keywordflow">if</span> (value &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::int32_t&gt;::max)()))</div>
<div class="line"><a name="l12126"></a><span class="lineno">12126</span>&#160; {</div>
<div class="line"><a name="l12127"></a><span class="lineno">12127</span>&#160; write_bson_entry_header(name, 0x10 <span class="comment">/* int32 */</span>);</div>
<div class="line"><a name="l12128"></a><span class="lineno">12128</span>&#160; write_number&lt;std::int32_t, true&gt;(<span class="keyword">static_cast&lt;</span>std::int32_t<span class="keyword">&gt;</span>(value));</div>
<div class="line"><a name="l12129"></a><span class="lineno">12129</span>&#160; }</div>
<div class="line"><a name="l12130"></a><span class="lineno">12130</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::int64_t&gt;::max)()))</div>
<div class="line"><a name="l12131"></a><span class="lineno">12131</span>&#160; {</div>
<div class="line"><a name="l12132"></a><span class="lineno">12132</span>&#160; write_bson_entry_header(name, 0x12 <span class="comment">/* int64 */</span>);</div>
<div class="line"><a name="l12133"></a><span class="lineno">12133</span>&#160; write_number&lt;std::int64_t, true&gt;(<span class="keyword">static_cast&lt;</span>std::int64_t<span class="keyword">&gt;</span>(value));</div>
<div class="line"><a name="l12134"></a><span class="lineno">12134</span>&#160; }</div>
<div class="line"><a name="l12135"></a><span class="lineno">12135</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l12136"></a><span class="lineno">12136</span>&#160; {</div>
<div class="line"><a name="l12137"></a><span class="lineno">12137</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(407, <span class="stringliteral">&quot;integer number &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(value) + <span class="stringliteral">&quot; cannot be represented by BSON as it does not fit int64&quot;</span>));</div>
<div class="line"><a name="l12138"></a><span class="lineno">12138</span>&#160; }</div>
<div class="line"><a name="l12139"></a><span class="lineno">12139</span>&#160; }</div>
<div class="line"><a name="l12140"></a><span class="lineno">12140</span>&#160; </div>
<div class="line"><a name="l12144"></a><span class="lineno">12144</span>&#160; <span class="keywordtype">void</span> write_bson_object_entry(<span class="keyword">const</span> string_t&amp; name,</div>
<div class="line"><a name="l12145"></a><span class="lineno">12145</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::object_t&amp; value)</div>
<div class="line"><a name="l12146"></a><span class="lineno">12146</span>&#160; {</div>
<div class="line"><a name="l12147"></a><span class="lineno">12147</span>&#160; write_bson_entry_header(name, 0x03); <span class="comment">// object</span></div>
<div class="line"><a name="l12148"></a><span class="lineno">12148</span>&#160; write_bson_object(value);</div>
<div class="line"><a name="l12149"></a><span class="lineno">12149</span>&#160; }</div>
<div class="line"><a name="l12150"></a><span class="lineno">12150</span>&#160; </div>
<div class="line"><a name="l12154"></a><span class="lineno">12154</span>&#160; <span class="keyword">static</span> std::size_t calc_bson_array_size(<span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::array_t&amp; value)</div>
<div class="line"><a name="l12155"></a><span class="lineno">12155</span>&#160; {</div>
<div class="line"><a name="l12156"></a><span class="lineno">12156</span>&#160; std::size_t array_index = 0ul;</div>
<div class="line"><a name="l12157"></a><span class="lineno">12157</span>&#160; </div>
<div class="line"><a name="l12158"></a><span class="lineno">12158</span>&#160; <span class="keyword">const</span> std::size_t embedded_document_size = std::accumulate(std::begin(value), std::end(value), 0ul, [&amp;array_index](std::size_t result, <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::array_t::value_type &amp; el)</div>
<div class="line"><a name="l12159"></a><span class="lineno">12159</span>&#160; {</div>
<div class="line"><a name="l12160"></a><span class="lineno">12160</span>&#160; <span class="keywordflow">return</span> result + calc_bson_element_size(<a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(array_index++), el);</div>
<div class="line"><a name="l12161"></a><span class="lineno">12161</span>&#160; });</div>
<div class="line"><a name="l12162"></a><span class="lineno">12162</span>&#160; </div>
<div class="line"><a name="l12163"></a><span class="lineno">12163</span>&#160; <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(std::int32_t) + embedded_document_size + 1ul;</div>
<div class="line"><a name="l12164"></a><span class="lineno">12164</span>&#160; }</div>
<div class="line"><a name="l12165"></a><span class="lineno">12165</span>&#160; </div>
<div class="line"><a name="l12169"></a><span class="lineno">12169</span>&#160; <span class="keywordtype">void</span> write_bson_array(<span class="keyword">const</span> string_t&amp; name,</div>
<div class="line"><a name="l12170"></a><span class="lineno">12170</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::array_t&amp; value)</div>
<div class="line"><a name="l12171"></a><span class="lineno">12171</span>&#160; {</div>
<div class="line"><a name="l12172"></a><span class="lineno">12172</span>&#160; write_bson_entry_header(name, 0x04); <span class="comment">// array</span></div>
<div class="line"><a name="l12173"></a><span class="lineno">12173</span>&#160; write_number&lt;std::int32_t, true&gt;(<span class="keyword">static_cast&lt;</span>std::int32_t<span class="keyword">&gt;</span>(calc_bson_array_size(value)));</div>
<div class="line"><a name="l12174"></a><span class="lineno">12174</span>&#160; </div>
<div class="line"><a name="l12175"></a><span class="lineno">12175</span>&#160; std::size_t array_index = 0ul;</div>
<div class="line"><a name="l12176"></a><span class="lineno">12176</span>&#160; </div>
<div class="line"><a name="l12177"></a><span class="lineno">12177</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; el : value)</div>
<div class="line"><a name="l12178"></a><span class="lineno">12178</span>&#160; {</div>
<div class="line"><a name="l12179"></a><span class="lineno">12179</span>&#160; write_bson_element(<a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(array_index++), el);</div>
<div class="line"><a name="l12180"></a><span class="lineno">12180</span>&#160; }</div>
<div class="line"><a name="l12181"></a><span class="lineno">12181</span>&#160; </div>
<div class="line"><a name="l12182"></a><span class="lineno">12182</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x00));</div>
<div class="line"><a name="l12183"></a><span class="lineno">12183</span>&#160; }</div>
<div class="line"><a name="l12184"></a><span class="lineno">12184</span>&#160; </div>
<div class="line"><a name="l12189"></a><span class="lineno">12189</span>&#160; <span class="keyword">static</span> std::size_t calc_bson_element_size(<span class="keyword">const</span> string_t&amp; name,</div>
<div class="line"><a name="l12190"></a><span class="lineno">12190</span>&#160; <span class="keyword">const</span> BasicJsonType&amp; j)</div>
<div class="line"><a name="l12191"></a><span class="lineno">12191</span>&#160; {</div>
<div class="line"><a name="l12192"></a><span class="lineno">12192</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> header_size = calc_bson_entry_header_size(name);</div>
<div class="line"><a name="l12193"></a><span class="lineno">12193</span>&#160; <span class="keywordflow">switch</span> (j.type())</div>
<div class="line"><a name="l12194"></a><span class="lineno">12194</span>&#160; {</div>
<div class="line"><a name="l12195"></a><span class="lineno">12195</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l12196"></a><span class="lineno">12196</span>&#160; <span class="keywordflow">return</span> header_size + calc_bson_object_size(*j.m_value.object);</div>
<div class="line"><a name="l12197"></a><span class="lineno">12197</span>&#160; </div>
<div class="line"><a name="l12198"></a><span class="lineno">12198</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l12199"></a><span class="lineno">12199</span>&#160; <span class="keywordflow">return</span> header_size + calc_bson_array_size(*j.m_value.array);</div>
<div class="line"><a name="l12200"></a><span class="lineno">12200</span>&#160; </div>
<div class="line"><a name="l12201"></a><span class="lineno">12201</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l12202"></a><span class="lineno">12202</span>&#160; <span class="keywordflow">return</span> header_size + 1ul;</div>
<div class="line"><a name="l12203"></a><span class="lineno">12203</span>&#160; </div>
<div class="line"><a name="l12204"></a><span class="lineno">12204</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l12205"></a><span class="lineno">12205</span>&#160; <span class="keywordflow">return</span> header_size + 8ul;</div>
<div class="line"><a name="l12206"></a><span class="lineno">12206</span>&#160; </div>
<div class="line"><a name="l12207"></a><span class="lineno">12207</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l12208"></a><span class="lineno">12208</span>&#160; <span class="keywordflow">return</span> header_size + calc_bson_integer_size(j.m_value.number_integer);</div>
<div class="line"><a name="l12209"></a><span class="lineno">12209</span>&#160; </div>
<div class="line"><a name="l12210"></a><span class="lineno">12210</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l12211"></a><span class="lineno">12211</span>&#160; <span class="keywordflow">return</span> header_size + calc_bson_unsigned_size(j.m_value.number_unsigned);</div>
<div class="line"><a name="l12212"></a><span class="lineno">12212</span>&#160; </div>
<div class="line"><a name="l12213"></a><span class="lineno">12213</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l12214"></a><span class="lineno">12214</span>&#160; <span class="keywordflow">return</span> header_size + calc_bson_string_size(*j.m_value.string);</div>
<div class="line"><a name="l12215"></a><span class="lineno">12215</span>&#160; </div>
<div class="line"><a name="l12216"></a><span class="lineno">12216</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l12217"></a><span class="lineno">12217</span>&#160; <span class="keywordflow">return</span> header_size + 0ul;</div>
<div class="line"><a name="l12218"></a><span class="lineno">12218</span>&#160; </div>
<div class="line"><a name="l12219"></a><span class="lineno">12219</span>&#160; <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a name="l12220"></a><span class="lineno">12220</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l12221"></a><span class="lineno">12221</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l12222"></a><span class="lineno">12222</span>&#160; <span class="keywordflow">return</span> 0ul;</div>
<div class="line"><a name="l12223"></a><span class="lineno">12223</span>&#160; <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a name="l12224"></a><span class="lineno">12224</span>&#160; }</div>
<div class="line"><a name="l12225"></a><span class="lineno">12225</span>&#160; }</div>
<div class="line"><a name="l12226"></a><span class="lineno">12226</span>&#160; </div>
<div class="line"><a name="l12234"></a><span class="lineno">12234</span>&#160; <span class="keywordtype">void</span> write_bson_element(<span class="keyword">const</span> string_t&amp; name,</div>
<div class="line"><a name="l12235"></a><span class="lineno">12235</span>&#160; <span class="keyword">const</span> BasicJsonType&amp; j)</div>
<div class="line"><a name="l12236"></a><span class="lineno">12236</span>&#160; {</div>
<div class="line"><a name="l12237"></a><span class="lineno">12237</span>&#160; <span class="keywordflow">switch</span> (j.type())</div>
<div class="line"><a name="l12238"></a><span class="lineno">12238</span>&#160; {</div>
<div class="line"><a name="l12239"></a><span class="lineno">12239</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l12240"></a><span class="lineno">12240</span>&#160; <span class="keywordflow">return</span> write_bson_object_entry(name, *j.m_value.object);</div>
<div class="line"><a name="l12241"></a><span class="lineno">12241</span>&#160; </div>
<div class="line"><a name="l12242"></a><span class="lineno">12242</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l12243"></a><span class="lineno">12243</span>&#160; <span class="keywordflow">return</span> write_bson_array(name, *j.m_value.array);</div>
<div class="line"><a name="l12244"></a><span class="lineno">12244</span>&#160; </div>
<div class="line"><a name="l12245"></a><span class="lineno">12245</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l12246"></a><span class="lineno">12246</span>&#160; <span class="keywordflow">return</span> write_bson_boolean(name, j.m_value.boolean);</div>
<div class="line"><a name="l12247"></a><span class="lineno">12247</span>&#160; </div>
<div class="line"><a name="l12248"></a><span class="lineno">12248</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l12249"></a><span class="lineno">12249</span>&#160; <span class="keywordflow">return</span> write_bson_double(name, j.m_value.number_float);</div>
<div class="line"><a name="l12250"></a><span class="lineno">12250</span>&#160; </div>
<div class="line"><a name="l12251"></a><span class="lineno">12251</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l12252"></a><span class="lineno">12252</span>&#160; <span class="keywordflow">return</span> write_bson_integer(name, j.m_value.number_integer);</div>
<div class="line"><a name="l12253"></a><span class="lineno">12253</span>&#160; </div>
<div class="line"><a name="l12254"></a><span class="lineno">12254</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l12255"></a><span class="lineno">12255</span>&#160; <span class="keywordflow">return</span> write_bson_unsigned(name, j.m_value.number_unsigned);</div>
<div class="line"><a name="l12256"></a><span class="lineno">12256</span>&#160; </div>
<div class="line"><a name="l12257"></a><span class="lineno">12257</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l12258"></a><span class="lineno">12258</span>&#160; <span class="keywordflow">return</span> write_bson_string(name, *j.m_value.string);</div>
<div class="line"><a name="l12259"></a><span class="lineno">12259</span>&#160; </div>
<div class="line"><a name="l12260"></a><span class="lineno">12260</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l12261"></a><span class="lineno">12261</span>&#160; <span class="keywordflow">return</span> write_bson_null(name);</div>
<div class="line"><a name="l12262"></a><span class="lineno">12262</span>&#160; </div>
<div class="line"><a name="l12263"></a><span class="lineno">12263</span>&#160; <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a name="l12264"></a><span class="lineno">12264</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l12265"></a><span class="lineno">12265</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l12266"></a><span class="lineno">12266</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l12267"></a><span class="lineno">12267</span>&#160; <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a name="l12268"></a><span class="lineno">12268</span>&#160; }</div>
<div class="line"><a name="l12269"></a><span class="lineno">12269</span>&#160; }</div>
<div class="line"><a name="l12270"></a><span class="lineno">12270</span>&#160; </div>
<div class="line"><a name="l12277"></a><span class="lineno">12277</span>&#160; <span class="keyword">static</span> std::size_t calc_bson_object_size(<span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::object_t&amp; value)</div>
<div class="line"><a name="l12278"></a><span class="lineno">12278</span>&#160; {</div>
<div class="line"><a name="l12279"></a><span class="lineno">12279</span>&#160; std::size_t document_size = std::accumulate(value.begin(), value.end(), 0ul,</div>
<div class="line"><a name="l12280"></a><span class="lineno">12280</span>&#160; [](<span class="keywordtype">size_t</span> result, <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::object_t::value_type &amp; el)</div>
<div class="line"><a name="l12281"></a><span class="lineno">12281</span>&#160; {</div>
<div class="line"><a name="l12282"></a><span class="lineno">12282</span>&#160; return result += calc_bson_element_size(el.first, el.second);</div>
<div class="line"><a name="l12283"></a><span class="lineno">12283</span>&#160; });</div>
<div class="line"><a name="l12284"></a><span class="lineno">12284</span>&#160; </div>
<div class="line"><a name="l12285"></a><span class="lineno">12285</span>&#160; <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(std::int32_t) + document_size + 1ul;</div>
<div class="line"><a name="l12286"></a><span class="lineno">12286</span>&#160; }</div>
<div class="line"><a name="l12287"></a><span class="lineno">12287</span>&#160; </div>
<div class="line"><a name="l12292"></a><span class="lineno">12292</span>&#160; <span class="keywordtype">void</span> write_bson_object(<span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::object_t&amp; value)</div>
<div class="line"><a name="l12293"></a><span class="lineno">12293</span>&#160; {</div>
<div class="line"><a name="l12294"></a><span class="lineno">12294</span>&#160; write_number&lt;std::int32_t, true&gt;(<span class="keyword">static_cast&lt;</span>std::int32_t<span class="keyword">&gt;</span>(calc_bson_object_size(value)));</div>
<div class="line"><a name="l12295"></a><span class="lineno">12295</span>&#160; </div>
<div class="line"><a name="l12296"></a><span class="lineno">12296</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; el : value)</div>
<div class="line"><a name="l12297"></a><span class="lineno">12297</span>&#160; {</div>
<div class="line"><a name="l12298"></a><span class="lineno">12298</span>&#160; write_bson_element(el.first, el.second);</div>
<div class="line"><a name="l12299"></a><span class="lineno">12299</span>&#160; }</div>
<div class="line"><a name="l12300"></a><span class="lineno">12300</span>&#160; </div>
<div class="line"><a name="l12301"></a><span class="lineno">12301</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x00));</div>
<div class="line"><a name="l12302"></a><span class="lineno">12302</span>&#160; }</div>
<div class="line"><a name="l12303"></a><span class="lineno">12303</span>&#160; </div>
<div class="line"><a name="l12305"></a><span class="lineno">12305</span>&#160; <span class="comment">// CBOR //</span></div>
<div class="line"><a name="l12307"></a><span class="lineno">12307</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l12308"></a><span class="lineno">12308</span>&#160; <span class="keyword">static</span> constexpr CharType get_cbor_float_prefix(<span class="keywordtype">float</span> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l12309"></a><span class="lineno">12309</span>&#160; {</div>
<div class="line"><a name="l12310"></a><span class="lineno">12310</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xFA); <span class="comment">// Single-Precision Float</span></div>
<div class="line"><a name="l12311"></a><span class="lineno">12311</span>&#160; }</div>
<div class="line"><a name="l12312"></a><span class="lineno">12312</span>&#160; </div>
<div class="line"><a name="l12313"></a><span class="lineno">12313</span>&#160; <span class="keyword">static</span> constexpr CharType get_cbor_float_prefix(<span class="keywordtype">double</span> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l12314"></a><span class="lineno">12314</span>&#160; {</div>
<div class="line"><a name="l12315"></a><span class="lineno">12315</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xFB); <span class="comment">// Double-Precision Float</span></div>
<div class="line"><a name="l12316"></a><span class="lineno">12316</span>&#160; }</div>
<div class="line"><a name="l12317"></a><span class="lineno">12317</span>&#160; </div>
<div class="line"><a name="l12319"></a><span class="lineno">12319</span>&#160; <span class="comment">// MsgPack //</span></div>
<div class="line"><a name="l12321"></a><span class="lineno">12321</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l12322"></a><span class="lineno">12322</span>&#160; <span class="keyword">static</span> constexpr CharType get_msgpack_float_prefix(<span class="keywordtype">float</span> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l12323"></a><span class="lineno">12323</span>&#160; {</div>
<div class="line"><a name="l12324"></a><span class="lineno">12324</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCA); <span class="comment">// float 32</span></div>
<div class="line"><a name="l12325"></a><span class="lineno">12325</span>&#160; }</div>
<div class="line"><a name="l12326"></a><span class="lineno">12326</span>&#160; </div>
<div class="line"><a name="l12327"></a><span class="lineno">12327</span>&#160; <span class="keyword">static</span> constexpr CharType get_msgpack_float_prefix(<span class="keywordtype">double</span> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l12328"></a><span class="lineno">12328</span>&#160; {</div>
<div class="line"><a name="l12329"></a><span class="lineno">12329</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCB); <span class="comment">// float 64</span></div>
<div class="line"><a name="l12330"></a><span class="lineno">12330</span>&#160; }</div>
<div class="line"><a name="l12331"></a><span class="lineno">12331</span>&#160; </div>
<div class="line"><a name="l12333"></a><span class="lineno">12333</span>&#160; <span class="comment">// UBJSON //</span></div>
<div class="line"><a name="l12335"></a><span class="lineno">12335</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l12336"></a><span class="lineno">12336</span>&#160; <span class="comment">// UBJSON: write number (floating point)</span></div>
<div class="line"><a name="l12337"></a><span class="lineno">12337</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> NumberType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l12338"></a><span class="lineno">12338</span>&#160; std::is_floating_point&lt;NumberType&gt;::value, <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l12339"></a><span class="lineno">12339</span>&#160; <span class="keywordtype">void</span> write_number_with_ubjson_prefix(<span class="keyword">const</span> NumberType n,</div>
<div class="line"><a name="l12340"></a><span class="lineno">12340</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> add_prefix)</div>
<div class="line"><a name="l12341"></a><span class="lineno">12341</span>&#160; {</div>
<div class="line"><a name="l12342"></a><span class="lineno">12342</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12343"></a><span class="lineno">12343</span>&#160; {</div>
<div class="line"><a name="l12344"></a><span class="lineno">12344</span>&#160; oa-&gt;write_character(get_ubjson_float_prefix(n));</div>
<div class="line"><a name="l12345"></a><span class="lineno">12345</span>&#160; }</div>
<div class="line"><a name="l12346"></a><span class="lineno">12346</span>&#160; write_number(n);</div>
<div class="line"><a name="l12347"></a><span class="lineno">12347</span>&#160; }</div>
<div class="line"><a name="l12348"></a><span class="lineno">12348</span>&#160; </div>
<div class="line"><a name="l12349"></a><span class="lineno">12349</span>&#160; <span class="comment">// UBJSON: write number (unsigned integer)</span></div>
<div class="line"><a name="l12350"></a><span class="lineno">12350</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> NumberType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l12351"></a><span class="lineno">12351</span>&#160; std::is_unsigned&lt;NumberType&gt;::value, <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l12352"></a><span class="lineno">12352</span>&#160; <span class="keywordtype">void</span> write_number_with_ubjson_prefix(<span class="keyword">const</span> NumberType n,</div>
<div class="line"><a name="l12353"></a><span class="lineno">12353</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> add_prefix)</div>
<div class="line"><a name="l12354"></a><span class="lineno">12354</span>&#160; {</div>
<div class="line"><a name="l12355"></a><span class="lineno">12355</span>&#160; <span class="keywordflow">if</span> (n &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::int8_t&gt;::max)()))</div>
<div class="line"><a name="l12356"></a><span class="lineno">12356</span>&#160; {</div>
<div class="line"><a name="l12357"></a><span class="lineno">12357</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12358"></a><span class="lineno">12358</span>&#160; {</div>
<div class="line"><a name="l12359"></a><span class="lineno">12359</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;i&#39;</span>)); <span class="comment">// int8</span></div>
<div class="line"><a name="l12360"></a><span class="lineno">12360</span>&#160; }</div>
<div class="line"><a name="l12361"></a><span class="lineno">12361</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(n));</div>
<div class="line"><a name="l12362"></a><span class="lineno">12362</span>&#160; }</div>
<div class="line"><a name="l12363"></a><span class="lineno">12363</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l12364"></a><span class="lineno">12364</span>&#160; {</div>
<div class="line"><a name="l12365"></a><span class="lineno">12365</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12366"></a><span class="lineno">12366</span>&#160; {</div>
<div class="line"><a name="l12367"></a><span class="lineno">12367</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;U&#39;</span>)); <span class="comment">// uint8</span></div>
<div class="line"><a name="l12368"></a><span class="lineno">12368</span>&#160; }</div>
<div class="line"><a name="l12369"></a><span class="lineno">12369</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(n));</div>
<div class="line"><a name="l12370"></a><span class="lineno">12370</span>&#160; }</div>
<div class="line"><a name="l12371"></a><span class="lineno">12371</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::int16_t&gt;::max)()))</div>
<div class="line"><a name="l12372"></a><span class="lineno">12372</span>&#160; {</div>
<div class="line"><a name="l12373"></a><span class="lineno">12373</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12374"></a><span class="lineno">12374</span>&#160; {</div>
<div class="line"><a name="l12375"></a><span class="lineno">12375</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;I&#39;</span>)); <span class="comment">// int16</span></div>
<div class="line"><a name="l12376"></a><span class="lineno">12376</span>&#160; }</div>
<div class="line"><a name="l12377"></a><span class="lineno">12377</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int16_t<span class="keyword">&gt;</span>(n));</div>
<div class="line"><a name="l12378"></a><span class="lineno">12378</span>&#160; }</div>
<div class="line"><a name="l12379"></a><span class="lineno">12379</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::int32_t&gt;::max)()))</div>
<div class="line"><a name="l12380"></a><span class="lineno">12380</span>&#160; {</div>
<div class="line"><a name="l12381"></a><span class="lineno">12381</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12382"></a><span class="lineno">12382</span>&#160; {</div>
<div class="line"><a name="l12383"></a><span class="lineno">12383</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;l&#39;</span>)); <span class="comment">// int32</span></div>
<div class="line"><a name="l12384"></a><span class="lineno">12384</span>&#160; }</div>
<div class="line"><a name="l12385"></a><span class="lineno">12385</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int32_t<span class="keyword">&gt;</span>(n));</div>
<div class="line"><a name="l12386"></a><span class="lineno">12386</span>&#160; }</div>
<div class="line"><a name="l12387"></a><span class="lineno">12387</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::int64_t&gt;::max)()))</div>
<div class="line"><a name="l12388"></a><span class="lineno">12388</span>&#160; {</div>
<div class="line"><a name="l12389"></a><span class="lineno">12389</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12390"></a><span class="lineno">12390</span>&#160; {</div>
<div class="line"><a name="l12391"></a><span class="lineno">12391</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;L&#39;</span>)); <span class="comment">// int64</span></div>
<div class="line"><a name="l12392"></a><span class="lineno">12392</span>&#160; }</div>
<div class="line"><a name="l12393"></a><span class="lineno">12393</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int64_t<span class="keyword">&gt;</span>(n));</div>
<div class="line"><a name="l12394"></a><span class="lineno">12394</span>&#160; }</div>
<div class="line"><a name="l12395"></a><span class="lineno">12395</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l12396"></a><span class="lineno">12396</span>&#160; {</div>
<div class="line"><a name="l12397"></a><span class="lineno">12397</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(407, <span class="stringliteral">&quot;integer number &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(n) + <span class="stringliteral">&quot; cannot be represented by UBJSON as it does not fit int64&quot;</span>));</div>
<div class="line"><a name="l12398"></a><span class="lineno">12398</span>&#160; }</div>
<div class="line"><a name="l12399"></a><span class="lineno">12399</span>&#160; }</div>
<div class="line"><a name="l12400"></a><span class="lineno">12400</span>&#160; </div>
<div class="line"><a name="l12401"></a><span class="lineno">12401</span>&#160; <span class="comment">// UBJSON: write number (signed integer)</span></div>
<div class="line"><a name="l12402"></a><span class="lineno">12402</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> NumberType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l12403"></a><span class="lineno">12403</span>&#160; std::is_signed&lt;NumberType&gt;::value and</div>
<div class="line"><a name="l12404"></a><span class="lineno">12404</span>&#160; not std::is_floating_point&lt;NumberType&gt;::value, <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="line"><a name="l12405"></a><span class="lineno">12405</span>&#160; <span class="keywordtype">void</span> write_number_with_ubjson_prefix(<span class="keyword">const</span> NumberType n,</div>
<div class="line"><a name="l12406"></a><span class="lineno">12406</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> add_prefix)</div>
<div class="line"><a name="l12407"></a><span class="lineno">12407</span>&#160; {</div>
<div class="line"><a name="l12408"></a><span class="lineno">12408</span>&#160; <span class="keywordflow">if</span> ((std::numeric_limits&lt;std::int8_t&gt;::min)() &lt;= n and n &lt;= (std::numeric_limits&lt;std::int8_t&gt;::max)())</div>
<div class="line"><a name="l12409"></a><span class="lineno">12409</span>&#160; {</div>
<div class="line"><a name="l12410"></a><span class="lineno">12410</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12411"></a><span class="lineno">12411</span>&#160; {</div>
<div class="line"><a name="l12412"></a><span class="lineno">12412</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;i&#39;</span>)); <span class="comment">// int8</span></div>
<div class="line"><a name="l12413"></a><span class="lineno">12413</span>&#160; }</div>
<div class="line"><a name="l12414"></a><span class="lineno">12414</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int8_t<span class="keyword">&gt;</span>(n));</div>
<div class="line"><a name="l12415"></a><span class="lineno">12415</span>&#160; }</div>
<div class="line"><a name="l12416"></a><span class="lineno">12416</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">static_cast&lt;</span>std::int64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::uint8_t&gt;::min)()) &lt;= n and n &lt;= <span class="keyword">static_cast&lt;</span>std::int64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::uint8_t&gt;::max)()))</div>
<div class="line"><a name="l12417"></a><span class="lineno">12417</span>&#160; {</div>
<div class="line"><a name="l12418"></a><span class="lineno">12418</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12419"></a><span class="lineno">12419</span>&#160; {</div>
<div class="line"><a name="l12420"></a><span class="lineno">12420</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;U&#39;</span>)); <span class="comment">// uint8</span></div>
<div class="line"><a name="l12421"></a><span class="lineno">12421</span>&#160; }</div>
<div class="line"><a name="l12422"></a><span class="lineno">12422</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(n));</div>
<div class="line"><a name="l12423"></a><span class="lineno">12423</span>&#160; }</div>
<div class="line"><a name="l12424"></a><span class="lineno">12424</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((std::numeric_limits&lt;std::int16_t&gt;::min)() &lt;= n and n &lt;= (std::numeric_limits&lt;std::int16_t&gt;::max)())</div>
<div class="line"><a name="l12425"></a><span class="lineno">12425</span>&#160; {</div>
<div class="line"><a name="l12426"></a><span class="lineno">12426</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12427"></a><span class="lineno">12427</span>&#160; {</div>
<div class="line"><a name="l12428"></a><span class="lineno">12428</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;I&#39;</span>)); <span class="comment">// int16</span></div>
<div class="line"><a name="l12429"></a><span class="lineno">12429</span>&#160; }</div>
<div class="line"><a name="l12430"></a><span class="lineno">12430</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int16_t<span class="keyword">&gt;</span>(n));</div>
<div class="line"><a name="l12431"></a><span class="lineno">12431</span>&#160; }</div>
<div class="line"><a name="l12432"></a><span class="lineno">12432</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((std::numeric_limits&lt;std::int32_t&gt;::min)() &lt;= n and n &lt;= (std::numeric_limits&lt;std::int32_t&gt;::max)())</div>
<div class="line"><a name="l12433"></a><span class="lineno">12433</span>&#160; {</div>
<div class="line"><a name="l12434"></a><span class="lineno">12434</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12435"></a><span class="lineno">12435</span>&#160; {</div>
<div class="line"><a name="l12436"></a><span class="lineno">12436</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;l&#39;</span>)); <span class="comment">// int32</span></div>
<div class="line"><a name="l12437"></a><span class="lineno">12437</span>&#160; }</div>
<div class="line"><a name="l12438"></a><span class="lineno">12438</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int32_t<span class="keyword">&gt;</span>(n));</div>
<div class="line"><a name="l12439"></a><span class="lineno">12439</span>&#160; }</div>
<div class="line"><a name="l12440"></a><span class="lineno">12440</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((std::numeric_limits&lt;std::int64_t&gt;::min)() &lt;= n and n &lt;= (std::numeric_limits&lt;std::int64_t&gt;::max)())</div>
<div class="line"><a name="l12441"></a><span class="lineno">12441</span>&#160; {</div>
<div class="line"><a name="l12442"></a><span class="lineno">12442</span>&#160; <span class="keywordflow">if</span> (add_prefix)</div>
<div class="line"><a name="l12443"></a><span class="lineno">12443</span>&#160; {</div>
<div class="line"><a name="l12444"></a><span class="lineno">12444</span>&#160; oa-&gt;write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">&#39;L&#39;</span>)); <span class="comment">// int64</span></div>
<div class="line"><a name="l12445"></a><span class="lineno">12445</span>&#160; }</div>
<div class="line"><a name="l12446"></a><span class="lineno">12446</span>&#160; write_number(<span class="keyword">static_cast&lt;</span>std::int64_t<span class="keyword">&gt;</span>(n));</div>
<div class="line"><a name="l12447"></a><span class="lineno">12447</span>&#160; }</div>
<div class="line"><a name="l12448"></a><span class="lineno">12448</span>&#160; <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a name="l12449"></a><span class="lineno">12449</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l12450"></a><span class="lineno">12450</span>&#160; {</div>
<div class="line"><a name="l12451"></a><span class="lineno">12451</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(407, <span class="stringliteral">&quot;integer number &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(n) + <span class="stringliteral">&quot; cannot be represented by UBJSON as it does not fit int64&quot;</span>));</div>
<div class="line"><a name="l12452"></a><span class="lineno">12452</span>&#160; }</div>
<div class="line"><a name="l12453"></a><span class="lineno">12453</span>&#160; <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a name="l12454"></a><span class="lineno">12454</span>&#160; }</div>
<div class="line"><a name="l12455"></a><span class="lineno">12455</span>&#160; </div>
<div class="line"><a name="l12465"></a><span class="lineno">12465</span>&#160; CharType ubjson_prefix(<span class="keyword">const</span> BasicJsonType&amp; j) <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l12466"></a><span class="lineno">12466</span>&#160; {</div>
<div class="line"><a name="l12467"></a><span class="lineno">12467</span>&#160; <span class="keywordflow">switch</span> (j.type())</div>
<div class="line"><a name="l12468"></a><span class="lineno">12468</span>&#160; {</div>
<div class="line"><a name="l12469"></a><span class="lineno">12469</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l12470"></a><span class="lineno">12470</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;Z&#39;</span>;</div>
<div class="line"><a name="l12471"></a><span class="lineno">12471</span>&#160; </div>
<div class="line"><a name="l12472"></a><span class="lineno">12472</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l12473"></a><span class="lineno">12473</span>&#160; <span class="keywordflow">return</span> j.m_value.boolean ? <span class="charliteral">&#39;T&#39;</span> : <span class="charliteral">&#39;F&#39;</span>;</div>
<div class="line"><a name="l12474"></a><span class="lineno">12474</span>&#160; </div>
<div class="line"><a name="l12475"></a><span class="lineno">12475</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l12476"></a><span class="lineno">12476</span>&#160; {</div>
<div class="line"><a name="l12477"></a><span class="lineno">12477</span>&#160; <span class="keywordflow">if</span> ((std::numeric_limits&lt;std::int8_t&gt;::min)() &lt;= j.m_value.number_integer and j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::int8_t&gt;::max)())</div>
<div class="line"><a name="l12478"></a><span class="lineno">12478</span>&#160; {</div>
<div class="line"><a name="l12479"></a><span class="lineno">12479</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;i&#39;</span>;</div>
<div class="line"><a name="l12480"></a><span class="lineno">12480</span>&#160; }</div>
<div class="line"><a name="l12481"></a><span class="lineno">12481</span>&#160; <span class="keywordflow">if</span> ((std::numeric_limits&lt;std::uint8_t&gt;::min)() &lt;= j.m_value.number_integer and j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::uint8_t&gt;::max)())</div>
<div class="line"><a name="l12482"></a><span class="lineno">12482</span>&#160; {</div>
<div class="line"><a name="l12483"></a><span class="lineno">12483</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;U&#39;</span>;</div>
<div class="line"><a name="l12484"></a><span class="lineno">12484</span>&#160; }</div>
<div class="line"><a name="l12485"></a><span class="lineno">12485</span>&#160; <span class="keywordflow">if</span> ((std::numeric_limits&lt;std::int16_t&gt;::min)() &lt;= j.m_value.number_integer and j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::int16_t&gt;::max)())</div>
<div class="line"><a name="l12486"></a><span class="lineno">12486</span>&#160; {</div>
<div class="line"><a name="l12487"></a><span class="lineno">12487</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;I&#39;</span>;</div>
<div class="line"><a name="l12488"></a><span class="lineno">12488</span>&#160; }</div>
<div class="line"><a name="l12489"></a><span class="lineno">12489</span>&#160; <span class="keywordflow">if</span> ((std::numeric_limits&lt;std::int32_t&gt;::min)() &lt;= j.m_value.number_integer and j.m_value.number_integer &lt;= (std::numeric_limits&lt;std::int32_t&gt;::max)())</div>
<div class="line"><a name="l12490"></a><span class="lineno">12490</span>&#160; {</div>
<div class="line"><a name="l12491"></a><span class="lineno">12491</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;l&#39;</span>;</div>
<div class="line"><a name="l12492"></a><span class="lineno">12492</span>&#160; }</div>
<div class="line"><a name="l12493"></a><span class="lineno">12493</span>&#160; <span class="comment">// no check and assume int64_t (see note above)</span></div>
<div class="line"><a name="l12494"></a><span class="lineno">12494</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;L&#39;</span>;</div>
<div class="line"><a name="l12495"></a><span class="lineno">12495</span>&#160; }</div>
<div class="line"><a name="l12496"></a><span class="lineno">12496</span>&#160; </div>
<div class="line"><a name="l12497"></a><span class="lineno">12497</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l12498"></a><span class="lineno">12498</span>&#160; {</div>
<div class="line"><a name="l12499"></a><span class="lineno">12499</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::int8_t&gt;::max)()))</div>
<div class="line"><a name="l12500"></a><span class="lineno">12500</span>&#160; {</div>
<div class="line"><a name="l12501"></a><span class="lineno">12501</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;i&#39;</span>;</div>
<div class="line"><a name="l12502"></a><span class="lineno">12502</span>&#160; }</div>
<div class="line"><a name="l12503"></a><span class="lineno">12503</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::uint8_t&gt;::max)()))</div>
<div class="line"><a name="l12504"></a><span class="lineno">12504</span>&#160; {</div>
<div class="line"><a name="l12505"></a><span class="lineno">12505</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;U&#39;</span>;</div>
<div class="line"><a name="l12506"></a><span class="lineno">12506</span>&#160; }</div>
<div class="line"><a name="l12507"></a><span class="lineno">12507</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::int16_t&gt;::max)()))</div>
<div class="line"><a name="l12508"></a><span class="lineno">12508</span>&#160; {</div>
<div class="line"><a name="l12509"></a><span class="lineno">12509</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;I&#39;</span>;</div>
<div class="line"><a name="l12510"></a><span class="lineno">12510</span>&#160; }</div>
<div class="line"><a name="l12511"></a><span class="lineno">12511</span>&#160; <span class="keywordflow">if</span> (j.m_value.number_unsigned &lt;= <span class="keyword">static_cast&lt;</span>std::uint64_t<span class="keyword">&gt;</span>((std::numeric_limits&lt;std::int32_t&gt;::max)()))</div>
<div class="line"><a name="l12512"></a><span class="lineno">12512</span>&#160; {</div>
<div class="line"><a name="l12513"></a><span class="lineno">12513</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;l&#39;</span>;</div>
<div class="line"><a name="l12514"></a><span class="lineno">12514</span>&#160; }</div>
<div class="line"><a name="l12515"></a><span class="lineno">12515</span>&#160; <span class="comment">// no check and assume int64_t (see note above)</span></div>
<div class="line"><a name="l12516"></a><span class="lineno">12516</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;L&#39;</span>;</div>
<div class="line"><a name="l12517"></a><span class="lineno">12517</span>&#160; }</div>
<div class="line"><a name="l12518"></a><span class="lineno">12518</span>&#160; </div>
<div class="line"><a name="l12519"></a><span class="lineno">12519</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l12520"></a><span class="lineno">12520</span>&#160; <span class="keywordflow">return</span> get_ubjson_float_prefix(j.m_value.number_float);</div>
<div class="line"><a name="l12521"></a><span class="lineno">12521</span>&#160; </div>
<div class="line"><a name="l12522"></a><span class="lineno">12522</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l12523"></a><span class="lineno">12523</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;S&#39;</span>;</div>
<div class="line"><a name="l12524"></a><span class="lineno">12524</span>&#160; </div>
<div class="line"><a name="l12525"></a><span class="lineno">12525</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l12526"></a><span class="lineno">12526</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;[&#39;</span>;</div>
<div class="line"><a name="l12527"></a><span class="lineno">12527</span>&#160; </div>
<div class="line"><a name="l12528"></a><span class="lineno">12528</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l12529"></a><span class="lineno">12529</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;{&#39;</span>;</div>
<div class="line"><a name="l12530"></a><span class="lineno">12530</span>&#160; </div>
<div class="line"><a name="l12531"></a><span class="lineno">12531</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// discarded values</span></div>
<div class="line"><a name="l12532"></a><span class="lineno">12532</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;N&#39;</span>;</div>
<div class="line"><a name="l12533"></a><span class="lineno">12533</span>&#160; }</div>
<div class="line"><a name="l12534"></a><span class="lineno">12534</span>&#160; }</div>
<div class="line"><a name="l12535"></a><span class="lineno">12535</span>&#160; </div>
<div class="line"><a name="l12536"></a><span class="lineno">12536</span>&#160; <span class="keyword">static</span> constexpr CharType get_ubjson_float_prefix(<span class="keywordtype">float</span> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l12537"></a><span class="lineno">12537</span>&#160; {</div>
<div class="line"><a name="l12538"></a><span class="lineno">12538</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;d&#39;</span>; <span class="comment">// float 32</span></div>
<div class="line"><a name="l12539"></a><span class="lineno">12539</span>&#160; }</div>
<div class="line"><a name="l12540"></a><span class="lineno">12540</span>&#160; </div>
<div class="line"><a name="l12541"></a><span class="lineno">12541</span>&#160; <span class="keyword">static</span> constexpr CharType get_ubjson_float_prefix(<span class="keywordtype">double</span> <span class="comment">/*unused*/</span>)</div>
<div class="line"><a name="l12542"></a><span class="lineno">12542</span>&#160; {</div>
<div class="line"><a name="l12543"></a><span class="lineno">12543</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;D&#39;</span>; <span class="comment">// float 64</span></div>
<div class="line"><a name="l12544"></a><span class="lineno">12544</span>&#160; }</div>
<div class="line"><a name="l12545"></a><span class="lineno">12545</span>&#160; </div>
<div class="line"><a name="l12547"></a><span class="lineno">12547</span>&#160; <span class="comment">// Utility functions //</span></div>
<div class="line"><a name="l12549"></a><span class="lineno">12549</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l12550"></a><span class="lineno">12550</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l12551"></a><span class="lineno">12551</span>&#160;<span class="comment"> @brief write a number to output input</span></div>
<div class="line"><a name="l12552"></a><span class="lineno">12552</span>&#160;<span class="comment"> @param[in] n number of type @a NumberType</span></div>
<div class="line"><a name="l12553"></a><span class="lineno">12553</span>&#160;<span class="comment"> @tparam NumberType the type of the number</span></div>
<div class="line"><a name="l12554"></a><span class="lineno">12554</span>&#160;<span class="comment"> @tparam OutputIsLittleEndian Set to true if output data is</span></div>
<div class="line"><a name="l12555"></a><span class="lineno">12555</span>&#160;<span class="comment"> required to be little endian</span></div>
<div class="line"><a name="l12556"></a><span class="lineno">12556</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l12557"></a><span class="lineno">12557</span>&#160;<span class="comment"> @note This function needs to respect the system&#39;s endianess, because bytes</span></div>
<div class="line"><a name="l12558"></a><span class="lineno">12558</span>&#160;<span class="comment"> in CBOR, MessagePack, and UBJSON are stored in network order (big</span></div>
<div class="line"><a name="l12559"></a><span class="lineno">12559</span>&#160;<span class="comment"> endian) and therefore need reordering on little endian systems.</span></div>
<div class="line"><a name="l12560"></a><span class="lineno">12560</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l12561"></a><span class="lineno">12561</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> NumberType, <span class="keywordtype">bool</span> OutputIsLittleEndian = false&gt;</div>
<div class="line"><a name="l12562"></a><span class="lineno">12562</span>&#160; <span class="keywordtype">void</span> write_number(<span class="keyword">const</span> NumberType n)</div>
<div class="line"><a name="l12563"></a><span class="lineno">12563</span>&#160; {</div>
<div class="line"><a name="l12564"></a><span class="lineno">12564</span>&#160; <span class="comment">// step 1: write number to array of length NumberType</span></div>
<div class="line"><a name="l12565"></a><span class="lineno">12565</span>&#160; std::array&lt;CharType, <span class="keyword">sizeof</span>(NumberType)&gt; vec;</div>
<div class="line"><a name="l12566"></a><span class="lineno">12566</span>&#160; std::memcpy(vec.data(), &amp;n, <span class="keyword">sizeof</span>(NumberType));</div>
<div class="line"><a name="l12567"></a><span class="lineno">12567</span>&#160; </div>
<div class="line"><a name="l12568"></a><span class="lineno">12568</span>&#160; <span class="comment">// step 2: write array to output (with possible reordering)</span></div>
<div class="line"><a name="l12569"></a><span class="lineno">12569</span>&#160; <span class="keywordflow">if</span> (is_little_endian != OutputIsLittleEndian)</div>
<div class="line"><a name="l12570"></a><span class="lineno">12570</span>&#160; {</div>
<div class="line"><a name="l12571"></a><span class="lineno">12571</span>&#160; <span class="comment">// reverse byte order prior to conversion if necessary</span></div>
<div class="line"><a name="l12572"></a><span class="lineno">12572</span>&#160; std::reverse(vec.begin(), vec.end());</div>
<div class="line"><a name="l12573"></a><span class="lineno">12573</span>&#160; }</div>
<div class="line"><a name="l12574"></a><span class="lineno">12574</span>&#160; </div>
<div class="line"><a name="l12575"></a><span class="lineno">12575</span>&#160; oa-&gt;write_characters(vec.data(), <span class="keyword">sizeof</span>(NumberType));</div>
<div class="line"><a name="l12576"></a><span class="lineno">12576</span>&#160; }</div>
<div class="line"><a name="l12577"></a><span class="lineno">12577</span>&#160; </div>
<div class="line"><a name="l12578"></a><span class="lineno">12578</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l12579"></a><span class="lineno">12579</span>&#160; <span class="comment">// The following to_char_type functions are implement the conversion</span></div>
<div class="line"><a name="l12580"></a><span class="lineno">12580</span>&#160; <span class="comment">// between uint8_t and CharType. In case CharType is not unsigned,</span></div>
<div class="line"><a name="l12581"></a><span class="lineno">12581</span>&#160; <span class="comment">// such a conversion is required to allow values greater than 128.</span></div>
<div class="line"><a name="l12582"></a><span class="lineno">12582</span>&#160; <span class="comment">// See &lt;https://github.com/nlohmann/json/issues/1286&gt; for a discussion.</span></div>
<div class="line"><a name="l12583"></a><span class="lineno">12583</span>&#160; <span class="keyword">template</span> &lt; <span class="keyword">typename</span> C = CharType,</div>
<div class="line"><a name="l12584"></a><span class="lineno">12584</span>&#160; enable_if_t &lt; std::is_signed&lt;C&gt;::value and std::is_signed&lt;char&gt;::value &gt; * = <span class="keyword">nullptr</span> &gt;</div>
<div class="line"><a name="l12585"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">12585</a></span>&#160; <span class="keyword">static</span> constexpr CharType <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(std::uint8_t x) noexcept</div>
<div class="line"><a name="l12586"></a><span class="lineno">12586</span>&#160; {</div>
<div class="line"><a name="l12587"></a><span class="lineno">12587</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(&amp;x);</div>
<div class="line"><a name="l12588"></a><span class="lineno">12588</span>&#160; }</div>
<div class="line"><a name="l12589"></a><span class="lineno">12589</span>&#160; </div>
<div class="line"><a name="l12590"></a><span class="lineno">12590</span>&#160; <span class="keyword">template</span> &lt; <span class="keyword">typename</span> C = CharType,</div>
<div class="line"><a name="l12591"></a><span class="lineno">12591</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t &lt; std::is_signed&lt;C&gt;::value</a> and std::is_unsigned&lt;char&gt;::value &gt; * = <span class="keyword">nullptr</span> &gt;</div>
<div class="line"><a name="l12592"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#a5e46f0dd3550901b15cf85265808d1ec">12592</a></span>&#160; <span class="keyword">static</span> CharType <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a5e46f0dd3550901b15cf85265808d1ec">to_char_type</a>(std::uint8_t x) noexcept</div>
<div class="line"><a name="l12593"></a><span class="lineno">12593</span>&#160; {</div>
<div class="line"><a name="l12594"></a><span class="lineno">12594</span>&#160; static_assert(<span class="keyword">sizeof</span>(std::uint8_t) == <span class="keyword">sizeof</span>(CharType), <span class="stringliteral">&quot;size of CharType must be equal to std::uint8_t&quot;</span>);</div>
<div class="line"><a name="l12595"></a><span class="lineno">12595</span>&#160; static_assert(std::is_pod&lt;CharType&gt;::value, <span class="stringliteral">&quot;CharType must be POD&quot;</span>);</div>
<div class="line"><a name="l12596"></a><span class="lineno">12596</span>&#160; CharType result;</div>
<div class="line"><a name="l12597"></a><span class="lineno">12597</span>&#160; std::memcpy(&amp;result, &amp;x, <span class="keyword">sizeof</span>(x));</div>
<div class="line"><a name="l12598"></a><span class="lineno">12598</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l12599"></a><span class="lineno">12599</span>&#160; }</div>
<div class="line"><a name="l12600"></a><span class="lineno">12600</span>&#160; </div>
<div class="line"><a name="l12601"></a><span class="lineno">12601</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> C = CharType,</div>
<div class="line"><a name="l12602"></a><span class="lineno">12602</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t&lt;std::is_unsigned&lt;C&gt;::value</a>&gt;* = <span class="keyword">nullptr</span>&gt;</div>
<div class="line"><a name="l12603"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">12603</a></span>&#160; <span class="keyword">static</span> constexpr CharType <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(std::uint8_t x) noexcept</div>
<div class="line"><a name="l12604"></a><span class="lineno">12604</span>&#160; {</div>
<div class="line"><a name="l12605"></a><span class="lineno">12605</span>&#160; <span class="keywordflow">return</span> x;</div>
<div class="line"><a name="l12606"></a><span class="lineno">12606</span>&#160; }</div>
<div class="line"><a name="l12607"></a><span class="lineno">12607</span>&#160; </div>
<div class="line"><a name="l12608"></a><span class="lineno">12608</span>&#160; <span class="keyword">template</span> &lt; <span class="keyword">typename</span> InputCharType, <span class="keyword">typename</span> C = CharType,</div>
<div class="line"><a name="l12609"></a><span class="lineno">12609</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> &lt;</div>
<div class="line"><a name="l12610"></a><span class="lineno">12610</span>&#160; std::is_signed&lt;C&gt;::value and</div>
<div class="line"><a name="l12611"></a><span class="lineno">12611</span>&#160; std::is_signed&lt;char&gt;::value and</div>
<div class="line"><a name="l12612"></a><span class="lineno">12612</span>&#160; std::is_same&lt;char, typename std::remove_cv&lt;InputCharType&gt;::type&gt;::value</div>
<div class="line"><a name="l12613"></a><span class="lineno">12613</span>&#160; &gt; * = <span class="keyword">nullptr</span> &gt;</div>
<div class="line"><a name="l12614"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#a2c2b2132ce56b3b45593374b622baa67">12614</a></span>&#160; <span class="keyword">static</span> constexpr CharType <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a2c2b2132ce56b3b45593374b622baa67">to_char_type</a>(InputCharType x) noexcept</div>
<div class="line"><a name="l12615"></a><span class="lineno">12615</span>&#160; {</div>
<div class="line"><a name="l12616"></a><span class="lineno">12616</span>&#160; <span class="keywordflow">return</span> x;</div>
<div class="line"><a name="l12617"></a><span class="lineno">12617</span>&#160; }</div>
<div class="line"><a name="l12618"></a><span class="lineno">12618</span>&#160; </div>
<div class="line"><a name="l12619"></a><span class="lineno">12619</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l12621"></a><span class="lineno">12621</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> is_little_endian = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a1e31dbfcf9567c8c2d4f0e4eb1b0230a">binary_reader&lt;BasicJsonType&gt;::little_endianess</a>();</div>
<div class="line"><a name="l12622"></a><span class="lineno">12622</span>&#160; </div>
<div class="line"><a name="l12624"></a><span class="lineno">12624</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t&lt;CharType&gt;</a> oa = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l12625"></a><span class="lineno">12625</span>&#160;};</div>
<div class="line"><a name="l12626"></a><span class="lineno">12626</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l12627"></a><span class="lineno">12627</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l12628"></a><span class="lineno">12628</span>&#160; </div>
<div class="line"><a name="l12629"></a><span class="lineno">12629</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/output/output_adapters.hpp&gt;</span></div>
<div class="line"><a name="l12630"></a><span class="lineno">12630</span>&#160; </div>
<div class="line"><a name="l12631"></a><span class="lineno">12631</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/output/serializer.hpp&gt;</span></div>
<div class="line"><a name="l12632"></a><span class="lineno">12632</span>&#160; </div>
<div class="line"><a name="l12633"></a><span class="lineno">12633</span>&#160; </div>
<div class="line"><a name="l12634"></a><span class="lineno">12634</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span> <span class="comment">// reverse, remove, fill, find, none_of</span></div>
<div class="line"><a name="l12635"></a><span class="lineno">12635</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span> <span class="comment">// array</span></div>
<div class="line"><a name="l12636"></a><span class="lineno">12636</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span> <span class="comment">// assert</span></div>
<div class="line"><a name="l12637"></a><span class="lineno">12637</span>&#160;<span class="preprocessor">#include &lt;ciso646&gt;</span> <span class="comment">// and, or</span></div>
<div class="line"><a name="l12638"></a><span class="lineno">12638</span>&#160;<span class="preprocessor">#include &lt;clocale&gt;</span> <span class="comment">// localeconv, lconv</span></div>
<div class="line"><a name="l12639"></a><span class="lineno">12639</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span> <span class="comment">// labs, isfinite, isnan, signbit</span></div>
<div class="line"><a name="l12640"></a><span class="lineno">12640</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span> <span class="comment">// size_t, ptrdiff_t</span></div>
<div class="line"><a name="l12641"></a><span class="lineno">12641</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span> <span class="comment">// uint8_t</span></div>
<div class="line"><a name="l12642"></a><span class="lineno">12642</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span> <span class="comment">// snprintf</span></div>
<div class="line"><a name="l12643"></a><span class="lineno">12643</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span> <span class="comment">// numeric_limits</span></div>
<div class="line"><a name="l12644"></a><span class="lineno">12644</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span> <span class="comment">// string</span></div>
<div class="line"><a name="l12645"></a><span class="lineno">12645</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span> <span class="comment">// is_same</span></div>
<div class="line"><a name="l12646"></a><span class="lineno">12646</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// move</span></div>
<div class="line"><a name="l12647"></a><span class="lineno">12647</span>&#160; </div>
<div class="line"><a name="l12648"></a><span class="lineno">12648</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/conversions/to_chars.hpp&gt;</span></div>
<div class="line"><a name="l12649"></a><span class="lineno">12649</span>&#160; </div>
<div class="line"><a name="l12650"></a><span class="lineno">12650</span>&#160; </div>
<div class="line"><a name="l12651"></a><span class="lineno">12651</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span> <span class="comment">// array</span></div>
<div class="line"><a name="l12652"></a><span class="lineno">12652</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span> <span class="comment">// assert</span></div>
<div class="line"><a name="l12653"></a><span class="lineno">12653</span>&#160;<span class="preprocessor">#include &lt;ciso646&gt;</span> <span class="comment">// or, and, not</span></div>
<div class="line"><a name="l12654"></a><span class="lineno">12654</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span> <span class="comment">// signbit, isfinite</span></div>
<div class="line"><a name="l12655"></a><span class="lineno">12655</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span> <span class="comment">// intN_t, uintN_t</span></div>
<div class="line"><a name="l12656"></a><span class="lineno">12656</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span> <span class="comment">// memcpy, memmove</span></div>
<div class="line"><a name="l12657"></a><span class="lineno">12657</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span> <span class="comment">// numeric_limits</span></div>
<div class="line"><a name="l12658"></a><span class="lineno">12658</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span> <span class="comment">// conditional</span></div>
<div class="line"><a name="l12659"></a><span class="lineno">12659</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l12660"></a><span class="lineno">12660</span>&#160; </div>
<div class="line"><a name="l12661"></a><span class="lineno">12661</span>&#160; </div>
<div class="line"><a name="l12662"></a><span class="lineno">12662</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l12663"></a><span class="lineno">12663</span>&#160;{</div>
<div class="line"><a name="l12664"></a><span class="lineno">12664</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l12665"></a><span class="lineno">12665</span>&#160;{</div>
<div class="line"><a name="l12666"></a><span class="lineno">12666</span>&#160; </div>
<div class="line"><a name="l12686"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html">12686</a></span>&#160;<span class="keyword">namespace </span>dtoa_impl</div>
<div class="line"><a name="l12687"></a><span class="lineno">12687</span>&#160;{</div>
<div class="line"><a name="l12688"></a><span class="lineno">12688</span>&#160; </div>
<div class="line"><a name="l12689"></a><span class="lineno">12689</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Target, <span class="keyword">typename</span> Source&gt;</div>
<div class="line"><a name="l12690"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a1c5d30eb51e5e994a3f48bde104d2ce8">12690</a></span>&#160;Target <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a1c5d30eb51e5e994a3f48bde104d2ce8">reinterpret_bits</a>(<span class="keyword">const</span> Source source)</div>
<div class="line"><a name="l12691"></a><span class="lineno">12691</span>&#160;{</div>
<div class="line"><a name="l12692"></a><span class="lineno">12692</span>&#160; static_assert(<span class="keyword">sizeof</span>(Target) == <span class="keyword">sizeof</span>(Source), <span class="stringliteral">&quot;size mismatch&quot;</span>);</div>
<div class="line"><a name="l12693"></a><span class="lineno">12693</span>&#160; </div>
<div class="line"><a name="l12694"></a><span class="lineno">12694</span>&#160; Target target;</div>
<div class="line"><a name="l12695"></a><span class="lineno">12695</span>&#160; std::memcpy(&amp;target, &amp;source, <span class="keyword">sizeof</span>(Source));</div>
<div class="line"><a name="l12696"></a><span class="lineno">12696</span>&#160; <span class="keywordflow">return</span> target;</div>
<div class="line"><a name="l12697"></a><span class="lineno">12697</span>&#160;}</div>
<div class="line"><a name="l12698"></a><span class="lineno">12698</span>&#160; </div>
<div class="line"><a name="l12699"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">12699</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <span class="comment">// f * 2^e</span></div>
<div class="line"><a name="l12700"></a><span class="lineno">12700</span>&#160;{</div>
<div class="line"><a name="l12701"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a03682754b06ed4f30b263119eecc2d52">12701</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a03682754b06ed4f30b263119eecc2d52">kPrecision</a> = 64; <span class="comment">// = q</span></div>
<div class="line"><a name="l12702"></a><span class="lineno">12702</span>&#160; </div>
<div class="line"><a name="l12703"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">12703</a></span>&#160; std::uint64_t <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> = 0;</div>
<div class="line"><a name="l12704"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">12704</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> = 0;</div>
<div class="line"><a name="l12705"></a><span class="lineno">12705</span>&#160; </div>
<div class="line"><a name="l12706"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ad8798a8823a49c8412f0fada9892c918">12706</a></span>&#160; constexpr <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ad8798a8823a49c8412f0fada9892c918">diyfp</a>(std::uint64_t f_, <span class="keywordtype">int</span> e_) noexcept : <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a>(f_), <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a>(e_) {}</div>
<div class="line"><a name="l12707"></a><span class="lineno">12707</span>&#160; </div>
<div class="line"><a name="l12712"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aeb26771af54ad73598c1a0430d65d884">12712</a></span>&#160; <span class="keyword">static</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aeb26771af54ad73598c1a0430d65d884">sub</a>(<span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>&amp; x, <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>&amp; y) noexcept</div>
<div class="line"><a name="l12713"></a><span class="lineno">12713</span>&#160; {</div>
<div class="line"><a name="l12714"></a><span class="lineno">12714</span>&#160; assert(x.e == y.e);</div>
<div class="line"><a name="l12715"></a><span class="lineno">12715</span>&#160; assert(x.f &gt;= y.f);</div>
<div class="line"><a name="l12716"></a><span class="lineno">12716</span>&#160; </div>
<div class="line"><a name="l12717"></a><span class="lineno">12717</span>&#160; <span class="keywordflow">return</span> {x.f - y.f, x.e};</div>
<div class="line"><a name="l12718"></a><span class="lineno">12718</span>&#160; }</div>
<div class="line"><a name="l12719"></a><span class="lineno">12719</span>&#160; </div>
<div class="line"><a name="l12724"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">12724</a></span>&#160; <span class="keyword">static</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">mul</a>(<span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>&amp; x, <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>&amp; y) noexcept</div>
<div class="line"><a name="l12725"></a><span class="lineno">12725</span>&#160; {</div>
<div class="line"><a name="l12726"></a><span class="lineno">12726</span>&#160; static_assert(<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a03682754b06ed4f30b263119eecc2d52">kPrecision</a> == 64, <span class="stringliteral">&quot;internal error&quot;</span>);</div>
<div class="line"><a name="l12727"></a><span class="lineno">12727</span>&#160; </div>
<div class="line"><a name="l12728"></a><span class="lineno">12728</span>&#160; <span class="comment">// Computes:</span></div>
<div class="line"><a name="l12729"></a><span class="lineno">12729</span>&#160; <span class="comment">// f = round((x.f * y.f) / 2^q)</span></div>
<div class="line"><a name="l12730"></a><span class="lineno">12730</span>&#160; <span class="comment">// e = x.e + y.e + q</span></div>
<div class="line"><a name="l12731"></a><span class="lineno">12731</span>&#160; </div>
<div class="line"><a name="l12732"></a><span class="lineno">12732</span>&#160; <span class="comment">// Emulate the 64-bit * 64-bit multiplication:</span></div>
<div class="line"><a name="l12733"></a><span class="lineno">12733</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12734"></a><span class="lineno">12734</span>&#160; <span class="comment">// p = u * v</span></div>
<div class="line"><a name="l12735"></a><span class="lineno">12735</span>&#160; <span class="comment">// = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi)</span></div>
<div class="line"><a name="l12736"></a><span class="lineno">12736</span>&#160; <span class="comment">// = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi )</span></div>
<div class="line"><a name="l12737"></a><span class="lineno">12737</span>&#160; <span class="comment">// = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 )</span></div>
<div class="line"><a name="l12738"></a><span class="lineno">12738</span>&#160; <span class="comment">// = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 )</span></div>
<div class="line"><a name="l12739"></a><span class="lineno">12739</span>&#160; <span class="comment">// = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3)</span></div>
<div class="line"><a name="l12740"></a><span class="lineno">12740</span>&#160; <span class="comment">// = (p0_lo ) + 2^32 (Q ) + 2^64 (H )</span></div>
<div class="line"><a name="l12741"></a><span class="lineno">12741</span>&#160; <span class="comment">// = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H )</span></div>
<div class="line"><a name="l12742"></a><span class="lineno">12742</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12743"></a><span class="lineno">12743</span>&#160; <span class="comment">// (Since Q might be larger than 2^32 - 1)</span></div>
<div class="line"><a name="l12744"></a><span class="lineno">12744</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12745"></a><span class="lineno">12745</span>&#160; <span class="comment">// = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H)</span></div>
<div class="line"><a name="l12746"></a><span class="lineno">12746</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12747"></a><span class="lineno">12747</span>&#160; <span class="comment">// (Q_hi + H does not overflow a 64-bit int)</span></div>
<div class="line"><a name="l12748"></a><span class="lineno">12748</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12749"></a><span class="lineno">12749</span>&#160; <span class="comment">// = p_lo + 2^64 p_hi</span></div>
<div class="line"><a name="l12750"></a><span class="lineno">12750</span>&#160; </div>
<div class="line"><a name="l12751"></a><span class="lineno">12751</span>&#160; <span class="keyword">const</span> std::uint64_t u_lo = x.f &amp; 0xFFFFFFFFu;</div>
<div class="line"><a name="l12752"></a><span class="lineno">12752</span>&#160; <span class="keyword">const</span> std::uint64_t u_hi = x.f &gt;&gt; 32u;</div>
<div class="line"><a name="l12753"></a><span class="lineno">12753</span>&#160; <span class="keyword">const</span> std::uint64_t v_lo = y.f &amp; 0xFFFFFFFFu;</div>
<div class="line"><a name="l12754"></a><span class="lineno">12754</span>&#160; <span class="keyword">const</span> std::uint64_t v_hi = y.f &gt;&gt; 32u;</div>
<div class="line"><a name="l12755"></a><span class="lineno">12755</span>&#160; </div>
<div class="line"><a name="l12756"></a><span class="lineno">12756</span>&#160; <span class="keyword">const</span> std::uint64_t p0 = u_lo * v_lo;</div>
<div class="line"><a name="l12757"></a><span class="lineno">12757</span>&#160; <span class="keyword">const</span> std::uint64_t p1 = u_lo * v_hi;</div>
<div class="line"><a name="l12758"></a><span class="lineno">12758</span>&#160; <span class="keyword">const</span> std::uint64_t p2 = u_hi * v_lo;</div>
<div class="line"><a name="l12759"></a><span class="lineno">12759</span>&#160; <span class="keyword">const</span> std::uint64_t p3 = u_hi * v_hi;</div>
<div class="line"><a name="l12760"></a><span class="lineno">12760</span>&#160; </div>
<div class="line"><a name="l12761"></a><span class="lineno">12761</span>&#160; <span class="keyword">const</span> std::uint64_t p0_hi = p0 &gt;&gt; 32u;</div>
<div class="line"><a name="l12762"></a><span class="lineno">12762</span>&#160; <span class="keyword">const</span> std::uint64_t p1_lo = p1 &amp; 0xFFFFFFFFu;</div>
<div class="line"><a name="l12763"></a><span class="lineno">12763</span>&#160; <span class="keyword">const</span> std::uint64_t p1_hi = p1 &gt;&gt; 32u;</div>
<div class="line"><a name="l12764"></a><span class="lineno">12764</span>&#160; <span class="keyword">const</span> std::uint64_t p2_lo = p2 &amp; 0xFFFFFFFFu;</div>
<div class="line"><a name="l12765"></a><span class="lineno">12765</span>&#160; <span class="keyword">const</span> std::uint64_t p2_hi = p2 &gt;&gt; 32u;</div>
<div class="line"><a name="l12766"></a><span class="lineno">12766</span>&#160; </div>
<div class="line"><a name="l12767"></a><span class="lineno">12767</span>&#160; std::uint64_t Q = p0_hi + p1_lo + p2_lo;</div>
<div class="line"><a name="l12768"></a><span class="lineno">12768</span>&#160; </div>
<div class="line"><a name="l12769"></a><span class="lineno">12769</span>&#160; <span class="comment">// The full product might now be computed as</span></div>
<div class="line"><a name="l12770"></a><span class="lineno">12770</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12771"></a><span class="lineno">12771</span>&#160; <span class="comment">// p_hi = p3 + p2_hi + p1_hi + (Q &gt;&gt; 32)</span></div>
<div class="line"><a name="l12772"></a><span class="lineno">12772</span>&#160; <span class="comment">// p_lo = p0_lo + (Q &lt;&lt; 32)</span></div>
<div class="line"><a name="l12773"></a><span class="lineno">12773</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12774"></a><span class="lineno">12774</span>&#160; <span class="comment">// But in this particular case here, the full p_lo is not required.</span></div>
<div class="line"><a name="l12775"></a><span class="lineno">12775</span>&#160; <span class="comment">// Effectively we only need to add the highest bit in p_lo to p_hi (and</span></div>
<div class="line"><a name="l12776"></a><span class="lineno">12776</span>&#160; <span class="comment">// Q_hi + 1 does not overflow).</span></div>
<div class="line"><a name="l12777"></a><span class="lineno">12777</span>&#160; </div>
<div class="line"><a name="l12778"></a><span class="lineno">12778</span>&#160; Q += std::uint64_t{1} &lt;&lt; (64u - 32u - 1u); <span class="comment">// round, ties up</span></div>
<div class="line"><a name="l12779"></a><span class="lineno">12779</span>&#160; </div>
<div class="line"><a name="l12780"></a><span class="lineno">12780</span>&#160; <span class="keyword">const</span> std::uint64_t h = p3 + p2_hi + p1_hi + (Q &gt;&gt; 32u);</div>
<div class="line"><a name="l12781"></a><span class="lineno">12781</span>&#160; </div>
<div class="line"><a name="l12782"></a><span class="lineno">12782</span>&#160; <span class="keywordflow">return</span> {h, x.e + y.e + 64};</div>
<div class="line"><a name="l12783"></a><span class="lineno">12783</span>&#160; }</div>
<div class="line"><a name="l12784"></a><span class="lineno">12784</span>&#160; </div>
<div class="line"><a name="l12789"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a2246b5b40c7c6992153ef174063d6aa6">12789</a></span>&#160; <span class="keyword">static</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a2246b5b40c7c6992153ef174063d6aa6">normalize</a>(<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> x) noexcept</div>
<div class="line"><a name="l12790"></a><span class="lineno">12790</span>&#160; {</div>
<div class="line"><a name="l12791"></a><span class="lineno">12791</span>&#160; assert(x.f != 0);</div>
<div class="line"><a name="l12792"></a><span class="lineno">12792</span>&#160; </div>
<div class="line"><a name="l12793"></a><span class="lineno">12793</span>&#160; <span class="keywordflow">while</span> ((x.f &gt;&gt; 63u) == 0)</div>
<div class="line"><a name="l12794"></a><span class="lineno">12794</span>&#160; {</div>
<div class="line"><a name="l12795"></a><span class="lineno">12795</span>&#160; x.f &lt;&lt;= 1u;</div>
<div class="line"><a name="l12796"></a><span class="lineno">12796</span>&#160; x.e--;</div>
<div class="line"><a name="l12797"></a><span class="lineno">12797</span>&#160; }</div>
<div class="line"><a name="l12798"></a><span class="lineno">12798</span>&#160; </div>
<div class="line"><a name="l12799"></a><span class="lineno">12799</span>&#160; <span class="keywordflow">return</span> x;</div>
<div class="line"><a name="l12800"></a><span class="lineno">12800</span>&#160; }</div>
<div class="line"><a name="l12801"></a><span class="lineno">12801</span>&#160; </div>
<div class="line"><a name="l12806"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a6b6665e467ebabe0c0f7418d3fe4b118">12806</a></span>&#160; <span class="keyword">static</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a6b6665e467ebabe0c0f7418d3fe4b118">normalize_to</a>(<span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>&amp; x, <span class="keyword">const</span> <span class="keywordtype">int</span> target_exponent) noexcept</div>
<div class="line"><a name="l12807"></a><span class="lineno">12807</span>&#160; {</div>
<div class="line"><a name="l12808"></a><span class="lineno">12808</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> delta = x.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> - target_exponent;</div>
<div class="line"><a name="l12809"></a><span class="lineno">12809</span>&#160; </div>
<div class="line"><a name="l12810"></a><span class="lineno">12810</span>&#160; assert(delta &gt;= 0);</div>
<div class="line"><a name="l12811"></a><span class="lineno">12811</span>&#160; assert(((x.f &lt;&lt; delta) &gt;&gt; delta) == x.f);</div>
<div class="line"><a name="l12812"></a><span class="lineno">12812</span>&#160; </div>
<div class="line"><a name="l12813"></a><span class="lineno">12813</span>&#160; <span class="keywordflow">return</span> {x.f &lt;&lt; delta, target_exponent};</div>
<div class="line"><a name="l12814"></a><span class="lineno">12814</span>&#160; }</div>
<div class="line"><a name="l12815"></a><span class="lineno">12815</span>&#160;};</div>
<div class="line"><a name="l12816"></a><span class="lineno">12816</span>&#160; </div>
<div class="line"><a name="l12817"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">12817</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">boundaries</a></div>
<div class="line"><a name="l12818"></a><span class="lineno">12818</span>&#160;{</div>
<div class="line"><a name="l12819"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#ad1668c60aeade5f2557fafed8b8aee1a">12819</a></span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#ad1668c60aeade5f2557fafed8b8aee1a">w</a>;</div>
<div class="line"><a name="l12820"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#aec4e5028333c01f3229062f31ce16763">12820</a></span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#aec4e5028333c01f3229062f31ce16763">minus</a>;</div>
<div class="line"><a name="l12821"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#a3321ae2816a6ec5250a0d8e29f798232">12821</a></span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#a3321ae2816a6ec5250a0d8e29f798232">plus</a>;</div>
<div class="line"><a name="l12822"></a><span class="lineno">12822</span>&#160;};</div>
<div class="line"><a name="l12823"></a><span class="lineno">12823</span>&#160; </div>
<div class="line"><a name="l12830"></a><span class="lineno">12830</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> FloatType&gt;</div>
<div class="line"><a name="l12831"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded">12831</a></span>&#160;<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">boundaries</a> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded">compute_boundaries</a>(FloatType value)</div>
<div class="line"><a name="l12832"></a><span class="lineno">12832</span>&#160;{</div>
<div class="line"><a name="l12833"></a><span class="lineno">12833</span>&#160; assert(std::isfinite(value));</div>
<div class="line"><a name="l12834"></a><span class="lineno">12834</span>&#160; assert(value &gt; 0);</div>
<div class="line"><a name="l12835"></a><span class="lineno">12835</span>&#160; </div>
<div class="line"><a name="l12836"></a><span class="lineno">12836</span>&#160; <span class="comment">// Convert the IEEE representation into a diyfp.</span></div>
<div class="line"><a name="l12837"></a><span class="lineno">12837</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12838"></a><span class="lineno">12838</span>&#160; <span class="comment">// If v is denormal:</span></div>
<div class="line"><a name="l12839"></a><span class="lineno">12839</span>&#160; <span class="comment">// value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1))</span></div>
<div class="line"><a name="l12840"></a><span class="lineno">12840</span>&#160; <span class="comment">// If v is normalized:</span></div>
<div class="line"><a name="l12841"></a><span class="lineno">12841</span>&#160; <span class="comment">// value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1))</span></div>
<div class="line"><a name="l12842"></a><span class="lineno">12842</span>&#160; </div>
<div class="line"><a name="l12843"></a><span class="lineno">12843</span>&#160; static_assert(std::numeric_limits&lt;FloatType&gt;::is_iec559,</div>
<div class="line"><a name="l12844"></a><span class="lineno">12844</span>&#160; <span class="stringliteral">&quot;internal error: dtoa_short requires an IEEE-754 floating-point implementation&quot;</span>);</div>
<div class="line"><a name="l12845"></a><span class="lineno">12845</span>&#160; </div>
<div class="line"><a name="l12846"></a><span class="lineno">12846</span>&#160; constexpr <span class="keywordtype">int</span> kPrecision = std::numeric_limits&lt;FloatType&gt;::digits; <span class="comment">// = p (includes the hidden bit)</span></div>
<div class="line"><a name="l12847"></a><span class="lineno">12847</span>&#160; constexpr <span class="keywordtype">int</span> kBias = std::numeric_limits&lt;FloatType&gt;::max_exponent - 1 + (kPrecision - 1);</div>
<div class="line"><a name="l12848"></a><span class="lineno">12848</span>&#160; constexpr <span class="keywordtype">int</span> kMinExp = 1 - kBias;</div>
<div class="line"><a name="l12849"></a><span class="lineno">12849</span>&#160; constexpr std::uint64_t kHiddenBit = std::uint64_t{1} &lt;&lt; (kPrecision - 1); <span class="comment">// = 2^(p-1)</span></div>
<div class="line"><a name="l12850"></a><span class="lineno">12850</span>&#160; </div>
<div class="line"><a name="l12851"></a><span class="lineno">12851</span>&#160; <span class="keyword">using</span> bits_type = <span class="keyword">typename</span> std::conditional&lt;kPrecision == 24, std::uint32_t, std::uint64_t &gt;::type;</div>
<div class="line"><a name="l12852"></a><span class="lineno">12852</span>&#160; </div>
<div class="line"><a name="l12853"></a><span class="lineno">12853</span>&#160; <span class="keyword">const</span> std::uint64_t bits = reinterpret_bits&lt;bits_type&gt;(value);</div>
<div class="line"><a name="l12854"></a><span class="lineno">12854</span>&#160; <span class="keyword">const</span> std::uint64_t E = bits &gt;&gt; (kPrecision - 1);</div>
<div class="line"><a name="l12855"></a><span class="lineno">12855</span>&#160; <span class="keyword">const</span> std::uint64_t F = bits &amp; (kHiddenBit - 1);</div>
<div class="line"><a name="l12856"></a><span class="lineno">12856</span>&#160; </div>
<div class="line"><a name="l12857"></a><span class="lineno">12857</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> is_denormal = E == 0;</div>
<div class="line"><a name="l12858"></a><span class="lineno">12858</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> v = is_denormal</div>
<div class="line"><a name="l12859"></a><span class="lineno">12859</span>&#160; ? <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>(F, kMinExp)</div>
<div class="line"><a name="l12860"></a><span class="lineno">12860</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>(F + kHiddenBit, <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(E) - kBias);</div>
<div class="line"><a name="l12861"></a><span class="lineno">12861</span>&#160; </div>
<div class="line"><a name="l12862"></a><span class="lineno">12862</span>&#160; <span class="comment">// Compute the boundaries m- and m+ of the floating-point value</span></div>
<div class="line"><a name="l12863"></a><span class="lineno">12863</span>&#160; <span class="comment">// v = f * 2^e.</span></div>
<div class="line"><a name="l12864"></a><span class="lineno">12864</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12865"></a><span class="lineno">12865</span>&#160; <span class="comment">// Determine v- and v+, the floating-point predecessor and successor if v,</span></div>
<div class="line"><a name="l12866"></a><span class="lineno">12866</span>&#160; <span class="comment">// respectively.</span></div>
<div class="line"><a name="l12867"></a><span class="lineno">12867</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12868"></a><span class="lineno">12868</span>&#160; <span class="comment">// v- = v - 2^e if f != 2^(p-1) or e == e_min (A)</span></div>
<div class="line"><a name="l12869"></a><span class="lineno">12869</span>&#160; <span class="comment">// = v - 2^(e-1) if f == 2^(p-1) and e &gt; e_min (B)</span></div>
<div class="line"><a name="l12870"></a><span class="lineno">12870</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12871"></a><span class="lineno">12871</span>&#160; <span class="comment">// v+ = v + 2^e</span></div>
<div class="line"><a name="l12872"></a><span class="lineno">12872</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12873"></a><span class="lineno">12873</span>&#160; <span class="comment">// Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_</span></div>
<div class="line"><a name="l12874"></a><span class="lineno">12874</span>&#160; <span class="comment">// between m- and m+ round to v, regardless of how the input rounding</span></div>
<div class="line"><a name="l12875"></a><span class="lineno">12875</span>&#160; <span class="comment">// algorithm breaks ties.</span></div>
<div class="line"><a name="l12876"></a><span class="lineno">12876</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12877"></a><span class="lineno">12877</span>&#160; <span class="comment">// ---+-------------+-------------+-------------+-------------+--- (A)</span></div>
<div class="line"><a name="l12878"></a><span class="lineno">12878</span>&#160; <span class="comment">// v- m- v m+ v+</span></div>
<div class="line"><a name="l12879"></a><span class="lineno">12879</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12880"></a><span class="lineno">12880</span>&#160; <span class="comment">// -----------------+------+------+-------------+-------------+--- (B)</span></div>
<div class="line"><a name="l12881"></a><span class="lineno">12881</span>&#160; <span class="comment">// v- m- v m+ v+</span></div>
<div class="line"><a name="l12882"></a><span class="lineno">12882</span>&#160; </div>
<div class="line"><a name="l12883"></a><span class="lineno">12883</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> lower_boundary_is_closer = F == 0 and E &gt; 1;</div>
<div class="line"><a name="l12884"></a><span class="lineno">12884</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> m_plus = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>(2 * v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> + 1, v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> - 1);</div>
<div class="line"><a name="l12885"></a><span class="lineno">12885</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> m_minus = lower_boundary_is_closer</div>
<div class="line"><a name="l12886"></a><span class="lineno">12886</span>&#160; ? <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>(4 * v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> - 1, v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> - 2) <span class="comment">// (B)</span></div>
<div class="line"><a name="l12887"></a><span class="lineno">12887</span>&#160; : <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>(2 * v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> - 1, v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> - 1); <span class="comment">// (A)</span></div>
<div class="line"><a name="l12888"></a><span class="lineno">12888</span>&#160; </div>
<div class="line"><a name="l12889"></a><span class="lineno">12889</span>&#160; <span class="comment">// Determine the normalized w+ = m+.</span></div>
<div class="line"><a name="l12890"></a><span class="lineno">12890</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w_plus = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a2246b5b40c7c6992153ef174063d6aa6">diyfp::normalize</a>(m_plus);</div>
<div class="line"><a name="l12891"></a><span class="lineno">12891</span>&#160; </div>
<div class="line"><a name="l12892"></a><span class="lineno">12892</span>&#160; <span class="comment">// Determine w- = m- such that e_(w-) = e_(w+).</span></div>
<div class="line"><a name="l12893"></a><span class="lineno">12893</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w_minus = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a6b6665e467ebabe0c0f7418d3fe4b118">diyfp::normalize_to</a>(m_minus, w_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a>);</div>
<div class="line"><a name="l12894"></a><span class="lineno">12894</span>&#160; </div>
<div class="line"><a name="l12895"></a><span class="lineno">12895</span>&#160; <span class="keywordflow">return</span> {<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a2246b5b40c7c6992153ef174063d6aa6">diyfp::normalize</a>(v), w_minus, w_plus};</div>
<div class="line"><a name="l12896"></a><span class="lineno">12896</span>&#160;}</div>
<div class="line"><a name="l12897"></a><span class="lineno">12897</span>&#160; </div>
<div class="line"><a name="l12898"></a><span class="lineno">12898</span>&#160;<span class="comment">// Given normalized diyfp w, Grisu needs to find a (normalized) cached</span></div>
<div class="line"><a name="l12899"></a><span class="lineno">12899</span>&#160;<span class="comment">// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies</span></div>
<div class="line"><a name="l12900"></a><span class="lineno">12900</span>&#160;<span class="comment">// within a certain range [alpha, gamma] (Definition 3.2 from [1])</span></div>
<div class="line"><a name="l12901"></a><span class="lineno">12901</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12902"></a><span class="lineno">12902</span>&#160;<span class="comment">// alpha &lt;= e = e_c + e_w + q &lt;= gamma</span></div>
<div class="line"><a name="l12903"></a><span class="lineno">12903</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12904"></a><span class="lineno">12904</span>&#160;<span class="comment">// or</span></div>
<div class="line"><a name="l12905"></a><span class="lineno">12905</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12906"></a><span class="lineno">12906</span>&#160;<span class="comment">// f_c * f_w * 2^alpha &lt;= f_c 2^(e_c) * f_w 2^(e_w) * 2^q</span></div>
<div class="line"><a name="l12907"></a><span class="lineno">12907</span>&#160;<span class="comment">// &lt;= f_c * f_w * 2^gamma</span></div>
<div class="line"><a name="l12908"></a><span class="lineno">12908</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12909"></a><span class="lineno">12909</span>&#160;<span class="comment">// Since c and w are normalized, i.e. 2^(q-1) &lt;= f &lt; 2^q, this implies</span></div>
<div class="line"><a name="l12910"></a><span class="lineno">12910</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12911"></a><span class="lineno">12911</span>&#160;<span class="comment">// 2^(q-1) * 2^(q-1) * 2^alpha &lt;= c * w * 2^q &lt; 2^q * 2^q * 2^gamma</span></div>
<div class="line"><a name="l12912"></a><span class="lineno">12912</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12913"></a><span class="lineno">12913</span>&#160;<span class="comment">// or</span></div>
<div class="line"><a name="l12914"></a><span class="lineno">12914</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12915"></a><span class="lineno">12915</span>&#160;<span class="comment">// 2^(q - 2 + alpha) &lt;= c * w &lt; 2^(q + gamma)</span></div>
<div class="line"><a name="l12916"></a><span class="lineno">12916</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12917"></a><span class="lineno">12917</span>&#160;<span class="comment">// The choice of (alpha,gamma) determines the size of the table and the form of</span></div>
<div class="line"><a name="l12918"></a><span class="lineno">12918</span>&#160;<span class="comment">// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well</span></div>
<div class="line"><a name="l12919"></a><span class="lineno">12919</span>&#160;<span class="comment">// in practice:</span></div>
<div class="line"><a name="l12920"></a><span class="lineno">12920</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12921"></a><span class="lineno">12921</span>&#160;<span class="comment">// The idea is to cut the number c * w = f * 2^e into two parts, which can be</span></div>
<div class="line"><a name="l12922"></a><span class="lineno">12922</span>&#160;<span class="comment">// processed independently: An integral part p1, and a fractional part p2:</span></div>
<div class="line"><a name="l12923"></a><span class="lineno">12923</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12924"></a><span class="lineno">12924</span>&#160;<span class="comment">// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e</span></div>
<div class="line"><a name="l12925"></a><span class="lineno">12925</span>&#160;<span class="comment">// = (f div 2^-e) + (f mod 2^-e) * 2^e</span></div>
<div class="line"><a name="l12926"></a><span class="lineno">12926</span>&#160;<span class="comment">// = p1 + p2 * 2^e</span></div>
<div class="line"><a name="l12927"></a><span class="lineno">12927</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12928"></a><span class="lineno">12928</span>&#160;<span class="comment">// The conversion of p1 into decimal form requires a series of divisions and</span></div>
<div class="line"><a name="l12929"></a><span class="lineno">12929</span>&#160;<span class="comment">// modulos by (a power of) 10. These operations are faster for 32-bit than for</span></div>
<div class="line"><a name="l12930"></a><span class="lineno">12930</span>&#160;<span class="comment">// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be</span></div>
<div class="line"><a name="l12931"></a><span class="lineno">12931</span>&#160;<span class="comment">// achieved by choosing</span></div>
<div class="line"><a name="l12932"></a><span class="lineno">12932</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12933"></a><span class="lineno">12933</span>&#160;<span class="comment">// -e &gt;= 32 or e &lt;= -32 := gamma</span></div>
<div class="line"><a name="l12934"></a><span class="lineno">12934</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12935"></a><span class="lineno">12935</span>&#160;<span class="comment">// In order to convert the fractional part</span></div>
<div class="line"><a name="l12936"></a><span class="lineno">12936</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12937"></a><span class="lineno">12937</span>&#160;<span class="comment">// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ...</span></div>
<div class="line"><a name="l12938"></a><span class="lineno">12938</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12939"></a><span class="lineno">12939</span>&#160;<span class="comment">// into decimal form, the fraction is repeatedly multiplied by 10 and the digits</span></div>
<div class="line"><a name="l12940"></a><span class="lineno">12940</span>&#160;<span class="comment">// d[-i] are extracted in order:</span></div>
<div class="line"><a name="l12941"></a><span class="lineno">12941</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12942"></a><span class="lineno">12942</span>&#160;<span class="comment">// (10 * p2) div 2^-e = d[-1]</span></div>
<div class="line"><a name="l12943"></a><span class="lineno">12943</span>&#160;<span class="comment">// (10 * p2) mod 2^-e = d[-2] / 10^1 + ...</span></div>
<div class="line"><a name="l12944"></a><span class="lineno">12944</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12945"></a><span class="lineno">12945</span>&#160;<span class="comment">// The multiplication by 10 must not overflow. It is sufficient to choose</span></div>
<div class="line"><a name="l12946"></a><span class="lineno">12946</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12947"></a><span class="lineno">12947</span>&#160;<span class="comment">// 10 * p2 &lt; 16 * p2 = 2^4 * p2 &lt;= 2^64.</span></div>
<div class="line"><a name="l12948"></a><span class="lineno">12948</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12949"></a><span class="lineno">12949</span>&#160;<span class="comment">// Since p2 = f mod 2^-e &lt; 2^-e,</span></div>
<div class="line"><a name="l12950"></a><span class="lineno">12950</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l12951"></a><span class="lineno">12951</span>&#160;<span class="comment">// -e &lt;= 60 or e &gt;= -60 := alpha</span></div>
<div class="line"><a name="l12952"></a><span class="lineno">12952</span>&#160; </div>
<div class="line"><a name="l12953"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">12953</a></span>&#160;constexpr <span class="keywordtype">int</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">kAlpha</a> = -60;</div>
<div class="line"><a name="l12954"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">12954</a></span>&#160;constexpr <span class="keywordtype">int</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">kGamma</a> = -32;</div>
<div class="line"><a name="l12955"></a><span class="lineno">12955</span>&#160; </div>
<div class="line"><a name="l12956"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">12956</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">cached_power</a> <span class="comment">// c = f * 2^e ~= 10^k</span></div>
<div class="line"><a name="l12957"></a><span class="lineno">12957</span>&#160;{</div>
<div class="line"><a name="l12958"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a21ae81f515f5b08d5bf423775ee56074">12958</a></span>&#160; std::uint64_t <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a21ae81f515f5b08d5bf423775ee56074">f</a>;</div>
<div class="line"><a name="l12959"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">12959</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">e</a>;</div>
<div class="line"><a name="l12960"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a8c1f2efed643eeaa8fae83c697a29c6a">12960</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a8c1f2efed643eeaa8fae83c697a29c6a">k</a>;</div>
<div class="line"><a name="l12961"></a><span class="lineno">12961</span>&#160;};</div>
<div class="line"><a name="l12962"></a><span class="lineno">12962</span>&#160; </div>
<div class="line"><a name="l12970"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#adbf329a18c5cf854a3477327afd2200b">12970</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">cached_power</a> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#adbf329a18c5cf854a3477327afd2200b">get_cached_power_for_binary_exponent</a>(<span class="keywordtype">int</span> e)</div>
<div class="line"><a name="l12971"></a><span class="lineno">12971</span>&#160;{</div>
<div class="line"><a name="l12972"></a><span class="lineno">12972</span>&#160; <span class="comment">// Now</span></div>
<div class="line"><a name="l12973"></a><span class="lineno">12973</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12974"></a><span class="lineno">12974</span>&#160; <span class="comment">// alpha &lt;= e_c + e + q &lt;= gamma (1)</span></div>
<div class="line"><a name="l12975"></a><span class="lineno">12975</span>&#160; <span class="comment">// ==&gt; f_c * 2^alpha &lt;= c * 2^e * 2^q</span></div>
<div class="line"><a name="l12976"></a><span class="lineno">12976</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12977"></a><span class="lineno">12977</span>&#160; <span class="comment">// and since the c&#39;s are normalized, 2^(q-1) &lt;= f_c,</span></div>
<div class="line"><a name="l12978"></a><span class="lineno">12978</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12979"></a><span class="lineno">12979</span>&#160; <span class="comment">// ==&gt; 2^(q - 1 + alpha) &lt;= c * 2^(e + q)</span></div>
<div class="line"><a name="l12980"></a><span class="lineno">12980</span>&#160; <span class="comment">// ==&gt; 2^(alpha - e - 1) &lt;= c</span></div>
<div class="line"><a name="l12981"></a><span class="lineno">12981</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12982"></a><span class="lineno">12982</span>&#160; <span class="comment">// If c were an exact power of ten, i.e. c = 10^k, one may determine k as</span></div>
<div class="line"><a name="l12983"></a><span class="lineno">12983</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12984"></a><span class="lineno">12984</span>&#160; <span class="comment">// k = ceil( log_10( 2^(alpha - e - 1) ) )</span></div>
<div class="line"><a name="l12985"></a><span class="lineno">12985</span>&#160; <span class="comment">// = ceil( (alpha - e - 1) * log_10(2) )</span></div>
<div class="line"><a name="l12986"></a><span class="lineno">12986</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12987"></a><span class="lineno">12987</span>&#160; <span class="comment">// From the paper:</span></div>
<div class="line"><a name="l12988"></a><span class="lineno">12988</span>&#160; <span class="comment">// &quot;In theory the result of the procedure could be wrong since c is rounded,</span></div>
<div class="line"><a name="l12989"></a><span class="lineno">12989</span>&#160; <span class="comment">// and the computation itself is approximated [...]. In practice, however,</span></div>
<div class="line"><a name="l12990"></a><span class="lineno">12990</span>&#160; <span class="comment">// this simple function is sufficient.&quot;</span></div>
<div class="line"><a name="l12991"></a><span class="lineno">12991</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12992"></a><span class="lineno">12992</span>&#160; <span class="comment">// For IEEE double precision floating-point numbers converted into</span></div>
<div class="line"><a name="l12993"></a><span class="lineno">12993</span>&#160; <span class="comment">// normalized diyfp&#39;s w = f * 2^e, with q = 64,</span></div>
<div class="line"><a name="l12994"></a><span class="lineno">12994</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l12995"></a><span class="lineno">12995</span>&#160; <span class="comment">// e &gt;= -1022 (min IEEE exponent)</span></div>
<div class="line"><a name="l12996"></a><span class="lineno">12996</span>&#160; <span class="comment">// -52 (p - 1)</span></div>
<div class="line"><a name="l12997"></a><span class="lineno">12997</span>&#160; <span class="comment">// -52 (p - 1, possibly normalize denormal IEEE numbers)</span></div>
<div class="line"><a name="l12998"></a><span class="lineno">12998</span>&#160; <span class="comment">// -11 (normalize the diyfp)</span></div>
<div class="line"><a name="l12999"></a><span class="lineno">12999</span>&#160; <span class="comment">// = -1137</span></div>
<div class="line"><a name="l13000"></a><span class="lineno">13000</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13001"></a><span class="lineno">13001</span>&#160; <span class="comment">// and</span></div>
<div class="line"><a name="l13002"></a><span class="lineno">13002</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13003"></a><span class="lineno">13003</span>&#160; <span class="comment">// e &lt;= +1023 (max IEEE exponent)</span></div>
<div class="line"><a name="l13004"></a><span class="lineno">13004</span>&#160; <span class="comment">// -52 (p - 1)</span></div>
<div class="line"><a name="l13005"></a><span class="lineno">13005</span>&#160; <span class="comment">// -11 (normalize the diyfp)</span></div>
<div class="line"><a name="l13006"></a><span class="lineno">13006</span>&#160; <span class="comment">// = 960</span></div>
<div class="line"><a name="l13007"></a><span class="lineno">13007</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13008"></a><span class="lineno">13008</span>&#160; <span class="comment">// This binary exponent range [-1137,960] results in a decimal exponent</span></div>
<div class="line"><a name="l13009"></a><span class="lineno">13009</span>&#160; <span class="comment">// range [-307,324]. One does not need to store a cached power for each</span></div>
<div class="line"><a name="l13010"></a><span class="lineno">13010</span>&#160; <span class="comment">// k in this range. For each such k it suffices to find a cached power</span></div>
<div class="line"><a name="l13011"></a><span class="lineno">13011</span>&#160; <span class="comment">// such that the exponent of the product lies in [alpha,gamma].</span></div>
<div class="line"><a name="l13012"></a><span class="lineno">13012</span>&#160; <span class="comment">// This implies that the difference of the decimal exponents of adjacent</span></div>
<div class="line"><a name="l13013"></a><span class="lineno">13013</span>&#160; <span class="comment">// table entries must be less than or equal to</span></div>
<div class="line"><a name="l13014"></a><span class="lineno">13014</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13015"></a><span class="lineno">13015</span>&#160; <span class="comment">// floor( (gamma - alpha) * log_10(2) ) = 8.</span></div>
<div class="line"><a name="l13016"></a><span class="lineno">13016</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13017"></a><span class="lineno">13017</span>&#160; <span class="comment">// (A smaller distance gamma-alpha would require a larger table.)</span></div>
<div class="line"><a name="l13018"></a><span class="lineno">13018</span>&#160; </div>
<div class="line"><a name="l13019"></a><span class="lineno">13019</span>&#160; <span class="comment">// NB:</span></div>
<div class="line"><a name="l13020"></a><span class="lineno">13020</span>&#160; <span class="comment">// Actually this function returns c, such that -60 &lt;= e_c + e + 64 &lt;= -34.</span></div>
<div class="line"><a name="l13021"></a><span class="lineno">13021</span>&#160; </div>
<div class="line"><a name="l13022"></a><span class="lineno">13022</span>&#160; constexpr <span class="keywordtype">int</span> kCachedPowersMinDecExp = -300;</div>
<div class="line"><a name="l13023"></a><span class="lineno">13023</span>&#160; constexpr <span class="keywordtype">int</span> kCachedPowersDecStep = 8;</div>
<div class="line"><a name="l13024"></a><span class="lineno">13024</span>&#160; </div>
<div class="line"><a name="l13025"></a><span class="lineno">13025</span>&#160; <span class="keyword">static</span> constexpr std::array&lt;cached_power, 79&gt; kCachedPowers =</div>
<div class="line"><a name="l13026"></a><span class="lineno">13026</span>&#160; {</div>
<div class="line"><a name="l13027"></a><span class="lineno">13027</span>&#160; {</div>
<div class="line"><a name="l13028"></a><span class="lineno">13028</span>&#160; { 0xAB70FE17C79AC6CA, -1060, -300 },</div>
<div class="line"><a name="l13029"></a><span class="lineno">13029</span>&#160; { 0xFF77B1FCBEBCDC4F, -1034, -292 },</div>
<div class="line"><a name="l13030"></a><span class="lineno">13030</span>&#160; { 0xBE5691EF416BD60C, -1007, -284 },</div>
<div class="line"><a name="l13031"></a><span class="lineno">13031</span>&#160; { 0x8DD01FAD907FFC3C, -980, -276 },</div>
<div class="line"><a name="l13032"></a><span class="lineno">13032</span>&#160; { 0xD3515C2831559A83, -954, -268 },</div>
<div class="line"><a name="l13033"></a><span class="lineno">13033</span>&#160; { 0x9D71AC8FADA6C9B5, -927, -260 },</div>
<div class="line"><a name="l13034"></a><span class="lineno">13034</span>&#160; { 0xEA9C227723EE8BCB, -901, -252 },</div>
<div class="line"><a name="l13035"></a><span class="lineno">13035</span>&#160; { 0xAECC49914078536D, -874, -244 },</div>
<div class="line"><a name="l13036"></a><span class="lineno">13036</span>&#160; { 0x823C12795DB6CE57, -847, -236 },</div>
<div class="line"><a name="l13037"></a><span class="lineno">13037</span>&#160; { 0xC21094364DFB5637, -821, -228 },</div>
<div class="line"><a name="l13038"></a><span class="lineno">13038</span>&#160; { 0x9096EA6F3848984F, -794, -220 },</div>
<div class="line"><a name="l13039"></a><span class="lineno">13039</span>&#160; { 0xD77485CB25823AC7, -768, -212 },</div>
<div class="line"><a name="l13040"></a><span class="lineno">13040</span>&#160; { 0xA086CFCD97BF97F4, -741, -204 },</div>
<div class="line"><a name="l13041"></a><span class="lineno">13041</span>&#160; { 0xEF340A98172AACE5, -715, -196 },</div>
<div class="line"><a name="l13042"></a><span class="lineno">13042</span>&#160; { 0xB23867FB2A35B28E, -688, -188 },</div>
<div class="line"><a name="l13043"></a><span class="lineno">13043</span>&#160; { 0x84C8D4DFD2C63F3B, -661, -180 },</div>
<div class="line"><a name="l13044"></a><span class="lineno">13044</span>&#160; { 0xC5DD44271AD3CDBA, -635, -172 },</div>
<div class="line"><a name="l13045"></a><span class="lineno">13045</span>&#160; { 0x936B9FCEBB25C996, -608, -164 },</div>
<div class="line"><a name="l13046"></a><span class="lineno">13046</span>&#160; { 0xDBAC6C247D62A584, -582, -156 },</div>
<div class="line"><a name="l13047"></a><span class="lineno">13047</span>&#160; { 0xA3AB66580D5FDAF6, -555, -148 },</div>
<div class="line"><a name="l13048"></a><span class="lineno">13048</span>&#160; { 0xF3E2F893DEC3F126, -529, -140 },</div>
<div class="line"><a name="l13049"></a><span class="lineno">13049</span>&#160; { 0xB5B5ADA8AAFF80B8, -502, -132 },</div>
<div class="line"><a name="l13050"></a><span class="lineno">13050</span>&#160; { 0x87625F056C7C4A8B, -475, -124 },</div>
<div class="line"><a name="l13051"></a><span class="lineno">13051</span>&#160; { 0xC9BCFF6034C13053, -449, -116 },</div>
<div class="line"><a name="l13052"></a><span class="lineno">13052</span>&#160; { 0x964E858C91BA2655, -422, -108 },</div>
<div class="line"><a name="l13053"></a><span class="lineno">13053</span>&#160; { 0xDFF9772470297EBD, -396, -100 },</div>
<div class="line"><a name="l13054"></a><span class="lineno">13054</span>&#160; { 0xA6DFBD9FB8E5B88F, -369, -92 },</div>
<div class="line"><a name="l13055"></a><span class="lineno">13055</span>&#160; { 0xF8A95FCF88747D94, -343, -84 },</div>
<div class="line"><a name="l13056"></a><span class="lineno">13056</span>&#160; { 0xB94470938FA89BCF, -316, -76 },</div>
<div class="line"><a name="l13057"></a><span class="lineno">13057</span>&#160; { 0x8A08F0F8BF0F156B, -289, -68 },</div>
<div class="line"><a name="l13058"></a><span class="lineno">13058</span>&#160; { 0xCDB02555653131B6, -263, -60 },</div>
<div class="line"><a name="l13059"></a><span class="lineno">13059</span>&#160; { 0x993FE2C6D07B7FAC, -236, -52 },</div>
<div class="line"><a name="l13060"></a><span class="lineno">13060</span>&#160; { 0xE45C10C42A2B3B06, -210, -44 },</div>
<div class="line"><a name="l13061"></a><span class="lineno">13061</span>&#160; { 0xAA242499697392D3, -183, -36 },</div>
<div class="line"><a name="l13062"></a><span class="lineno">13062</span>&#160; { 0xFD87B5F28300CA0E, -157, -28 },</div>
<div class="line"><a name="l13063"></a><span class="lineno">13063</span>&#160; { 0xBCE5086492111AEB, -130, -20 },</div>
<div class="line"><a name="l13064"></a><span class="lineno">13064</span>&#160; { 0x8CBCCC096F5088CC, -103, -12 },</div>
<div class="line"><a name="l13065"></a><span class="lineno">13065</span>&#160; { 0xD1B71758E219652C, -77, -4 },</div>
<div class="line"><a name="l13066"></a><span class="lineno">13066</span>&#160; { 0x9C40000000000000, -50, 4 },</div>
<div class="line"><a name="l13067"></a><span class="lineno">13067</span>&#160; { 0xE8D4A51000000000, -24, 12 },</div>
<div class="line"><a name="l13068"></a><span class="lineno">13068</span>&#160; { 0xAD78EBC5AC620000, 3, 20 },</div>
<div class="line"><a name="l13069"></a><span class="lineno">13069</span>&#160; { 0x813F3978F8940984, 30, 28 },</div>
<div class="line"><a name="l13070"></a><span class="lineno">13070</span>&#160; { 0xC097CE7BC90715B3, 56, 36 },</div>
<div class="line"><a name="l13071"></a><span class="lineno">13071</span>&#160; { 0x8F7E32CE7BEA5C70, 83, 44 },</div>
<div class="line"><a name="l13072"></a><span class="lineno">13072</span>&#160; { 0xD5D238A4ABE98068, 109, 52 },</div>
<div class="line"><a name="l13073"></a><span class="lineno">13073</span>&#160; { 0x9F4F2726179A2245, 136, 60 },</div>
<div class="line"><a name="l13074"></a><span class="lineno">13074</span>&#160; { 0xED63A231D4C4FB27, 162, 68 },</div>
<div class="line"><a name="l13075"></a><span class="lineno">13075</span>&#160; { 0xB0DE65388CC8ADA8, 189, 76 },</div>
<div class="line"><a name="l13076"></a><span class="lineno">13076</span>&#160; { 0x83C7088E1AAB65DB, 216, 84 },</div>
<div class="line"><a name="l13077"></a><span class="lineno">13077</span>&#160; { 0xC45D1DF942711D9A, 242, 92 },</div>
<div class="line"><a name="l13078"></a><span class="lineno">13078</span>&#160; { 0x924D692CA61BE758, 269, 100 },</div>
<div class="line"><a name="l13079"></a><span class="lineno">13079</span>&#160; { 0xDA01EE641A708DEA, 295, 108 },</div>
<div class="line"><a name="l13080"></a><span class="lineno">13080</span>&#160; { 0xA26DA3999AEF774A, 322, 116 },</div>
<div class="line"><a name="l13081"></a><span class="lineno">13081</span>&#160; { 0xF209787BB47D6B85, 348, 124 },</div>
<div class="line"><a name="l13082"></a><span class="lineno">13082</span>&#160; { 0xB454E4A179DD1877, 375, 132 },</div>
<div class="line"><a name="l13083"></a><span class="lineno">13083</span>&#160; { 0x865B86925B9BC5C2, 402, 140 },</div>
<div class="line"><a name="l13084"></a><span class="lineno">13084</span>&#160; { 0xC83553C5C8965D3D, 428, 148 },</div>
<div class="line"><a name="l13085"></a><span class="lineno">13085</span>&#160; { 0x952AB45CFA97A0B3, 455, 156 },</div>
<div class="line"><a name="l13086"></a><span class="lineno">13086</span>&#160; { 0xDE469FBD99A05FE3, 481, 164 },</div>
<div class="line"><a name="l13087"></a><span class="lineno">13087</span>&#160; { 0xA59BC234DB398C25, 508, 172 },</div>
<div class="line"><a name="l13088"></a><span class="lineno">13088</span>&#160; { 0xF6C69A72A3989F5C, 534, 180 },</div>
<div class="line"><a name="l13089"></a><span class="lineno">13089</span>&#160; { 0xB7DCBF5354E9BECE, 561, 188 },</div>
<div class="line"><a name="l13090"></a><span class="lineno">13090</span>&#160; { 0x88FCF317F22241E2, 588, 196 },</div>
<div class="line"><a name="l13091"></a><span class="lineno">13091</span>&#160; { 0xCC20CE9BD35C78A5, 614, 204 },</div>
<div class="line"><a name="l13092"></a><span class="lineno">13092</span>&#160; { 0x98165AF37B2153DF, 641, 212 },</div>
<div class="line"><a name="l13093"></a><span class="lineno">13093</span>&#160; { 0xE2A0B5DC971F303A, 667, 220 },</div>
<div class="line"><a name="l13094"></a><span class="lineno">13094</span>&#160; { 0xA8D9D1535CE3B396, 694, 228 },</div>
<div class="line"><a name="l13095"></a><span class="lineno">13095</span>&#160; { 0xFB9B7CD9A4A7443C, 720, 236 },</div>
<div class="line"><a name="l13096"></a><span class="lineno">13096</span>&#160; { 0xBB764C4CA7A44410, 747, 244 },</div>
<div class="line"><a name="l13097"></a><span class="lineno">13097</span>&#160; { 0x8BAB8EEFB6409C1A, 774, 252 },</div>
<div class="line"><a name="l13098"></a><span class="lineno">13098</span>&#160; { 0xD01FEF10A657842C, 800, 260 },</div>
<div class="line"><a name="l13099"></a><span class="lineno">13099</span>&#160; { 0x9B10A4E5E9913129, 827, 268 },</div>
<div class="line"><a name="l13100"></a><span class="lineno">13100</span>&#160; { 0xE7109BFBA19C0C9D, 853, 276 },</div>
<div class="line"><a name="l13101"></a><span class="lineno">13101</span>&#160; { 0xAC2820D9623BF429, 880, 284 },</div>
<div class="line"><a name="l13102"></a><span class="lineno">13102</span>&#160; { 0x80444B5E7AA7CF85, 907, 292 },</div>
<div class="line"><a name="l13103"></a><span class="lineno">13103</span>&#160; { 0xBF21E44003ACDD2D, 933, 300 },</div>
<div class="line"><a name="l13104"></a><span class="lineno">13104</span>&#160; { 0x8E679C2F5E44FF8F, 960, 308 },</div>
<div class="line"><a name="l13105"></a><span class="lineno">13105</span>&#160; { 0xD433179D9C8CB841, 986, 316 },</div>
<div class="line"><a name="l13106"></a><span class="lineno">13106</span>&#160; { 0x9E19DB92B4E31BA9, 1013, 324 },</div>
<div class="line"><a name="l13107"></a><span class="lineno">13107</span>&#160; }</div>
<div class="line"><a name="l13108"></a><span class="lineno">13108</span>&#160; };</div>
<div class="line"><a name="l13109"></a><span class="lineno">13109</span>&#160; </div>
<div class="line"><a name="l13110"></a><span class="lineno">13110</span>&#160; <span class="comment">// This computation gives exactly the same results for k as</span></div>
<div class="line"><a name="l13111"></a><span class="lineno">13111</span>&#160; <span class="comment">// k = ceil((kAlpha - e - 1) * 0.30102999566398114)</span></div>
<div class="line"><a name="l13112"></a><span class="lineno">13112</span>&#160; <span class="comment">// for |e| &lt;= 1500, but doesn&#39;t require floating-point operations.</span></div>
<div class="line"><a name="l13113"></a><span class="lineno">13113</span>&#160; <span class="comment">// NB: log_10(2) ~= 78913 / 2^18</span></div>
<div class="line"><a name="l13114"></a><span class="lineno">13114</span>&#160; assert(e &gt;= -1500);</div>
<div class="line"><a name="l13115"></a><span class="lineno">13115</span>&#160; assert(e &lt;= 1500);</div>
<div class="line"><a name="l13116"></a><span class="lineno">13116</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> f = <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">kAlpha</a> - e - 1;</div>
<div class="line"><a name="l13117"></a><span class="lineno">13117</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> k = (f * 78913) / (1 &lt;&lt; 18) + <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(f &gt; 0);</div>
<div class="line"><a name="l13118"></a><span class="lineno">13118</span>&#160; </div>
<div class="line"><a name="l13119"></a><span class="lineno">13119</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep;</div>
<div class="line"><a name="l13120"></a><span class="lineno">13120</span>&#160; assert(index &gt;= 0);</div>
<div class="line"><a name="l13121"></a><span class="lineno">13121</span>&#160; assert(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(index) &lt; kCachedPowers.size());</div>
<div class="line"><a name="l13122"></a><span class="lineno">13122</span>&#160; </div>
<div class="line"><a name="l13123"></a><span class="lineno">13123</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">cached_power</a> cached = kCachedPowers[<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(index)];</div>
<div class="line"><a name="l13124"></a><span class="lineno">13124</span>&#160; assert(<a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">kAlpha</a> &lt;= cached.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">e</a> + e + 64);</div>
<div class="line"><a name="l13125"></a><span class="lineno">13125</span>&#160; assert(<a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">kGamma</a> &gt;= cached.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">e</a> + e + 64);</div>
<div class="line"><a name="l13126"></a><span class="lineno">13126</span>&#160; </div>
<div class="line"><a name="l13127"></a><span class="lineno">13127</span>&#160; <span class="keywordflow">return</span> cached;</div>
<div class="line"><a name="l13128"></a><span class="lineno">13128</span>&#160;}</div>
<div class="line"><a name="l13129"></a><span class="lineno">13129</span>&#160; </div>
<div class="line"><a name="l13134"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a36ded358763b5dbcea9867660fbe4e28">13134</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a36ded358763b5dbcea9867660fbe4e28">find_largest_pow10</a>(<span class="keyword">const</span> std::uint32_t n, std::uint32_t&amp; pow10)</div>
<div class="line"><a name="l13135"></a><span class="lineno">13135</span>&#160;{</div>
<div class="line"><a name="l13136"></a><span class="lineno">13136</span>&#160; <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a name="l13137"></a><span class="lineno">13137</span>&#160; <span class="keywordflow">if</span> (n &gt;= 1000000000)</div>
<div class="line"><a name="l13138"></a><span class="lineno">13138</span>&#160; {</div>
<div class="line"><a name="l13139"></a><span class="lineno">13139</span>&#160; pow10 = 1000000000;</div>
<div class="line"><a name="l13140"></a><span class="lineno">13140</span>&#160; <span class="keywordflow">return</span> 10;</div>
<div class="line"><a name="l13141"></a><span class="lineno">13141</span>&#160; }</div>
<div class="line"><a name="l13142"></a><span class="lineno">13142</span>&#160; <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a name="l13143"></a><span class="lineno">13143</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &gt;= 100000000)</div>
<div class="line"><a name="l13144"></a><span class="lineno">13144</span>&#160; {</div>
<div class="line"><a name="l13145"></a><span class="lineno">13145</span>&#160; pow10 = 100000000;</div>
<div class="line"><a name="l13146"></a><span class="lineno">13146</span>&#160; <span class="keywordflow">return</span> 9;</div>
<div class="line"><a name="l13147"></a><span class="lineno">13147</span>&#160; }</div>
<div class="line"><a name="l13148"></a><span class="lineno">13148</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &gt;= 10000000)</div>
<div class="line"><a name="l13149"></a><span class="lineno">13149</span>&#160; {</div>
<div class="line"><a name="l13150"></a><span class="lineno">13150</span>&#160; pow10 = 10000000;</div>
<div class="line"><a name="l13151"></a><span class="lineno">13151</span>&#160; <span class="keywordflow">return</span> 8;</div>
<div class="line"><a name="l13152"></a><span class="lineno">13152</span>&#160; }</div>
<div class="line"><a name="l13153"></a><span class="lineno">13153</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &gt;= 1000000)</div>
<div class="line"><a name="l13154"></a><span class="lineno">13154</span>&#160; {</div>
<div class="line"><a name="l13155"></a><span class="lineno">13155</span>&#160; pow10 = 1000000;</div>
<div class="line"><a name="l13156"></a><span class="lineno">13156</span>&#160; <span class="keywordflow">return</span> 7;</div>
<div class="line"><a name="l13157"></a><span class="lineno">13157</span>&#160; }</div>
<div class="line"><a name="l13158"></a><span class="lineno">13158</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &gt;= 100000)</div>
<div class="line"><a name="l13159"></a><span class="lineno">13159</span>&#160; {</div>
<div class="line"><a name="l13160"></a><span class="lineno">13160</span>&#160; pow10 = 100000;</div>
<div class="line"><a name="l13161"></a><span class="lineno">13161</span>&#160; <span class="keywordflow">return</span> 6;</div>
<div class="line"><a name="l13162"></a><span class="lineno">13162</span>&#160; }</div>
<div class="line"><a name="l13163"></a><span class="lineno">13163</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &gt;= 10000)</div>
<div class="line"><a name="l13164"></a><span class="lineno">13164</span>&#160; {</div>
<div class="line"><a name="l13165"></a><span class="lineno">13165</span>&#160; pow10 = 10000;</div>
<div class="line"><a name="l13166"></a><span class="lineno">13166</span>&#160; <span class="keywordflow">return</span> 5;</div>
<div class="line"><a name="l13167"></a><span class="lineno">13167</span>&#160; }</div>
<div class="line"><a name="l13168"></a><span class="lineno">13168</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &gt;= 1000)</div>
<div class="line"><a name="l13169"></a><span class="lineno">13169</span>&#160; {</div>
<div class="line"><a name="l13170"></a><span class="lineno">13170</span>&#160; pow10 = 1000;</div>
<div class="line"><a name="l13171"></a><span class="lineno">13171</span>&#160; <span class="keywordflow">return</span> 4;</div>
<div class="line"><a name="l13172"></a><span class="lineno">13172</span>&#160; }</div>
<div class="line"><a name="l13173"></a><span class="lineno">13173</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &gt;= 100)</div>
<div class="line"><a name="l13174"></a><span class="lineno">13174</span>&#160; {</div>
<div class="line"><a name="l13175"></a><span class="lineno">13175</span>&#160; pow10 = 100;</div>
<div class="line"><a name="l13176"></a><span class="lineno">13176</span>&#160; <span class="keywordflow">return</span> 3;</div>
<div class="line"><a name="l13177"></a><span class="lineno">13177</span>&#160; }</div>
<div class="line"><a name="l13178"></a><span class="lineno">13178</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n &gt;= 10)</div>
<div class="line"><a name="l13179"></a><span class="lineno">13179</span>&#160; {</div>
<div class="line"><a name="l13180"></a><span class="lineno">13180</span>&#160; pow10 = 10;</div>
<div class="line"><a name="l13181"></a><span class="lineno">13181</span>&#160; <span class="keywordflow">return</span> 2;</div>
<div class="line"><a name="l13182"></a><span class="lineno">13182</span>&#160; }</div>
<div class="line"><a name="l13183"></a><span class="lineno">13183</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l13184"></a><span class="lineno">13184</span>&#160; {</div>
<div class="line"><a name="l13185"></a><span class="lineno">13185</span>&#160; pow10 = 1;</div>
<div class="line"><a name="l13186"></a><span class="lineno">13186</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l13187"></a><span class="lineno">13187</span>&#160; }</div>
<div class="line"><a name="l13188"></a><span class="lineno">13188</span>&#160;}</div>
<div class="line"><a name="l13189"></a><span class="lineno">13189</span>&#160; </div>
<div class="line"><a name="l13190"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a5bc841e0bee12fd6489d49cf7bd07bb4">13190</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a5bc841e0bee12fd6489d49cf7bd07bb4">grisu2_round</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">int</span> len, std::uint64_t dist, std::uint64_t delta,</div>
<div class="line"><a name="l13191"></a><span class="lineno">13191</span>&#160; std::uint64_t rest, std::uint64_t ten_k)</div>
<div class="line"><a name="l13192"></a><span class="lineno">13192</span>&#160;{</div>
<div class="line"><a name="l13193"></a><span class="lineno">13193</span>&#160; assert(len &gt;= 1);</div>
<div class="line"><a name="l13194"></a><span class="lineno">13194</span>&#160; assert(dist &lt;= delta);</div>
<div class="line"><a name="l13195"></a><span class="lineno">13195</span>&#160; assert(rest &lt;= delta);</div>
<div class="line"><a name="l13196"></a><span class="lineno">13196</span>&#160; assert(ten_k &gt; 0);</div>
<div class="line"><a name="l13197"></a><span class="lineno">13197</span>&#160; </div>
<div class="line"><a name="l13198"></a><span class="lineno">13198</span>&#160; <span class="comment">// &lt;--------------------------- delta ----&gt;</span></div>
<div class="line"><a name="l13199"></a><span class="lineno">13199</span>&#160; <span class="comment">// &lt;---- dist ---------&gt;</span></div>
<div class="line"><a name="l13200"></a><span class="lineno">13200</span>&#160; <span class="comment">// --------------[------------------+-------------------]--------------</span></div>
<div class="line"><a name="l13201"></a><span class="lineno">13201</span>&#160; <span class="comment">// M- w M+</span></div>
<div class="line"><a name="l13202"></a><span class="lineno">13202</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13203"></a><span class="lineno">13203</span>&#160; <span class="comment">// ten_k</span></div>
<div class="line"><a name="l13204"></a><span class="lineno">13204</span>&#160; <span class="comment">// &lt;------&gt;</span></div>
<div class="line"><a name="l13205"></a><span class="lineno">13205</span>&#160; <span class="comment">// &lt;---- rest ----&gt;</span></div>
<div class="line"><a name="l13206"></a><span class="lineno">13206</span>&#160; <span class="comment">// --------------[------------------+----+--------------]--------------</span></div>
<div class="line"><a name="l13207"></a><span class="lineno">13207</span>&#160; <span class="comment">// w V</span></div>
<div class="line"><a name="l13208"></a><span class="lineno">13208</span>&#160; <span class="comment">// = buf * 10^k</span></div>
<div class="line"><a name="l13209"></a><span class="lineno">13209</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13210"></a><span class="lineno">13210</span>&#160; <span class="comment">// ten_k represents a unit-in-the-last-place in the decimal representation</span></div>
<div class="line"><a name="l13211"></a><span class="lineno">13211</span>&#160; <span class="comment">// stored in buf.</span></div>
<div class="line"><a name="l13212"></a><span class="lineno">13212</span>&#160; <span class="comment">// Decrement buf by ten_k while this takes buf closer to w.</span></div>
<div class="line"><a name="l13213"></a><span class="lineno">13213</span>&#160; </div>
<div class="line"><a name="l13214"></a><span class="lineno">13214</span>&#160; <span class="comment">// The tests are written in this order to avoid overflow in unsigned</span></div>
<div class="line"><a name="l13215"></a><span class="lineno">13215</span>&#160; <span class="comment">// integer arithmetic.</span></div>
<div class="line"><a name="l13216"></a><span class="lineno">13216</span>&#160; </div>
<div class="line"><a name="l13217"></a><span class="lineno">13217</span>&#160; <span class="keywordflow">while</span> (rest &lt; dist</div>
<div class="line"><a name="l13218"></a><span class="lineno">13218</span>&#160; and delta - rest &gt;= ten_k</div>
<div class="line"><a name="l13219"></a><span class="lineno">13219</span>&#160; and (rest + ten_k &lt; dist or dist - rest &gt; rest + ten_k - dist))</div>
<div class="line"><a name="l13220"></a><span class="lineno">13220</span>&#160; {</div>
<div class="line"><a name="l13221"></a><span class="lineno">13221</span>&#160; assert(buf[len - 1] != <span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><a name="l13222"></a><span class="lineno">13222</span>&#160; buf[len - 1]--;</div>
<div class="line"><a name="l13223"></a><span class="lineno">13223</span>&#160; rest += ten_k;</div>
<div class="line"><a name="l13224"></a><span class="lineno">13224</span>&#160; }</div>
<div class="line"><a name="l13225"></a><span class="lineno">13225</span>&#160;}</div>
<div class="line"><a name="l13226"></a><span class="lineno">13226</span>&#160; </div>
<div class="line"><a name="l13231"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a9b899c72b0e1e3dd46d75c2b4e6bcdfb">13231</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a9b899c72b0e1e3dd46d75c2b4e6bcdfb">grisu2_digit_gen</a>(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span>&amp; length, <span class="keywordtype">int</span>&amp; decimal_exponent,</div>
<div class="line"><a name="l13232"></a><span class="lineno">13232</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> M_minus, <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w, <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> M_plus)</div>
<div class="line"><a name="l13233"></a><span class="lineno">13233</span>&#160;{</div>
<div class="line"><a name="l13234"></a><span class="lineno">13234</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">kAlpha</a> &gt;= -60, <span class="stringliteral">&quot;internal error&quot;</span>);</div>
<div class="line"><a name="l13235"></a><span class="lineno">13235</span>&#160; static_assert(<a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">kGamma</a> &lt;= -32, <span class="stringliteral">&quot;internal error&quot;</span>);</div>
<div class="line"><a name="l13236"></a><span class="lineno">13236</span>&#160; </div>
<div class="line"><a name="l13237"></a><span class="lineno">13237</span>&#160; <span class="comment">// Generates the digits (and the exponent) of a decimal floating-point</span></div>
<div class="line"><a name="l13238"></a><span class="lineno">13238</span>&#160; <span class="comment">// number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp&#39;s</span></div>
<div class="line"><a name="l13239"></a><span class="lineno">13239</span>&#160; <span class="comment">// w, M- and M+ share the same exponent e, which satisfies alpha &lt;= e &lt;= gamma.</span></div>
<div class="line"><a name="l13240"></a><span class="lineno">13240</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13241"></a><span class="lineno">13241</span>&#160; <span class="comment">// &lt;--------------------------- delta ----&gt;</span></div>
<div class="line"><a name="l13242"></a><span class="lineno">13242</span>&#160; <span class="comment">// &lt;---- dist ---------&gt;</span></div>
<div class="line"><a name="l13243"></a><span class="lineno">13243</span>&#160; <span class="comment">// --------------[------------------+-------------------]--------------</span></div>
<div class="line"><a name="l13244"></a><span class="lineno">13244</span>&#160; <span class="comment">// M- w M+</span></div>
<div class="line"><a name="l13245"></a><span class="lineno">13245</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13246"></a><span class="lineno">13246</span>&#160; <span class="comment">// Grisu2 generates the digits of M+ from left to right and stops as soon as</span></div>
<div class="line"><a name="l13247"></a><span class="lineno">13247</span>&#160; <span class="comment">// V is in [M-,M+].</span></div>
<div class="line"><a name="l13248"></a><span class="lineno">13248</span>&#160; </div>
<div class="line"><a name="l13249"></a><span class="lineno">13249</span>&#160; assert(M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> &gt;= <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">kAlpha</a>);</div>
<div class="line"><a name="l13250"></a><span class="lineno">13250</span>&#160; assert(M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> &lt;= <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">kGamma</a>);</div>
<div class="line"><a name="l13251"></a><span class="lineno">13251</span>&#160; </div>
<div class="line"><a name="l13252"></a><span class="lineno">13252</span>&#160; std::uint64_t delta = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aeb26771af54ad73598c1a0430d65d884">diyfp::sub</a>(M_plus, M_minus).<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a>; <span class="comment">// (significand of (M+ - M-), implicit exponent is e)</span></div>
<div class="line"><a name="l13253"></a><span class="lineno">13253</span>&#160; std::uint64_t dist = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aeb26771af54ad73598c1a0430d65d884">diyfp::sub</a>(M_plus, w ).<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a>; <span class="comment">// (significand of (M+ - w ), implicit exponent is e)</span></div>
<div class="line"><a name="l13254"></a><span class="lineno">13254</span>&#160; </div>
<div class="line"><a name="l13255"></a><span class="lineno">13255</span>&#160; <span class="comment">// Split M+ = f * 2^e into two parts p1 and p2 (note: e &lt; 0):</span></div>
<div class="line"><a name="l13256"></a><span class="lineno">13256</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13257"></a><span class="lineno">13257</span>&#160; <span class="comment">// M+ = f * 2^e</span></div>
<div class="line"><a name="l13258"></a><span class="lineno">13258</span>&#160; <span class="comment">// = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e</span></div>
<div class="line"><a name="l13259"></a><span class="lineno">13259</span>&#160; <span class="comment">// = ((p1 ) * 2^-e + (p2 )) * 2^e</span></div>
<div class="line"><a name="l13260"></a><span class="lineno">13260</span>&#160; <span class="comment">// = p1 + p2 * 2^e</span></div>
<div class="line"><a name="l13261"></a><span class="lineno">13261</span>&#160; </div>
<div class="line"><a name="l13262"></a><span class="lineno">13262</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> one(std::uint64_t{1} &lt;&lt; -M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a>, M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a>);</div>
<div class="line"><a name="l13263"></a><span class="lineno">13263</span>&#160; </div>
<div class="line"><a name="l13264"></a><span class="lineno">13264</span>&#160; <span class="keyword">auto</span> p1 = <span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> &gt;&gt; -one.e); <span class="comment">// p1 = f div 2^-e (Since -e &gt;= 32, p1 fits into a 32-bit int.)</span></div>
<div class="line"><a name="l13265"></a><span class="lineno">13265</span>&#160; std::uint64_t p2 = M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> &amp; (one.f - 1); <span class="comment">// p2 = f mod 2^-e</span></div>
<div class="line"><a name="l13266"></a><span class="lineno">13266</span>&#160; </div>
<div class="line"><a name="l13267"></a><span class="lineno">13267</span>&#160; <span class="comment">// 1)</span></div>
<div class="line"><a name="l13268"></a><span class="lineno">13268</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13269"></a><span class="lineno">13269</span>&#160; <span class="comment">// Generate the digits of the integral part p1 = d[n-1]...d[1]d[0]</span></div>
<div class="line"><a name="l13270"></a><span class="lineno">13270</span>&#160; </div>
<div class="line"><a name="l13271"></a><span class="lineno">13271</span>&#160; assert(p1 &gt; 0);</div>
<div class="line"><a name="l13272"></a><span class="lineno">13272</span>&#160; </div>
<div class="line"><a name="l13273"></a><span class="lineno">13273</span>&#160; std::uint32_t pow10;</div>
<div class="line"><a name="l13274"></a><span class="lineno">13274</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> k = <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a36ded358763b5dbcea9867660fbe4e28">find_largest_pow10</a>(p1, pow10);</div>
<div class="line"><a name="l13275"></a><span class="lineno">13275</span>&#160; </div>
<div class="line"><a name="l13276"></a><span class="lineno">13276</span>&#160; <span class="comment">// 10^(k-1) &lt;= p1 &lt; 10^k, pow10 = 10^(k-1)</span></div>
<div class="line"><a name="l13277"></a><span class="lineno">13277</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13278"></a><span class="lineno">13278</span>&#160; <span class="comment">// p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1))</span></div>
<div class="line"><a name="l13279"></a><span class="lineno">13279</span>&#160; <span class="comment">// = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1))</span></div>
<div class="line"><a name="l13280"></a><span class="lineno">13280</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13281"></a><span class="lineno">13281</span>&#160; <span class="comment">// M+ = p1 + p2 * 2^e</span></div>
<div class="line"><a name="l13282"></a><span class="lineno">13282</span>&#160; <span class="comment">// = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e</span></div>
<div class="line"><a name="l13283"></a><span class="lineno">13283</span>&#160; <span class="comment">// = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e</span></div>
<div class="line"><a name="l13284"></a><span class="lineno">13284</span>&#160; <span class="comment">// = d[k-1] * 10^(k-1) + ( rest) * 2^e</span></div>
<div class="line"><a name="l13285"></a><span class="lineno">13285</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13286"></a><span class="lineno">13286</span>&#160; <span class="comment">// Now generate the digits d[n] of p1 from left to right (n = k-1,...,0)</span></div>
<div class="line"><a name="l13287"></a><span class="lineno">13287</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13288"></a><span class="lineno">13288</span>&#160; <span class="comment">// p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0]</span></div>
<div class="line"><a name="l13289"></a><span class="lineno">13289</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13290"></a><span class="lineno">13290</span>&#160; <span class="comment">// but stop as soon as</span></div>
<div class="line"><a name="l13291"></a><span class="lineno">13291</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13292"></a><span class="lineno">13292</span>&#160; <span class="comment">// rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e &lt;= delta * 2^e</span></div>
<div class="line"><a name="l13293"></a><span class="lineno">13293</span>&#160; </div>
<div class="line"><a name="l13294"></a><span class="lineno">13294</span>&#160; <span class="keywordtype">int</span> n = k;</div>
<div class="line"><a name="l13295"></a><span class="lineno">13295</span>&#160; <span class="keywordflow">while</span> (n &gt; 0)</div>
<div class="line"><a name="l13296"></a><span class="lineno">13296</span>&#160; {</div>
<div class="line"><a name="l13297"></a><span class="lineno">13297</span>&#160; <span class="comment">// Invariants:</span></div>
<div class="line"><a name="l13298"></a><span class="lineno">13298</span>&#160; <span class="comment">// M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k)</span></div>
<div class="line"><a name="l13299"></a><span class="lineno">13299</span>&#160; <span class="comment">// pow10 = 10^(n-1) &lt;= p1 &lt; 10^n</span></div>
<div class="line"><a name="l13300"></a><span class="lineno">13300</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13301"></a><span class="lineno">13301</span>&#160; <span class="keyword">const</span> std::uint32_t d = p1 / pow10; <span class="comment">// d = p1 div 10^(n-1)</span></div>
<div class="line"><a name="l13302"></a><span class="lineno">13302</span>&#160; <span class="keyword">const</span> std::uint32_t r = p1 % pow10; <span class="comment">// r = p1 mod 10^(n-1)</span></div>
<div class="line"><a name="l13303"></a><span class="lineno">13303</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13304"></a><span class="lineno">13304</span>&#160; <span class="comment">// M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e</span></div>
<div class="line"><a name="l13305"></a><span class="lineno">13305</span>&#160; <span class="comment">// = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e)</span></div>
<div class="line"><a name="l13306"></a><span class="lineno">13306</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13307"></a><span class="lineno">13307</span>&#160; assert(d &lt;= 9);</div>
<div class="line"><a name="l13308"></a><span class="lineno">13308</span>&#160; buffer[length++] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + d); <span class="comment">// buffer := buffer * 10 + d</span></div>
<div class="line"><a name="l13309"></a><span class="lineno">13309</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13310"></a><span class="lineno">13310</span>&#160; <span class="comment">// M+ = buffer * 10^(n-1) + (r + p2 * 2^e)</span></div>
<div class="line"><a name="l13311"></a><span class="lineno">13311</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13312"></a><span class="lineno">13312</span>&#160; p1 = r;</div>
<div class="line"><a name="l13313"></a><span class="lineno">13313</span>&#160; n--;</div>
<div class="line"><a name="l13314"></a><span class="lineno">13314</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13315"></a><span class="lineno">13315</span>&#160; <span class="comment">// M+ = buffer * 10^n + (p1 + p2 * 2^e)</span></div>
<div class="line"><a name="l13316"></a><span class="lineno">13316</span>&#160; <span class="comment">// pow10 = 10^n</span></div>
<div class="line"><a name="l13317"></a><span class="lineno">13317</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13318"></a><span class="lineno">13318</span>&#160; </div>
<div class="line"><a name="l13319"></a><span class="lineno">13319</span>&#160; <span class="comment">// Now check if enough digits have been generated.</span></div>
<div class="line"><a name="l13320"></a><span class="lineno">13320</span>&#160; <span class="comment">// Compute</span></div>
<div class="line"><a name="l13321"></a><span class="lineno">13321</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13322"></a><span class="lineno">13322</span>&#160; <span class="comment">// p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e</span></div>
<div class="line"><a name="l13323"></a><span class="lineno">13323</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13324"></a><span class="lineno">13324</span>&#160; <span class="comment">// Note:</span></div>
<div class="line"><a name="l13325"></a><span class="lineno">13325</span>&#160; <span class="comment">// Since rest and delta share the same exponent e, it suffices to</span></div>
<div class="line"><a name="l13326"></a><span class="lineno">13326</span>&#160; <span class="comment">// compare the significands.</span></div>
<div class="line"><a name="l13327"></a><span class="lineno">13327</span>&#160; <span class="keyword">const</span> std::uint64_t rest = (std::uint64_t{p1} &lt;&lt; -one.e) + p2;</div>
<div class="line"><a name="l13328"></a><span class="lineno">13328</span>&#160; <span class="keywordflow">if</span> (rest &lt;= delta)</div>
<div class="line"><a name="l13329"></a><span class="lineno">13329</span>&#160; {</div>
<div class="line"><a name="l13330"></a><span class="lineno">13330</span>&#160; <span class="comment">// V = buffer * 10^n, with M- &lt;= V &lt;= M+.</span></div>
<div class="line"><a name="l13331"></a><span class="lineno">13331</span>&#160; </div>
<div class="line"><a name="l13332"></a><span class="lineno">13332</span>&#160; decimal_exponent += n;</div>
<div class="line"><a name="l13333"></a><span class="lineno">13333</span>&#160; </div>
<div class="line"><a name="l13334"></a><span class="lineno">13334</span>&#160; <span class="comment">// We may now just stop. But instead look if the buffer could be</span></div>
<div class="line"><a name="l13335"></a><span class="lineno">13335</span>&#160; <span class="comment">// decremented to bring V closer to w.</span></div>
<div class="line"><a name="l13336"></a><span class="lineno">13336</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13337"></a><span class="lineno">13337</span>&#160; <span class="comment">// pow10 = 10^n is now 1 ulp in the decimal representation V.</span></div>
<div class="line"><a name="l13338"></a><span class="lineno">13338</span>&#160; <span class="comment">// The rounding procedure works with diyfp&#39;s with an implicit</span></div>
<div class="line"><a name="l13339"></a><span class="lineno">13339</span>&#160; <span class="comment">// exponent of e.</span></div>
<div class="line"><a name="l13340"></a><span class="lineno">13340</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13341"></a><span class="lineno">13341</span>&#160; <span class="comment">// 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e</span></div>
<div class="line"><a name="l13342"></a><span class="lineno">13342</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13343"></a><span class="lineno">13343</span>&#160; <span class="keyword">const</span> std::uint64_t ten_n = std::uint64_t{pow10} &lt;&lt; -one.e;</div>
<div class="line"><a name="l13344"></a><span class="lineno">13344</span>&#160; <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a5bc841e0bee12fd6489d49cf7bd07bb4">grisu2_round</a>(buffer, length, dist, delta, rest, ten_n);</div>
<div class="line"><a name="l13345"></a><span class="lineno">13345</span>&#160; </div>
<div class="line"><a name="l13346"></a><span class="lineno">13346</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l13347"></a><span class="lineno">13347</span>&#160; }</div>
<div class="line"><a name="l13348"></a><span class="lineno">13348</span>&#160; </div>
<div class="line"><a name="l13349"></a><span class="lineno">13349</span>&#160; pow10 /= 10;</div>
<div class="line"><a name="l13350"></a><span class="lineno">13350</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13351"></a><span class="lineno">13351</span>&#160; <span class="comment">// pow10 = 10^(n-1) &lt;= p1 &lt; 10^n</span></div>
<div class="line"><a name="l13352"></a><span class="lineno">13352</span>&#160; <span class="comment">// Invariants restored.</span></div>
<div class="line"><a name="l13353"></a><span class="lineno">13353</span>&#160; }</div>
<div class="line"><a name="l13354"></a><span class="lineno">13354</span>&#160; </div>
<div class="line"><a name="l13355"></a><span class="lineno">13355</span>&#160; <span class="comment">// 2)</span></div>
<div class="line"><a name="l13356"></a><span class="lineno">13356</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13357"></a><span class="lineno">13357</span>&#160; <span class="comment">// The digits of the integral part have been generated:</span></div>
<div class="line"><a name="l13358"></a><span class="lineno">13358</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13359"></a><span class="lineno">13359</span>&#160; <span class="comment">// M+ = d[k-1]...d[1]d[0] + p2 * 2^e</span></div>
<div class="line"><a name="l13360"></a><span class="lineno">13360</span>&#160; <span class="comment">// = buffer + p2 * 2^e</span></div>
<div class="line"><a name="l13361"></a><span class="lineno">13361</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13362"></a><span class="lineno">13362</span>&#160; <span class="comment">// Now generate the digits of the fractional part p2 * 2^e.</span></div>
<div class="line"><a name="l13363"></a><span class="lineno">13363</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13364"></a><span class="lineno">13364</span>&#160; <span class="comment">// Note:</span></div>
<div class="line"><a name="l13365"></a><span class="lineno">13365</span>&#160; <span class="comment">// No decimal point is generated: the exponent is adjusted instead.</span></div>
<div class="line"><a name="l13366"></a><span class="lineno">13366</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13367"></a><span class="lineno">13367</span>&#160; <span class="comment">// p2 actually represents the fraction</span></div>
<div class="line"><a name="l13368"></a><span class="lineno">13368</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13369"></a><span class="lineno">13369</span>&#160; <span class="comment">// p2 * 2^e</span></div>
<div class="line"><a name="l13370"></a><span class="lineno">13370</span>&#160; <span class="comment">// = p2 / 2^-e</span></div>
<div class="line"><a name="l13371"></a><span class="lineno">13371</span>&#160; <span class="comment">// = d[-1] / 10^1 + d[-2] / 10^2 + ...</span></div>
<div class="line"><a name="l13372"></a><span class="lineno">13372</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13373"></a><span class="lineno">13373</span>&#160; <span class="comment">// Now generate the digits d[-m] of p1 from left to right (m = 1,2,...)</span></div>
<div class="line"><a name="l13374"></a><span class="lineno">13374</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13375"></a><span class="lineno">13375</span>&#160; <span class="comment">// p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m</span></div>
<div class="line"><a name="l13376"></a><span class="lineno">13376</span>&#160; <span class="comment">// + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...)</span></div>
<div class="line"><a name="l13377"></a><span class="lineno">13377</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13378"></a><span class="lineno">13378</span>&#160; <span class="comment">// using</span></div>
<div class="line"><a name="l13379"></a><span class="lineno">13379</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13380"></a><span class="lineno">13380</span>&#160; <span class="comment">// 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e)</span></div>
<div class="line"><a name="l13381"></a><span class="lineno">13381</span>&#160; <span class="comment">// = ( d) * 2^-e + ( r)</span></div>
<div class="line"><a name="l13382"></a><span class="lineno">13382</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13383"></a><span class="lineno">13383</span>&#160; <span class="comment">// or</span></div>
<div class="line"><a name="l13384"></a><span class="lineno">13384</span>&#160; <span class="comment">// 10^m * p2 * 2^e = d + r * 2^e</span></div>
<div class="line"><a name="l13385"></a><span class="lineno">13385</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13386"></a><span class="lineno">13386</span>&#160; <span class="comment">// i.e.</span></div>
<div class="line"><a name="l13387"></a><span class="lineno">13387</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13388"></a><span class="lineno">13388</span>&#160; <span class="comment">// M+ = buffer + p2 * 2^e</span></div>
<div class="line"><a name="l13389"></a><span class="lineno">13389</span>&#160; <span class="comment">// = buffer + 10^-m * (d + r * 2^e)</span></div>
<div class="line"><a name="l13390"></a><span class="lineno">13390</span>&#160; <span class="comment">// = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e</span></div>
<div class="line"><a name="l13391"></a><span class="lineno">13391</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13392"></a><span class="lineno">13392</span>&#160; <span class="comment">// and stop as soon as 10^-m * r * 2^e &lt;= delta * 2^e</span></div>
<div class="line"><a name="l13393"></a><span class="lineno">13393</span>&#160; </div>
<div class="line"><a name="l13394"></a><span class="lineno">13394</span>&#160; assert(p2 &gt; delta);</div>
<div class="line"><a name="l13395"></a><span class="lineno">13395</span>&#160; </div>
<div class="line"><a name="l13396"></a><span class="lineno">13396</span>&#160; <span class="keywordtype">int</span> m = 0;</div>
<div class="line"><a name="l13397"></a><span class="lineno">13397</span>&#160; <span class="keywordflow">for</span> (;;)</div>
<div class="line"><a name="l13398"></a><span class="lineno">13398</span>&#160; {</div>
<div class="line"><a name="l13399"></a><span class="lineno">13399</span>&#160; <span class="comment">// Invariant:</span></div>
<div class="line"><a name="l13400"></a><span class="lineno">13400</span>&#160; <span class="comment">// M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e</span></div>
<div class="line"><a name="l13401"></a><span class="lineno">13401</span>&#160; <span class="comment">// = buffer * 10^-m + 10^-m * (p2 ) * 2^e</span></div>
<div class="line"><a name="l13402"></a><span class="lineno">13402</span>&#160; <span class="comment">// = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e</span></div>
<div class="line"><a name="l13403"></a><span class="lineno">13403</span>&#160; <span class="comment">// = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e</span></div>
<div class="line"><a name="l13404"></a><span class="lineno">13404</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13405"></a><span class="lineno">13405</span>&#160; assert(p2 &lt;= (std::numeric_limits&lt;std::uint64_t&gt;::max)() / 10);</div>
<div class="line"><a name="l13406"></a><span class="lineno">13406</span>&#160; p2 *= 10;</div>
<div class="line"><a name="l13407"></a><span class="lineno">13407</span>&#160; <span class="keyword">const</span> std::uint64_t d = p2 &gt;&gt; -one.e; <span class="comment">// d = (10 * p2) div 2^-e</span></div>
<div class="line"><a name="l13408"></a><span class="lineno">13408</span>&#160; <span class="keyword">const</span> std::uint64_t r = p2 &amp; (one.f - 1); <span class="comment">// r = (10 * p2) mod 2^-e</span></div>
<div class="line"><a name="l13409"></a><span class="lineno">13409</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13410"></a><span class="lineno">13410</span>&#160; <span class="comment">// M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e</span></div>
<div class="line"><a name="l13411"></a><span class="lineno">13411</span>&#160; <span class="comment">// = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e))</span></div>
<div class="line"><a name="l13412"></a><span class="lineno">13412</span>&#160; <span class="comment">// = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e</span></div>
<div class="line"><a name="l13413"></a><span class="lineno">13413</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13414"></a><span class="lineno">13414</span>&#160; assert(d &lt;= 9);</div>
<div class="line"><a name="l13415"></a><span class="lineno">13415</span>&#160; buffer[length++] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + d); <span class="comment">// buffer := buffer * 10 + d</span></div>
<div class="line"><a name="l13416"></a><span class="lineno">13416</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13417"></a><span class="lineno">13417</span>&#160; <span class="comment">// M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e</span></div>
<div class="line"><a name="l13418"></a><span class="lineno">13418</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13419"></a><span class="lineno">13419</span>&#160; p2 = r;</div>
<div class="line"><a name="l13420"></a><span class="lineno">13420</span>&#160; m++;</div>
<div class="line"><a name="l13421"></a><span class="lineno">13421</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13422"></a><span class="lineno">13422</span>&#160; <span class="comment">// M+ = buffer * 10^-m + 10^-m * p2 * 2^e</span></div>
<div class="line"><a name="l13423"></a><span class="lineno">13423</span>&#160; <span class="comment">// Invariant restored.</span></div>
<div class="line"><a name="l13424"></a><span class="lineno">13424</span>&#160; </div>
<div class="line"><a name="l13425"></a><span class="lineno">13425</span>&#160; <span class="comment">// Check if enough digits have been generated.</span></div>
<div class="line"><a name="l13426"></a><span class="lineno">13426</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13427"></a><span class="lineno">13427</span>&#160; <span class="comment">// 10^-m * p2 * 2^e &lt;= delta * 2^e</span></div>
<div class="line"><a name="l13428"></a><span class="lineno">13428</span>&#160; <span class="comment">// p2 * 2^e &lt;= 10^m * delta * 2^e</span></div>
<div class="line"><a name="l13429"></a><span class="lineno">13429</span>&#160; <span class="comment">// p2 &lt;= 10^m * delta</span></div>
<div class="line"><a name="l13430"></a><span class="lineno">13430</span>&#160; delta *= 10;</div>
<div class="line"><a name="l13431"></a><span class="lineno">13431</span>&#160; dist *= 10;</div>
<div class="line"><a name="l13432"></a><span class="lineno">13432</span>&#160; <span class="keywordflow">if</span> (p2 &lt;= delta)</div>
<div class="line"><a name="l13433"></a><span class="lineno">13433</span>&#160; {</div>
<div class="line"><a name="l13434"></a><span class="lineno">13434</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l13435"></a><span class="lineno">13435</span>&#160; }</div>
<div class="line"><a name="l13436"></a><span class="lineno">13436</span>&#160; }</div>
<div class="line"><a name="l13437"></a><span class="lineno">13437</span>&#160; </div>
<div class="line"><a name="l13438"></a><span class="lineno">13438</span>&#160; <span class="comment">// V = buffer * 10^-m, with M- &lt;= V &lt;= M+.</span></div>
<div class="line"><a name="l13439"></a><span class="lineno">13439</span>&#160; </div>
<div class="line"><a name="l13440"></a><span class="lineno">13440</span>&#160; decimal_exponent -= m;</div>
<div class="line"><a name="l13441"></a><span class="lineno">13441</span>&#160; </div>
<div class="line"><a name="l13442"></a><span class="lineno">13442</span>&#160; <span class="comment">// 1 ulp in the decimal representation is now 10^-m.</span></div>
<div class="line"><a name="l13443"></a><span class="lineno">13443</span>&#160; <span class="comment">// Since delta and dist are now scaled by 10^m, we need to do the</span></div>
<div class="line"><a name="l13444"></a><span class="lineno">13444</span>&#160; <span class="comment">// same with ulp in order to keep the units in sync.</span></div>
<div class="line"><a name="l13445"></a><span class="lineno">13445</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13446"></a><span class="lineno">13446</span>&#160; <span class="comment">// 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e</span></div>
<div class="line"><a name="l13447"></a><span class="lineno">13447</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13448"></a><span class="lineno">13448</span>&#160; <span class="keyword">const</span> std::uint64_t ten_m = one.f;</div>
<div class="line"><a name="l13449"></a><span class="lineno">13449</span>&#160; <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a5bc841e0bee12fd6489d49cf7bd07bb4">grisu2_round</a>(buffer, length, dist, delta, p2, ten_m);</div>
<div class="line"><a name="l13450"></a><span class="lineno">13450</span>&#160; </div>
<div class="line"><a name="l13451"></a><span class="lineno">13451</span>&#160; <span class="comment">// By construction this algorithm generates the shortest possible decimal</span></div>
<div class="line"><a name="l13452"></a><span class="lineno">13452</span>&#160; <span class="comment">// number (Loitsch, Theorem 6.2) which rounds back to w.</span></div>
<div class="line"><a name="l13453"></a><span class="lineno">13453</span>&#160; <span class="comment">// For an input number of precision p, at least</span></div>
<div class="line"><a name="l13454"></a><span class="lineno">13454</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13455"></a><span class="lineno">13455</span>&#160; <span class="comment">// N = 1 + ceil(p * log_10(2))</span></div>
<div class="line"><a name="l13456"></a><span class="lineno">13456</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13457"></a><span class="lineno">13457</span>&#160; <span class="comment">// decimal digits are sufficient to identify all binary floating-point</span></div>
<div class="line"><a name="l13458"></a><span class="lineno">13458</span>&#160; <span class="comment">// numbers (Matula, &quot;In-and-Out conversions&quot;).</span></div>
<div class="line"><a name="l13459"></a><span class="lineno">13459</span>&#160; <span class="comment">// This implies that the algorithm does not produce more than N decimal</span></div>
<div class="line"><a name="l13460"></a><span class="lineno">13460</span>&#160; <span class="comment">// digits.</span></div>
<div class="line"><a name="l13461"></a><span class="lineno">13461</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13462"></a><span class="lineno">13462</span>&#160; <span class="comment">// N = 17 for p = 53 (IEEE double precision)</span></div>
<div class="line"><a name="l13463"></a><span class="lineno">13463</span>&#160; <span class="comment">// N = 9 for p = 24 (IEEE single precision)</span></div>
<div class="line"><a name="l13464"></a><span class="lineno">13464</span>&#160;}</div>
<div class="line"><a name="l13465"></a><span class="lineno">13465</span>&#160; </div>
<div class="line"><a name="l13471"></a><span class="lineno">13471</span>&#160;<a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
<div class="line"><a name="l13472"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">13472</a></span>&#160;inline <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">grisu2</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">int</span>&amp; len, <span class="keywordtype">int</span>&amp; decimal_exponent,</div>
<div class="line"><a name="l13473"></a><span class="lineno">13473</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> m_minus, <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> v, <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> m_plus)</div>
<div class="line"><a name="l13474"></a><span class="lineno">13474</span>&#160;{</div>
<div class="line"><a name="l13475"></a><span class="lineno">13475</span>&#160; assert(m_plus.e == m_minus.e);</div>
<div class="line"><a name="l13476"></a><span class="lineno">13476</span>&#160; assert(m_plus.e == v.e);</div>
<div class="line"><a name="l13477"></a><span class="lineno">13477</span>&#160; </div>
<div class="line"><a name="l13478"></a><span class="lineno">13478</span>&#160; <span class="comment">// --------(-----------------------+-----------------------)-------- (A)</span></div>
<div class="line"><a name="l13479"></a><span class="lineno">13479</span>&#160; <span class="comment">// m- v m+</span></div>
<div class="line"><a name="l13480"></a><span class="lineno">13480</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13481"></a><span class="lineno">13481</span>&#160; <span class="comment">// --------------------(-----------+-----------------------)-------- (B)</span></div>
<div class="line"><a name="l13482"></a><span class="lineno">13482</span>&#160; <span class="comment">// m- v m+</span></div>
<div class="line"><a name="l13483"></a><span class="lineno">13483</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13484"></a><span class="lineno">13484</span>&#160; <span class="comment">// First scale v (and m- and m+) such that the exponent is in the range</span></div>
<div class="line"><a name="l13485"></a><span class="lineno">13485</span>&#160; <span class="comment">// [alpha, gamma].</span></div>
<div class="line"><a name="l13486"></a><span class="lineno">13486</span>&#160; </div>
<div class="line"><a name="l13487"></a><span class="lineno">13487</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">cached_power</a> cached = <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#adbf329a18c5cf854a3477327afd2200b">get_cached_power_for_binary_exponent</a>(m_plus.e);</div>
<div class="line"><a name="l13488"></a><span class="lineno">13488</span>&#160; </div>
<div class="line"><a name="l13489"></a><span class="lineno">13489</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> c_minus_k(cached.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a21ae81f515f5b08d5bf423775ee56074">f</a>, cached.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">e</a>); <span class="comment">// = c ~= 10^-k</span></div>
<div class="line"><a name="l13490"></a><span class="lineno">13490</span>&#160; </div>
<div class="line"><a name="l13491"></a><span class="lineno">13491</span>&#160; <span class="comment">// The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma]</span></div>
<div class="line"><a name="l13492"></a><span class="lineno">13492</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">diyfp::mul</a>(v, c_minus_k);</div>
<div class="line"><a name="l13493"></a><span class="lineno">13493</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w_minus = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">diyfp::mul</a>(m_minus, c_minus_k);</div>
<div class="line"><a name="l13494"></a><span class="lineno">13494</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w_plus = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">diyfp::mul</a>(m_plus, c_minus_k);</div>
<div class="line"><a name="l13495"></a><span class="lineno">13495</span>&#160; </div>
<div class="line"><a name="l13496"></a><span class="lineno">13496</span>&#160; <span class="comment">// ----(---+---)---------------(---+---)---------------(---+---)----</span></div>
<div class="line"><a name="l13497"></a><span class="lineno">13497</span>&#160; <span class="comment">// w- w w+</span></div>
<div class="line"><a name="l13498"></a><span class="lineno">13498</span>&#160; <span class="comment">// = c*m- = c*v = c*m+</span></div>
<div class="line"><a name="l13499"></a><span class="lineno">13499</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13500"></a><span class="lineno">13500</span>&#160; <span class="comment">// diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and</span></div>
<div class="line"><a name="l13501"></a><span class="lineno">13501</span>&#160; <span class="comment">// w+ are now off by a small amount.</span></div>
<div class="line"><a name="l13502"></a><span class="lineno">13502</span>&#160; <span class="comment">// In fact:</span></div>
<div class="line"><a name="l13503"></a><span class="lineno">13503</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13504"></a><span class="lineno">13504</span>&#160; <span class="comment">// w - v * 10^k &lt; 1 ulp</span></div>
<div class="line"><a name="l13505"></a><span class="lineno">13505</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13506"></a><span class="lineno">13506</span>&#160; <span class="comment">// To account for this inaccuracy, add resp. subtract 1 ulp.</span></div>
<div class="line"><a name="l13507"></a><span class="lineno">13507</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13508"></a><span class="lineno">13508</span>&#160; <span class="comment">// --------+---[---------------(---+---)---------------]---+--------</span></div>
<div class="line"><a name="l13509"></a><span class="lineno">13509</span>&#160; <span class="comment">// w- M- w M+ w+</span></div>
<div class="line"><a name="l13510"></a><span class="lineno">13510</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13511"></a><span class="lineno">13511</span>&#160; <span class="comment">// Now any number in [M-, M+] (bounds included) will round to w when input,</span></div>
<div class="line"><a name="l13512"></a><span class="lineno">13512</span>&#160; <span class="comment">// regardless of how the input rounding algorithm breaks ties.</span></div>
<div class="line"><a name="l13513"></a><span class="lineno">13513</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13514"></a><span class="lineno">13514</span>&#160; <span class="comment">// And digit_gen generates the shortest possible such number in [M-, M+].</span></div>
<div class="line"><a name="l13515"></a><span class="lineno">13515</span>&#160; <span class="comment">// Note that this does not mean that Grisu2 always generates the shortest</span></div>
<div class="line"><a name="l13516"></a><span class="lineno">13516</span>&#160; <span class="comment">// possible number in the interval (m-, m+).</span></div>
<div class="line"><a name="l13517"></a><span class="lineno">13517</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> M_minus(w_minus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> + 1, w_minus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a>);</div>
<div class="line"><a name="l13518"></a><span class="lineno">13518</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> M_plus (w_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> - 1, w_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> );</div>
<div class="line"><a name="l13519"></a><span class="lineno">13519</span>&#160; </div>
<div class="line"><a name="l13520"></a><span class="lineno">13520</span>&#160; decimal_exponent = -cached.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a8c1f2efed643eeaa8fae83c697a29c6a">k</a>; <span class="comment">// = -(-k) = k</span></div>
<div class="line"><a name="l13521"></a><span class="lineno">13521</span>&#160; </div>
<div class="line"><a name="l13522"></a><span class="lineno">13522</span>&#160; <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a9b899c72b0e1e3dd46d75c2b4e6bcdfb">grisu2_digit_gen</a>(buf, len, decimal_exponent, M_minus, w, M_plus);</div>
<div class="line"><a name="l13523"></a><span class="lineno">13523</span>&#160;}</div>
<div class="line"><a name="l13524"></a><span class="lineno">13524</span>&#160; </div>
<div class="line"><a name="l13530"></a><span class="lineno">13530</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> FloatType&gt;</div>
<div class="line"><a name="l13531"></a><span class="lineno">13531</span>&#160;<a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
<div class="line"><a name="l13532"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#aab7a9670a4f4704a5d0347ad7588576b">13532</a></span>&#160;<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">grisu2</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">int</span>&amp; len, <span class="keywordtype">int</span>&amp; decimal_exponent, FloatType value)</div>
<div class="line"><a name="l13533"></a><span class="lineno">13533</span>&#160;{</div>
<div class="line"><a name="l13534"></a><span class="lineno">13534</span>&#160; static_assert(<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a03682754b06ed4f30b263119eecc2d52">diyfp::kPrecision</a> &gt;= std::numeric_limits&lt;FloatType&gt;::digits + 3,</div>
<div class="line"><a name="l13535"></a><span class="lineno">13535</span>&#160; <span class="stringliteral">&quot;internal error: not enough precision&quot;</span>);</div>
<div class="line"><a name="l13536"></a><span class="lineno">13536</span>&#160; </div>
<div class="line"><a name="l13537"></a><span class="lineno">13537</span>&#160; assert(std::isfinite(value));</div>
<div class="line"><a name="l13538"></a><span class="lineno">13538</span>&#160; assert(value &gt; 0);</div>
<div class="line"><a name="l13539"></a><span class="lineno">13539</span>&#160; </div>
<div class="line"><a name="l13540"></a><span class="lineno">13540</span>&#160; <span class="comment">// If the neighbors (and boundaries) of &#39;value&#39; are always computed for double-precision</span></div>
<div class="line"><a name="l13541"></a><span class="lineno">13541</span>&#160; <span class="comment">// numbers, all float&#39;s can be recovered using strtod (and strtof). However, the resulting</span></div>
<div class="line"><a name="l13542"></a><span class="lineno">13542</span>&#160; <span class="comment">// decimal representations are not exactly &quot;short&quot;.</span></div>
<div class="line"><a name="l13543"></a><span class="lineno">13543</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13544"></a><span class="lineno">13544</span>&#160; <span class="comment">// The documentation for &#39;std::to_chars&#39; (https://en.cppreference.com/w/cpp/utility/to_chars)</span></div>
<div class="line"><a name="l13545"></a><span class="lineno">13545</span>&#160; <span class="comment">// says &quot;value is converted to a string as if by std::sprintf in the default (&quot;C&quot;) locale&quot;</span></div>
<div class="line"><a name="l13546"></a><span class="lineno">13546</span>&#160; <span class="comment">// and since sprintf promotes float&#39;s to double&#39;s, I think this is exactly what &#39;std::to_chars&#39;</span></div>
<div class="line"><a name="l13547"></a><span class="lineno">13547</span>&#160; <span class="comment">// does.</span></div>
<div class="line"><a name="l13548"></a><span class="lineno">13548</span>&#160; <span class="comment">// On the other hand, the documentation for &#39;std::to_chars&#39; requires that &quot;parsing the</span></div>
<div class="line"><a name="l13549"></a><span class="lineno">13549</span>&#160; <span class="comment">// representation using the corresponding std::from_chars function recovers value exactly&quot;. That</span></div>
<div class="line"><a name="l13550"></a><span class="lineno">13550</span>&#160; <span class="comment">// indicates that single precision floating-point numbers should be recovered using</span></div>
<div class="line"><a name="l13551"></a><span class="lineno">13551</span>&#160; <span class="comment">// &#39;std::strtof&#39;.</span></div>
<div class="line"><a name="l13552"></a><span class="lineno">13552</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l13553"></a><span class="lineno">13553</span>&#160; <span class="comment">// NB: If the neighbors are computed for single-precision numbers, there is a single float</span></div>
<div class="line"><a name="l13554"></a><span class="lineno">13554</span>&#160; <span class="comment">// (7.0385307e-26f) which can&#39;t be recovered using strtod. The resulting double precision</span></div>
<div class="line"><a name="l13555"></a><span class="lineno">13555</span>&#160; <span class="comment">// value is off by 1 ulp.</span></div>
<div class="line"><a name="l13556"></a><span class="lineno">13556</span>&#160;<span class="preprocessor">#if 0</span></div>
<div class="line"><a name="l13557"></a><span class="lineno">13557</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">boundaries</a> w = <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded">compute_boundaries</a>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(value));</div>
<div class="line"><a name="l13558"></a><span class="lineno">13558</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l13559"></a><span class="lineno">13559</span>&#160; <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">boundaries</a> w = <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded">compute_boundaries</a>(value);</div>
<div class="line"><a name="l13560"></a><span class="lineno">13560</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l13561"></a><span class="lineno">13561</span>&#160; </div>
<div class="line"><a name="l13562"></a><span class="lineno">13562</span>&#160; <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">grisu2</a>(buf, len, decimal_exponent, w.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#aec4e5028333c01f3229062f31ce16763">minus</a>, w.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#ad1668c60aeade5f2557fafed8b8aee1a">w</a>, w.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#a3321ae2816a6ec5250a0d8e29f798232">plus</a>);</div>
<div class="line"><a name="l13563"></a><span class="lineno">13563</span>&#160;}</div>
<div class="line"><a name="l13564"></a><span class="lineno">13564</span>&#160; </div>
<div class="line"><a name="l13570"></a><span class="lineno">13570</span>&#160;<a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
<div class="line"><a name="l13571"></a><span class="lineno">13571</span>&#160;<a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
<div class="line"><a name="l13572"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ad90f19ed10d8133b727df4b9bc5ddf5c">13572</a></span>&#160;inline <span class="keywordtype">char</span>* <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ad90f19ed10d8133b727df4b9bc5ddf5c">append_exponent</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">int</span> e)</div>
<div class="line"><a name="l13573"></a><span class="lineno">13573</span>&#160;{</div>
<div class="line"><a name="l13574"></a><span class="lineno">13574</span>&#160; assert(e &gt; -1000);</div>
<div class="line"><a name="l13575"></a><span class="lineno">13575</span>&#160; assert(e &lt; 1000);</div>
<div class="line"><a name="l13576"></a><span class="lineno">13576</span>&#160; </div>
<div class="line"><a name="l13577"></a><span class="lineno">13577</span>&#160; <span class="keywordflow">if</span> (e &lt; 0)</div>
<div class="line"><a name="l13578"></a><span class="lineno">13578</span>&#160; {</div>
<div class="line"><a name="l13579"></a><span class="lineno">13579</span>&#160; e = -e;</div>
<div class="line"><a name="l13580"></a><span class="lineno">13580</span>&#160; *buf++ = <span class="charliteral">&#39;-&#39;</span>;</div>
<div class="line"><a name="l13581"></a><span class="lineno">13581</span>&#160; }</div>
<div class="line"><a name="l13582"></a><span class="lineno">13582</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l13583"></a><span class="lineno">13583</span>&#160; {</div>
<div class="line"><a name="l13584"></a><span class="lineno">13584</span>&#160; *buf++ = <span class="charliteral">&#39;+&#39;</span>;</div>
<div class="line"><a name="l13585"></a><span class="lineno">13585</span>&#160; }</div>
<div class="line"><a name="l13586"></a><span class="lineno">13586</span>&#160; </div>
<div class="line"><a name="l13587"></a><span class="lineno">13587</span>&#160; <span class="keyword">auto</span> k = <span class="keyword">static_cast&lt;</span>std::uint32_t<span class="keyword">&gt;</span>(e);</div>
<div class="line"><a name="l13588"></a><span class="lineno">13588</span>&#160; <span class="keywordflow">if</span> (k &lt; 10)</div>
<div class="line"><a name="l13589"></a><span class="lineno">13589</span>&#160; {</div>
<div class="line"><a name="l13590"></a><span class="lineno">13590</span>&#160; <span class="comment">// Always print at least two digits in the exponent.</span></div>
<div class="line"><a name="l13591"></a><span class="lineno">13591</span>&#160; <span class="comment">// This is for compatibility with printf(&quot;%g&quot;).</span></div>
<div class="line"><a name="l13592"></a><span class="lineno">13592</span>&#160; *buf++ = <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a name="l13593"></a><span class="lineno">13593</span>&#160; *buf++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + k);</div>
<div class="line"><a name="l13594"></a><span class="lineno">13594</span>&#160; }</div>
<div class="line"><a name="l13595"></a><span class="lineno">13595</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (k &lt; 100)</div>
<div class="line"><a name="l13596"></a><span class="lineno">13596</span>&#160; {</div>
<div class="line"><a name="l13597"></a><span class="lineno">13597</span>&#160; *buf++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + k / 10);</div>
<div class="line"><a name="l13598"></a><span class="lineno">13598</span>&#160; k %= 10;</div>
<div class="line"><a name="l13599"></a><span class="lineno">13599</span>&#160; *buf++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + k);</div>
<div class="line"><a name="l13600"></a><span class="lineno">13600</span>&#160; }</div>
<div class="line"><a name="l13601"></a><span class="lineno">13601</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l13602"></a><span class="lineno">13602</span>&#160; {</div>
<div class="line"><a name="l13603"></a><span class="lineno">13603</span>&#160; *buf++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + k / 100);</div>
<div class="line"><a name="l13604"></a><span class="lineno">13604</span>&#160; k %= 100;</div>
<div class="line"><a name="l13605"></a><span class="lineno">13605</span>&#160; *buf++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + k / 10);</div>
<div class="line"><a name="l13606"></a><span class="lineno">13606</span>&#160; k %= 10;</div>
<div class="line"><a name="l13607"></a><span class="lineno">13607</span>&#160; *buf++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + k);</div>
<div class="line"><a name="l13608"></a><span class="lineno">13608</span>&#160; }</div>
<div class="line"><a name="l13609"></a><span class="lineno">13609</span>&#160; </div>
<div class="line"><a name="l13610"></a><span class="lineno">13610</span>&#160; <span class="keywordflow">return</span> buf;</div>
<div class="line"><a name="l13611"></a><span class="lineno">13611</span>&#160;}</div>
<div class="line"><a name="l13612"></a><span class="lineno">13612</span>&#160; </div>
<div class="line"><a name="l13622"></a><span class="lineno">13622</span>&#160;<a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
<div class="line"><a name="l13623"></a><span class="lineno">13623</span>&#160;<a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
<div class="line"><a name="l13624"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ab441f2761e33839ca48bc2225e14a2a9">13624</a></span>&#160;inline <span class="keywordtype">char</span>* <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ab441f2761e33839ca48bc2225e14a2a9">format_buffer</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> decimal_exponent,</div>
<div class="line"><a name="l13625"></a><span class="lineno">13625</span>&#160; <span class="keywordtype">int</span> min_exp, <span class="keywordtype">int</span> max_exp)</div>
<div class="line"><a name="l13626"></a><span class="lineno">13626</span>&#160;{</div>
<div class="line"><a name="l13627"></a><span class="lineno">13627</span>&#160; assert(min_exp &lt; 0);</div>
<div class="line"><a name="l13628"></a><span class="lineno">13628</span>&#160; assert(max_exp &gt; 0);</div>
<div class="line"><a name="l13629"></a><span class="lineno">13629</span>&#160; </div>
<div class="line"><a name="l13630"></a><span class="lineno">13630</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> k = len;</div>
<div class="line"><a name="l13631"></a><span class="lineno">13631</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> n = len + decimal_exponent;</div>
<div class="line"><a name="l13632"></a><span class="lineno">13632</span>&#160; </div>
<div class="line"><a name="l13633"></a><span class="lineno">13633</span>&#160; <span class="comment">// v = buf * 10^(n-k)</span></div>
<div class="line"><a name="l13634"></a><span class="lineno">13634</span>&#160; <span class="comment">// k is the length of the buffer (number of decimal digits)</span></div>
<div class="line"><a name="l13635"></a><span class="lineno">13635</span>&#160; <span class="comment">// n is the position of the decimal point relative to the start of the buffer.</span></div>
<div class="line"><a name="l13636"></a><span class="lineno">13636</span>&#160; </div>
<div class="line"><a name="l13637"></a><span class="lineno">13637</span>&#160; <span class="keywordflow">if</span> (k &lt;= n and n &lt;= max_exp)</div>
<div class="line"><a name="l13638"></a><span class="lineno">13638</span>&#160; {</div>
<div class="line"><a name="l13639"></a><span class="lineno">13639</span>&#160; <span class="comment">// digits[000]</span></div>
<div class="line"><a name="l13640"></a><span class="lineno">13640</span>&#160; <span class="comment">// len &lt;= max_exp + 2</span></div>
<div class="line"><a name="l13641"></a><span class="lineno">13641</span>&#160; </div>
<div class="line"><a name="l13642"></a><span class="lineno">13642</span>&#160; std::memset(buf + k, <span class="charliteral">&#39;0&#39;</span>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(n - k));</div>
<div class="line"><a name="l13643"></a><span class="lineno">13643</span>&#160; <span class="comment">// Make it look like a floating-point number (#362, #378)</span></div>
<div class="line"><a name="l13644"></a><span class="lineno">13644</span>&#160; buf[n + 0] = <span class="charliteral">&#39;.&#39;</span>;</div>
<div class="line"><a name="l13645"></a><span class="lineno">13645</span>&#160; buf[n + 1] = <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a name="l13646"></a><span class="lineno">13646</span>&#160; <span class="keywordflow">return</span> buf + (n + 2);</div>
<div class="line"><a name="l13647"></a><span class="lineno">13647</span>&#160; }</div>
<div class="line"><a name="l13648"></a><span class="lineno">13648</span>&#160; </div>
<div class="line"><a name="l13649"></a><span class="lineno">13649</span>&#160; <span class="keywordflow">if</span> (0 &lt; n and n &lt;= max_exp)</div>
<div class="line"><a name="l13650"></a><span class="lineno">13650</span>&#160; {</div>
<div class="line"><a name="l13651"></a><span class="lineno">13651</span>&#160; <span class="comment">// dig.its</span></div>
<div class="line"><a name="l13652"></a><span class="lineno">13652</span>&#160; <span class="comment">// len &lt;= max_digits10 + 1</span></div>
<div class="line"><a name="l13653"></a><span class="lineno">13653</span>&#160; </div>
<div class="line"><a name="l13654"></a><span class="lineno">13654</span>&#160; assert(k &gt; n);</div>
<div class="line"><a name="l13655"></a><span class="lineno">13655</span>&#160; </div>
<div class="line"><a name="l13656"></a><span class="lineno">13656</span>&#160; std::memmove(buf + (n + 1), buf + n, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(k - n));</div>
<div class="line"><a name="l13657"></a><span class="lineno">13657</span>&#160; buf[n] = <span class="charliteral">&#39;.&#39;</span>;</div>
<div class="line"><a name="l13658"></a><span class="lineno">13658</span>&#160; <span class="keywordflow">return</span> buf + (k + 1);</div>
<div class="line"><a name="l13659"></a><span class="lineno">13659</span>&#160; }</div>
<div class="line"><a name="l13660"></a><span class="lineno">13660</span>&#160; </div>
<div class="line"><a name="l13661"></a><span class="lineno">13661</span>&#160; <span class="keywordflow">if</span> (min_exp &lt; n and n &lt;= 0)</div>
<div class="line"><a name="l13662"></a><span class="lineno">13662</span>&#160; {</div>
<div class="line"><a name="l13663"></a><span class="lineno">13663</span>&#160; <span class="comment">// 0.[000]digits</span></div>
<div class="line"><a name="l13664"></a><span class="lineno">13664</span>&#160; <span class="comment">// len &lt;= 2 + (-min_exp - 1) + max_digits10</span></div>
<div class="line"><a name="l13665"></a><span class="lineno">13665</span>&#160; </div>
<div class="line"><a name="l13666"></a><span class="lineno">13666</span>&#160; std::memmove(buf + (2 + -n), buf, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(k));</div>
<div class="line"><a name="l13667"></a><span class="lineno">13667</span>&#160; buf[0] = <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a name="l13668"></a><span class="lineno">13668</span>&#160; buf[1] = <span class="charliteral">&#39;.&#39;</span>;</div>
<div class="line"><a name="l13669"></a><span class="lineno">13669</span>&#160; std::memset(buf + 2, <span class="charliteral">&#39;0&#39;</span>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(-n));</div>
<div class="line"><a name="l13670"></a><span class="lineno">13670</span>&#160; <span class="keywordflow">return</span> buf + (2 + (-n) + k);</div>
<div class="line"><a name="l13671"></a><span class="lineno">13671</span>&#160; }</div>
<div class="line"><a name="l13672"></a><span class="lineno">13672</span>&#160; </div>
<div class="line"><a name="l13673"></a><span class="lineno">13673</span>&#160; <span class="keywordflow">if</span> (k == 1)</div>
<div class="line"><a name="l13674"></a><span class="lineno">13674</span>&#160; {</div>
<div class="line"><a name="l13675"></a><span class="lineno">13675</span>&#160; <span class="comment">// dE+123</span></div>
<div class="line"><a name="l13676"></a><span class="lineno">13676</span>&#160; <span class="comment">// len &lt;= 1 + 5</span></div>
<div class="line"><a name="l13677"></a><span class="lineno">13677</span>&#160; </div>
<div class="line"><a name="l13678"></a><span class="lineno">13678</span>&#160; buf += 1;</div>
<div class="line"><a name="l13679"></a><span class="lineno">13679</span>&#160; }</div>
<div class="line"><a name="l13680"></a><span class="lineno">13680</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l13681"></a><span class="lineno">13681</span>&#160; {</div>
<div class="line"><a name="l13682"></a><span class="lineno">13682</span>&#160; <span class="comment">// d.igitsE+123</span></div>
<div class="line"><a name="l13683"></a><span class="lineno">13683</span>&#160; <span class="comment">// len &lt;= max_digits10 + 1 + 5</span></div>
<div class="line"><a name="l13684"></a><span class="lineno">13684</span>&#160; </div>
<div class="line"><a name="l13685"></a><span class="lineno">13685</span>&#160; std::memmove(buf + 2, buf + 1, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(k - 1));</div>
<div class="line"><a name="l13686"></a><span class="lineno">13686</span>&#160; buf[1] = <span class="charliteral">&#39;.&#39;</span>;</div>
<div class="line"><a name="l13687"></a><span class="lineno">13687</span>&#160; buf += 1 + k;</div>
<div class="line"><a name="l13688"></a><span class="lineno">13688</span>&#160; }</div>
<div class="line"><a name="l13689"></a><span class="lineno">13689</span>&#160; </div>
<div class="line"><a name="l13690"></a><span class="lineno">13690</span>&#160; *buf++ = <span class="charliteral">&#39;e&#39;</span>;</div>
<div class="line"><a name="l13691"></a><span class="lineno">13691</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ad90f19ed10d8133b727df4b9bc5ddf5c">append_exponent</a>(buf, n - 1);</div>
<div class="line"><a name="l13692"></a><span class="lineno">13692</span>&#160;}</div>
<div class="line"><a name="l13693"></a><span class="lineno">13693</span>&#160; </div>
<div class="line"><a name="l13694"></a><span class="lineno">13694</span>&#160;} <span class="comment">// namespace dtoa_impl</span></div>
<div class="line"><a name="l13695"></a><span class="lineno">13695</span>&#160; </div>
<div class="line"><a name="l13706"></a><span class="lineno">13706</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> FloatType&gt;</div>
<div class="line"><a name="l13707"></a><span class="lineno">13707</span>&#160;<a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1, 2)</div>
<div class="line"><a name="l13708"></a><span class="lineno">13708</span>&#160;<a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
<div class="line"><a name="l13709"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a6cca370ac6c99294dbe4fe24716a57dd">13709</a></span>&#160;<span class="keywordtype">char</span>* <a class="code" href="namespacenlohmann_1_1detail.html#a6cca370ac6c99294dbe4fe24716a57dd">to_chars</a>(<span class="keywordtype">char</span>* first, const <span class="keywordtype">char</span>* last, FloatType value)</div>
<div class="line"><a name="l13710"></a><span class="lineno">13710</span>&#160;{</div>
<div class="line"><a name="l13711"></a><span class="lineno">13711</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keywordtype">void</span><span class="keyword">&gt;</span>(last); <span class="comment">// maybe unused - fix warning</span></div>
<div class="line"><a name="l13712"></a><span class="lineno">13712</span>&#160; assert(std::isfinite(value));</div>
<div class="line"><a name="l13713"></a><span class="lineno">13713</span>&#160; </div>
<div class="line"><a name="l13714"></a><span class="lineno">13714</span>&#160; <span class="comment">// Use signbit(value) instead of (value &lt; 0) since signbit works for -0.</span></div>
<div class="line"><a name="l13715"></a><span class="lineno">13715</span>&#160; <span class="keywordflow">if</span> (std::signbit(value))</div>
<div class="line"><a name="l13716"></a><span class="lineno">13716</span>&#160; {</div>
<div class="line"><a name="l13717"></a><span class="lineno">13717</span>&#160; value = -value;</div>
<div class="line"><a name="l13718"></a><span class="lineno">13718</span>&#160; *first++ = <span class="charliteral">&#39;-&#39;</span>;</div>
<div class="line"><a name="l13719"></a><span class="lineno">13719</span>&#160; }</div>
<div class="line"><a name="l13720"></a><span class="lineno">13720</span>&#160; </div>
<div class="line"><a name="l13721"></a><span class="lineno">13721</span>&#160; <span class="keywordflow">if</span> (value == 0) <span class="comment">// +-0</span></div>
<div class="line"><a name="l13722"></a><span class="lineno">13722</span>&#160; {</div>
<div class="line"><a name="l13723"></a><span class="lineno">13723</span>&#160; *first++ = <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a name="l13724"></a><span class="lineno">13724</span>&#160; <span class="comment">// Make it look like a floating-point number (#362, #378)</span></div>
<div class="line"><a name="l13725"></a><span class="lineno">13725</span>&#160; *first++ = <span class="charliteral">&#39;.&#39;</span>;</div>
<div class="line"><a name="l13726"></a><span class="lineno">13726</span>&#160; *first++ = <span class="charliteral">&#39;0&#39;</span>;</div>
<div class="line"><a name="l13727"></a><span class="lineno">13727</span>&#160; <span class="keywordflow">return</span> first;</div>
<div class="line"><a name="l13728"></a><span class="lineno">13728</span>&#160; }</div>
<div class="line"><a name="l13729"></a><span class="lineno">13729</span>&#160; </div>
<div class="line"><a name="l13730"></a><span class="lineno">13730</span>&#160; assert(last - first &gt;= std::numeric_limits&lt;FloatType&gt;::max_digits10);</div>
<div class="line"><a name="l13731"></a><span class="lineno">13731</span>&#160; </div>
<div class="line"><a name="l13732"></a><span class="lineno">13732</span>&#160; <span class="comment">// Compute v = buffer * 10^decimal_exponent.</span></div>
<div class="line"><a name="l13733"></a><span class="lineno">13733</span>&#160; <span class="comment">// The decimal digits are stored in the buffer, which needs to be interpreted</span></div>
<div class="line"><a name="l13734"></a><span class="lineno">13734</span>&#160; <span class="comment">// as an unsigned decimal integer.</span></div>
<div class="line"><a name="l13735"></a><span class="lineno">13735</span>&#160; <span class="comment">// len is the length of the buffer, i.e. the number of decimal digits.</span></div>
<div class="line"><a name="l13736"></a><span class="lineno">13736</span>&#160; <span class="keywordtype">int</span> len = 0;</div>
<div class="line"><a name="l13737"></a><span class="lineno">13737</span>&#160; <span class="keywordtype">int</span> decimal_exponent = 0;</div>
<div class="line"><a name="l13738"></a><span class="lineno">13738</span>&#160; <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">dtoa_impl::grisu2</a>(first, len, decimal_exponent, value);</div>
<div class="line"><a name="l13739"></a><span class="lineno">13739</span>&#160; </div>
<div class="line"><a name="l13740"></a><span class="lineno">13740</span>&#160; assert(len &lt;= std::numeric_limits&lt;FloatType&gt;::max_digits10);</div>
<div class="line"><a name="l13741"></a><span class="lineno">13741</span>&#160; </div>
<div class="line"><a name="l13742"></a><span class="lineno">13742</span>&#160; <span class="comment">// Format the buffer like printf(&quot;%.*g&quot;, prec, value)</span></div>
<div class="line"><a name="l13743"></a><span class="lineno">13743</span>&#160; constexpr <span class="keywordtype">int</span> kMinExp = -4;</div>
<div class="line"><a name="l13744"></a><span class="lineno">13744</span>&#160; <span class="comment">// Use digits10 here to increase compatibility with version 2.</span></div>
<div class="line"><a name="l13745"></a><span class="lineno">13745</span>&#160; constexpr <span class="keywordtype">int</span> kMaxExp = std::numeric_limits&lt;FloatType&gt;::digits10;</div>
<div class="line"><a name="l13746"></a><span class="lineno">13746</span>&#160; </div>
<div class="line"><a name="l13747"></a><span class="lineno">13747</span>&#160; assert(last - first &gt;= kMaxExp + 2);</div>
<div class="line"><a name="l13748"></a><span class="lineno">13748</span>&#160; assert(last - first &gt;= 2 + (-kMinExp - 1) + std::numeric_limits&lt;FloatType&gt;::max_digits10);</div>
<div class="line"><a name="l13749"></a><span class="lineno">13749</span>&#160; assert(last - first &gt;= std::numeric_limits&lt;FloatType&gt;::max_digits10 + 6);</div>
<div class="line"><a name="l13750"></a><span class="lineno">13750</span>&#160; </div>
<div class="line"><a name="l13751"></a><span class="lineno">13751</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ab441f2761e33839ca48bc2225e14a2a9">dtoa_impl::format_buffer</a>(first, len, decimal_exponent, kMinExp, kMaxExp);</div>
<div class="line"><a name="l13752"></a><span class="lineno">13752</span>&#160;}</div>
<div class="line"><a name="l13753"></a><span class="lineno">13753</span>&#160; </div>
<div class="line"><a name="l13754"></a><span class="lineno">13754</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l13755"></a><span class="lineno">13755</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l13756"></a><span class="lineno">13756</span>&#160; </div>
<div class="line"><a name="l13757"></a><span class="lineno">13757</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/exceptions.hpp&gt;</span></div>
<div class="line"><a name="l13758"></a><span class="lineno">13758</span>&#160; </div>
<div class="line"><a name="l13759"></a><span class="lineno">13759</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_scope.hpp&gt;</span></div>
<div class="line"><a name="l13760"></a><span class="lineno">13760</span>&#160; </div>
<div class="line"><a name="l13761"></a><span class="lineno">13761</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/meta/cpp_future.hpp&gt;</span></div>
<div class="line"><a name="l13762"></a><span class="lineno">13762</span>&#160; </div>
<div class="line"><a name="l13763"></a><span class="lineno">13763</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/output/binary_writer.hpp&gt;</span></div>
<div class="line"><a name="l13764"></a><span class="lineno">13764</span>&#160; </div>
<div class="line"><a name="l13765"></a><span class="lineno">13765</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/output/output_adapters.hpp&gt;</span></div>
<div class="line"><a name="l13766"></a><span class="lineno">13766</span>&#160; </div>
<div class="line"><a name="l13767"></a><span class="lineno">13767</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/value_t.hpp&gt;</span></div>
<div class="line"><a name="l13768"></a><span class="lineno">13768</span>&#160; </div>
<div class="line"><a name="l13769"></a><span class="lineno">13769</span>&#160; </div>
<div class="line"><a name="l13770"></a><span class="lineno">13770</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l13771"></a><span class="lineno">13771</span>&#160;{</div>
<div class="line"><a name="l13772"></a><span class="lineno">13772</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l13773"></a><span class="lineno">13773</span>&#160;{</div>
<div class="line"><a name="l13775"></a><span class="lineno">13775</span>&#160;<span class="comment">// serialization //</span></div>
<div class="line"><a name="l13777"></a><span class="lineno">13777</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l13779"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">13779</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">error_handler_t</a></div>
<div class="line"><a name="l13780"></a><span class="lineno">13780</span>&#160;{</div>
<div class="line"><a name="l13781"></a><span class="lineno">13781</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a>, </div>
<div class="line"><a name="l13782"></a><span class="lineno">13782</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c">replace</a>, </div>
<div class="line"><a name="l13783"></a><span class="lineno">13783</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3">ignore</a> </div>
<div class="line"><a name="l13784"></a><span class="lineno">13784</span>&#160;};</div>
<div class="line"><a name="l13785"></a><span class="lineno">13785</span>&#160; </div>
<div class="line"><a name="l13786"></a><span class="lineno">13786</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l13787"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1serializer.html">13787</a></span>&#160;<span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a></div>
<div class="line"><a name="l13788"></a><span class="lineno">13788</span>&#160;{</div>
<div class="line"><a name="l13789"></a><span class="lineno">13789</span>&#160; <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l13790"></a><span class="lineno">13790</span>&#160; <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l13791"></a><span class="lineno">13791</span>&#160; <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l13792"></a><span class="lineno">13792</span>&#160; <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l13793"></a><span class="lineno">13793</span>&#160; <span class="keyword">static</span> constexpr std::uint8_t UTF8_ACCEPT = 0;</div>
<div class="line"><a name="l13794"></a><span class="lineno">13794</span>&#160; <span class="keyword">static</span> constexpr std::uint8_t UTF8_REJECT = 1;</div>
<div class="line"><a name="l13795"></a><span class="lineno">13795</span>&#160; </div>
<div class="line"><a name="l13796"></a><span class="lineno">13796</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l13802"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1serializer.html#ac010525281d97867ee842da37294fe83">13802</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#ac010525281d97867ee842da37294fe83">serializer</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t&lt;char&gt;</a> s, <span class="keyword">const</span> <span class="keywordtype">char</span> ichar,</div>
<div class="line"><a name="l13803"></a><span class="lineno">13803</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">error_handler_t</a> error_handler_ = <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">error_handler_t::strict</a>)</div>
<div class="line"><a name="l13804"></a><span class="lineno">13804</span>&#160; : o(<a class="code" href="namespacestd.html">std</a>::move(s))</div>
<div class="line"><a name="l13805"></a><span class="lineno">13805</span>&#160; , loc(<a class="code" href="namespacestd.html">std</a>::localeconv())</div>
<div class="line"><a name="l13806"></a><span class="lineno">13806</span>&#160; , thousands_sep(loc-&gt;thousands_sep == nullptr ? <span class="stringliteral">&#39;\0&#39;</span> : * (loc-&gt;thousands_sep))</div>
<div class="line"><a name="l13807"></a><span class="lineno">13807</span>&#160; , decimal_point(loc-&gt;decimal_point == nullptr ? <span class="stringliteral">&#39;\0&#39;</span> : * (loc-&gt;decimal_point))</div>
<div class="line"><a name="l13808"></a><span class="lineno">13808</span>&#160; , indent_char(ichar)</div>
<div class="line"><a name="l13809"></a><span class="lineno">13809</span>&#160; , indent_string(512, indent_char)</div>
<div class="line"><a name="l13810"></a><span class="lineno">13810</span>&#160; , error_handler(error_handler_)</div>
<div class="line"><a name="l13811"></a><span class="lineno">13811</span>&#160; {}</div>
<div class="line"><a name="l13812"></a><span class="lineno">13812</span>&#160; </div>
<div class="line"><a name="l13813"></a><span class="lineno">13813</span>&#160; <span class="comment">// delete because of pointer members</span></div>
<div class="line"><a name="l13814"></a><span class="lineno">13814</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#ac010525281d97867ee842da37294fe83">serializer</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l13815"></a><span class="lineno">13815</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a5f14c33012477b9f9876dc54d97009a0">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l13816"></a><span class="lineno">13816</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#ac010525281d97867ee842da37294fe83">serializer</a>(<a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l13817"></a><span class="lineno">13817</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>&amp; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a5f14c33012477b9f9876dc54d97009a0">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l13818"></a><span class="lineno">13818</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#aa6c62b51cbebb185307df851dc0167f0">~serializer</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l13819"></a><span class="lineno">13819</span>&#160; </div>
<div class="line"><a name="l13837"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">13837</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(<span class="keyword">const</span> BasicJsonType&amp; val, <span class="keyword">const</span> <span class="keywordtype">bool</span> pretty_print,</div>
<div class="line"><a name="l13838"></a><span class="lineno">13838</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> ensure_ascii,</div>
<div class="line"><a name="l13839"></a><span class="lineno">13839</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indent_step,</div>
<div class="line"><a name="l13840"></a><span class="lineno">13840</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_indent = 0)</div>
<div class="line"><a name="l13841"></a><span class="lineno">13841</span>&#160; {</div>
<div class="line"><a name="l13842"></a><span class="lineno">13842</span>&#160; <span class="keywordflow">switch</span> (val.m_type)</div>
<div class="line"><a name="l13843"></a><span class="lineno">13843</span>&#160; {</div>
<div class="line"><a name="l13844"></a><span class="lineno">13844</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l13845"></a><span class="lineno">13845</span>&#160; {</div>
<div class="line"><a name="l13846"></a><span class="lineno">13846</span>&#160; <span class="keywordflow">if</span> (val.m_value.object-&gt;empty())</div>
<div class="line"><a name="l13847"></a><span class="lineno">13847</span>&#160; {</div>
<div class="line"><a name="l13848"></a><span class="lineno">13848</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;{}&quot;</span>, 2);</div>
<div class="line"><a name="l13849"></a><span class="lineno">13849</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l13850"></a><span class="lineno">13850</span>&#160; }</div>
<div class="line"><a name="l13851"></a><span class="lineno">13851</span>&#160; </div>
<div class="line"><a name="l13852"></a><span class="lineno">13852</span>&#160; <span class="keywordflow">if</span> (pretty_print)</div>
<div class="line"><a name="l13853"></a><span class="lineno">13853</span>&#160; {</div>
<div class="line"><a name="l13854"></a><span class="lineno">13854</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;{\n&quot;</span>, 2);</div>
<div class="line"><a name="l13855"></a><span class="lineno">13855</span>&#160; </div>
<div class="line"><a name="l13856"></a><span class="lineno">13856</span>&#160; <span class="comment">// variable to hold indentation for recursive calls</span></div>
<div class="line"><a name="l13857"></a><span class="lineno">13857</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> new_indent = current_indent + indent_step;</div>
<div class="line"><a name="l13858"></a><span class="lineno">13858</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(indent_string.size() &lt; new_indent))</div>
<div class="line"><a name="l13859"></a><span class="lineno">13859</span>&#160; {</div>
<div class="line"><a name="l13860"></a><span class="lineno">13860</span>&#160; indent_string.resize(indent_string.size() * 2, <span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a name="l13861"></a><span class="lineno">13861</span>&#160; }</div>
<div class="line"><a name="l13862"></a><span class="lineno">13862</span>&#160; </div>
<div class="line"><a name="l13863"></a><span class="lineno">13863</span>&#160; <span class="comment">// first n-1 elements</span></div>
<div class="line"><a name="l13864"></a><span class="lineno">13864</span>&#160; <span class="keyword">auto</span> i = val.m_value.object-&gt;cbegin();</div>
<div class="line"><a name="l13865"></a><span class="lineno">13865</span>&#160; <span class="keywordflow">for</span> (std::size_t cnt = 0; cnt &lt; val.m_value.object-&gt;size() - 1; ++cnt, ++i)</div>
<div class="line"><a name="l13866"></a><span class="lineno">13866</span>&#160; {</div>
<div class="line"><a name="l13867"></a><span class="lineno">13867</span>&#160; o-&gt;write_characters(indent_string.c_str(), new_indent);</div>
<div class="line"><a name="l13868"></a><span class="lineno">13868</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;\&quot;&#39;</span>);</div>
<div class="line"><a name="l13869"></a><span class="lineno">13869</span>&#160; dump_escaped(i-&gt;first, ensure_ascii);</div>
<div class="line"><a name="l13870"></a><span class="lineno">13870</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;\&quot;: &quot;</span>, 3);</div>
<div class="line"><a name="l13871"></a><span class="lineno">13871</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(i-&gt;second, <span class="keyword">true</span>, ensure_ascii, indent_step, new_indent);</div>
<div class="line"><a name="l13872"></a><span class="lineno">13872</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;,\n&quot;</span>, 2);</div>
<div class="line"><a name="l13873"></a><span class="lineno">13873</span>&#160; }</div>
<div class="line"><a name="l13874"></a><span class="lineno">13874</span>&#160; </div>
<div class="line"><a name="l13875"></a><span class="lineno">13875</span>&#160; <span class="comment">// last element</span></div>
<div class="line"><a name="l13876"></a><span class="lineno">13876</span>&#160; assert(i != val.m_value.object-&gt;cend());</div>
<div class="line"><a name="l13877"></a><span class="lineno">13877</span>&#160; assert(std::next(i) == val.m_value.object-&gt;cend());</div>
<div class="line"><a name="l13878"></a><span class="lineno">13878</span>&#160; o-&gt;write_characters(indent_string.c_str(), new_indent);</div>
<div class="line"><a name="l13879"></a><span class="lineno">13879</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;\&quot;&#39;</span>);</div>
<div class="line"><a name="l13880"></a><span class="lineno">13880</span>&#160; dump_escaped(i-&gt;first, ensure_ascii);</div>
<div class="line"><a name="l13881"></a><span class="lineno">13881</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;\&quot;: &quot;</span>, 3);</div>
<div class="line"><a name="l13882"></a><span class="lineno">13882</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(i-&gt;second, <span class="keyword">true</span>, ensure_ascii, indent_step, new_indent);</div>
<div class="line"><a name="l13883"></a><span class="lineno">13883</span>&#160; </div>
<div class="line"><a name="l13884"></a><span class="lineno">13884</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;\n&#39;</span>);</div>
<div class="line"><a name="l13885"></a><span class="lineno">13885</span>&#160; o-&gt;write_characters(indent_string.c_str(), current_indent);</div>
<div class="line"><a name="l13886"></a><span class="lineno">13886</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;}&#39;</span>);</div>
<div class="line"><a name="l13887"></a><span class="lineno">13887</span>&#160; }</div>
<div class="line"><a name="l13888"></a><span class="lineno">13888</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l13889"></a><span class="lineno">13889</span>&#160; {</div>
<div class="line"><a name="l13890"></a><span class="lineno">13890</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;{&#39;</span>);</div>
<div class="line"><a name="l13891"></a><span class="lineno">13891</span>&#160; </div>
<div class="line"><a name="l13892"></a><span class="lineno">13892</span>&#160; <span class="comment">// first n-1 elements</span></div>
<div class="line"><a name="l13893"></a><span class="lineno">13893</span>&#160; <span class="keyword">auto</span> i = val.m_value.object-&gt;cbegin();</div>
<div class="line"><a name="l13894"></a><span class="lineno">13894</span>&#160; <span class="keywordflow">for</span> (std::size_t cnt = 0; cnt &lt; val.m_value.object-&gt;size() - 1; ++cnt, ++i)</div>
<div class="line"><a name="l13895"></a><span class="lineno">13895</span>&#160; {</div>
<div class="line"><a name="l13896"></a><span class="lineno">13896</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;\&quot;&#39;</span>);</div>
<div class="line"><a name="l13897"></a><span class="lineno">13897</span>&#160; dump_escaped(i-&gt;first, ensure_ascii);</div>
<div class="line"><a name="l13898"></a><span class="lineno">13898</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;\&quot;:&quot;</span>, 2);</div>
<div class="line"><a name="l13899"></a><span class="lineno">13899</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(i-&gt;second, <span class="keyword">false</span>, ensure_ascii, indent_step, current_indent);</div>
<div class="line"><a name="l13900"></a><span class="lineno">13900</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;,&#39;</span>);</div>
<div class="line"><a name="l13901"></a><span class="lineno">13901</span>&#160; }</div>
<div class="line"><a name="l13902"></a><span class="lineno">13902</span>&#160; </div>
<div class="line"><a name="l13903"></a><span class="lineno">13903</span>&#160; <span class="comment">// last element</span></div>
<div class="line"><a name="l13904"></a><span class="lineno">13904</span>&#160; assert(i != val.m_value.object-&gt;cend());</div>
<div class="line"><a name="l13905"></a><span class="lineno">13905</span>&#160; assert(std::next(i) == val.m_value.object-&gt;cend());</div>
<div class="line"><a name="l13906"></a><span class="lineno">13906</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;\&quot;&#39;</span>);</div>
<div class="line"><a name="l13907"></a><span class="lineno">13907</span>&#160; dump_escaped(i-&gt;first, ensure_ascii);</div>
<div class="line"><a name="l13908"></a><span class="lineno">13908</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;\&quot;:&quot;</span>, 2);</div>
<div class="line"><a name="l13909"></a><span class="lineno">13909</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(i-&gt;second, <span class="keyword">false</span>, ensure_ascii, indent_step, current_indent);</div>
<div class="line"><a name="l13910"></a><span class="lineno">13910</span>&#160; </div>
<div class="line"><a name="l13911"></a><span class="lineno">13911</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;}&#39;</span>);</div>
<div class="line"><a name="l13912"></a><span class="lineno">13912</span>&#160; }</div>
<div class="line"><a name="l13913"></a><span class="lineno">13913</span>&#160; </div>
<div class="line"><a name="l13914"></a><span class="lineno">13914</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l13915"></a><span class="lineno">13915</span>&#160; }</div>
<div class="line"><a name="l13916"></a><span class="lineno">13916</span>&#160; </div>
<div class="line"><a name="l13917"></a><span class="lineno">13917</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l13918"></a><span class="lineno">13918</span>&#160; {</div>
<div class="line"><a name="l13919"></a><span class="lineno">13919</span>&#160; <span class="keywordflow">if</span> (val.m_value.array-&gt;empty())</div>
<div class="line"><a name="l13920"></a><span class="lineno">13920</span>&#160; {</div>
<div class="line"><a name="l13921"></a><span class="lineno">13921</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;[]&quot;</span>, 2);</div>
<div class="line"><a name="l13922"></a><span class="lineno">13922</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l13923"></a><span class="lineno">13923</span>&#160; }</div>
<div class="line"><a name="l13924"></a><span class="lineno">13924</span>&#160; </div>
<div class="line"><a name="l13925"></a><span class="lineno">13925</span>&#160; <span class="keywordflow">if</span> (pretty_print)</div>
<div class="line"><a name="l13926"></a><span class="lineno">13926</span>&#160; {</div>
<div class="line"><a name="l13927"></a><span class="lineno">13927</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;[\n&quot;</span>, 2);</div>
<div class="line"><a name="l13928"></a><span class="lineno">13928</span>&#160; </div>
<div class="line"><a name="l13929"></a><span class="lineno">13929</span>&#160; <span class="comment">// variable to hold indentation for recursive calls</span></div>
<div class="line"><a name="l13930"></a><span class="lineno">13930</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> new_indent = current_indent + indent_step;</div>
<div class="line"><a name="l13931"></a><span class="lineno">13931</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(indent_string.size() &lt; new_indent))</div>
<div class="line"><a name="l13932"></a><span class="lineno">13932</span>&#160; {</div>
<div class="line"><a name="l13933"></a><span class="lineno">13933</span>&#160; indent_string.resize(indent_string.size() * 2, <span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a name="l13934"></a><span class="lineno">13934</span>&#160; }</div>
<div class="line"><a name="l13935"></a><span class="lineno">13935</span>&#160; </div>
<div class="line"><a name="l13936"></a><span class="lineno">13936</span>&#160; <span class="comment">// first n-1 elements</span></div>
<div class="line"><a name="l13937"></a><span class="lineno">13937</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = val.m_value.array-&gt;cbegin();</div>
<div class="line"><a name="l13938"></a><span class="lineno">13938</span>&#160; i != val.m_value.array-&gt;cend() - 1; ++i)</div>
<div class="line"><a name="l13939"></a><span class="lineno">13939</span>&#160; {</div>
<div class="line"><a name="l13940"></a><span class="lineno">13940</span>&#160; o-&gt;write_characters(indent_string.c_str(), new_indent);</div>
<div class="line"><a name="l13941"></a><span class="lineno">13941</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(*i, <span class="keyword">true</span>, ensure_ascii, indent_step, new_indent);</div>
<div class="line"><a name="l13942"></a><span class="lineno">13942</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;,\n&quot;</span>, 2);</div>
<div class="line"><a name="l13943"></a><span class="lineno">13943</span>&#160; }</div>
<div class="line"><a name="l13944"></a><span class="lineno">13944</span>&#160; </div>
<div class="line"><a name="l13945"></a><span class="lineno">13945</span>&#160; <span class="comment">// last element</span></div>
<div class="line"><a name="l13946"></a><span class="lineno">13946</span>&#160; assert(not val.m_value.array-&gt;empty());</div>
<div class="line"><a name="l13947"></a><span class="lineno">13947</span>&#160; o-&gt;write_characters(indent_string.c_str(), new_indent);</div>
<div class="line"><a name="l13948"></a><span class="lineno">13948</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(val.m_value.array-&gt;back(), <span class="keyword">true</span>, ensure_ascii, indent_step, new_indent);</div>
<div class="line"><a name="l13949"></a><span class="lineno">13949</span>&#160; </div>
<div class="line"><a name="l13950"></a><span class="lineno">13950</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;\n&#39;</span>);</div>
<div class="line"><a name="l13951"></a><span class="lineno">13951</span>&#160; o-&gt;write_characters(indent_string.c_str(), current_indent);</div>
<div class="line"><a name="l13952"></a><span class="lineno">13952</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;]&#39;</span>);</div>
<div class="line"><a name="l13953"></a><span class="lineno">13953</span>&#160; }</div>
<div class="line"><a name="l13954"></a><span class="lineno">13954</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l13955"></a><span class="lineno">13955</span>&#160; {</div>
<div class="line"><a name="l13956"></a><span class="lineno">13956</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;[&#39;</span>);</div>
<div class="line"><a name="l13957"></a><span class="lineno">13957</span>&#160; </div>
<div class="line"><a name="l13958"></a><span class="lineno">13958</span>&#160; <span class="comment">// first n-1 elements</span></div>
<div class="line"><a name="l13959"></a><span class="lineno">13959</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = val.m_value.array-&gt;cbegin();</div>
<div class="line"><a name="l13960"></a><span class="lineno">13960</span>&#160; i != val.m_value.array-&gt;cend() - 1; ++i)</div>
<div class="line"><a name="l13961"></a><span class="lineno">13961</span>&#160; {</div>
<div class="line"><a name="l13962"></a><span class="lineno">13962</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(*i, <span class="keyword">false</span>, ensure_ascii, indent_step, current_indent);</div>
<div class="line"><a name="l13963"></a><span class="lineno">13963</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;,&#39;</span>);</div>
<div class="line"><a name="l13964"></a><span class="lineno">13964</span>&#160; }</div>
<div class="line"><a name="l13965"></a><span class="lineno">13965</span>&#160; </div>
<div class="line"><a name="l13966"></a><span class="lineno">13966</span>&#160; <span class="comment">// last element</span></div>
<div class="line"><a name="l13967"></a><span class="lineno">13967</span>&#160; assert(not val.m_value.array-&gt;empty());</div>
<div class="line"><a name="l13968"></a><span class="lineno">13968</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(val.m_value.array-&gt;back(), <span class="keyword">false</span>, ensure_ascii, indent_step, current_indent);</div>
<div class="line"><a name="l13969"></a><span class="lineno">13969</span>&#160; </div>
<div class="line"><a name="l13970"></a><span class="lineno">13970</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;]&#39;</span>);</div>
<div class="line"><a name="l13971"></a><span class="lineno">13971</span>&#160; }</div>
<div class="line"><a name="l13972"></a><span class="lineno">13972</span>&#160; </div>
<div class="line"><a name="l13973"></a><span class="lineno">13973</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l13974"></a><span class="lineno">13974</span>&#160; }</div>
<div class="line"><a name="l13975"></a><span class="lineno">13975</span>&#160; </div>
<div class="line"><a name="l13976"></a><span class="lineno">13976</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l13977"></a><span class="lineno">13977</span>&#160; {</div>
<div class="line"><a name="l13978"></a><span class="lineno">13978</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;\&quot;&#39;</span>);</div>
<div class="line"><a name="l13979"></a><span class="lineno">13979</span>&#160; dump_escaped(*val.m_value.string, ensure_ascii);</div>
<div class="line"><a name="l13980"></a><span class="lineno">13980</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;\&quot;&#39;</span>);</div>
<div class="line"><a name="l13981"></a><span class="lineno">13981</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l13982"></a><span class="lineno">13982</span>&#160; }</div>
<div class="line"><a name="l13983"></a><span class="lineno">13983</span>&#160; </div>
<div class="line"><a name="l13984"></a><span class="lineno">13984</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l13985"></a><span class="lineno">13985</span>&#160; {</div>
<div class="line"><a name="l13986"></a><span class="lineno">13986</span>&#160; <span class="keywordflow">if</span> (val.m_value.boolean)</div>
<div class="line"><a name="l13987"></a><span class="lineno">13987</span>&#160; {</div>
<div class="line"><a name="l13988"></a><span class="lineno">13988</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;true&quot;</span>, 4);</div>
<div class="line"><a name="l13989"></a><span class="lineno">13989</span>&#160; }</div>
<div class="line"><a name="l13990"></a><span class="lineno">13990</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l13991"></a><span class="lineno">13991</span>&#160; {</div>
<div class="line"><a name="l13992"></a><span class="lineno">13992</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;false&quot;</span>, 5);</div>
<div class="line"><a name="l13993"></a><span class="lineno">13993</span>&#160; }</div>
<div class="line"><a name="l13994"></a><span class="lineno">13994</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l13995"></a><span class="lineno">13995</span>&#160; }</div>
<div class="line"><a name="l13996"></a><span class="lineno">13996</span>&#160; </div>
<div class="line"><a name="l13997"></a><span class="lineno">13997</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l13998"></a><span class="lineno">13998</span>&#160; {</div>
<div class="line"><a name="l13999"></a><span class="lineno">13999</span>&#160; dump_integer(val.m_value.number_integer);</div>
<div class="line"><a name="l14000"></a><span class="lineno">14000</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l14001"></a><span class="lineno">14001</span>&#160; }</div>
<div class="line"><a name="l14002"></a><span class="lineno">14002</span>&#160; </div>
<div class="line"><a name="l14003"></a><span class="lineno">14003</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l14004"></a><span class="lineno">14004</span>&#160; {</div>
<div class="line"><a name="l14005"></a><span class="lineno">14005</span>&#160; dump_integer(val.m_value.number_unsigned);</div>
<div class="line"><a name="l14006"></a><span class="lineno">14006</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l14007"></a><span class="lineno">14007</span>&#160; }</div>
<div class="line"><a name="l14008"></a><span class="lineno">14008</span>&#160; </div>
<div class="line"><a name="l14009"></a><span class="lineno">14009</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l14010"></a><span class="lineno">14010</span>&#160; {</div>
<div class="line"><a name="l14011"></a><span class="lineno">14011</span>&#160; dump_float(val.m_value.number_float);</div>
<div class="line"><a name="l14012"></a><span class="lineno">14012</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l14013"></a><span class="lineno">14013</span>&#160; }</div>
<div class="line"><a name="l14014"></a><span class="lineno">14014</span>&#160; </div>
<div class="line"><a name="l14015"></a><span class="lineno">14015</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>:</div>
<div class="line"><a name="l14016"></a><span class="lineno">14016</span>&#160; {</div>
<div class="line"><a name="l14017"></a><span class="lineno">14017</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;&lt;discarded&gt;&quot;</span>, 11);</div>
<div class="line"><a name="l14018"></a><span class="lineno">14018</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l14019"></a><span class="lineno">14019</span>&#160; }</div>
<div class="line"><a name="l14020"></a><span class="lineno">14020</span>&#160; </div>
<div class="line"><a name="l14021"></a><span class="lineno">14021</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l14022"></a><span class="lineno">14022</span>&#160; {</div>
<div class="line"><a name="l14023"></a><span class="lineno">14023</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;null&quot;</span>, 4);</div>
<div class="line"><a name="l14024"></a><span class="lineno">14024</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l14025"></a><span class="lineno">14025</span>&#160; }</div>
<div class="line"><a name="l14026"></a><span class="lineno">14026</span>&#160; </div>
<div class="line"><a name="l14027"></a><span class="lineno">14027</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l14028"></a><span class="lineno">14028</span>&#160; assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l14029"></a><span class="lineno">14029</span>&#160; }</div>
<div class="line"><a name="l14030"></a><span class="lineno">14030</span>&#160; }</div>
<div class="line"><a name="l14031"></a><span class="lineno">14031</span>&#160; </div>
<div class="line"><a name="l14032"></a><span class="lineno">14032</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l14047"></a><span class="lineno">14047</span>&#160; <span class="keywordtype">void</span> dump_escaped(<span class="keyword">const</span> string_t&amp; s, <span class="keyword">const</span> <span class="keywordtype">bool</span> ensure_ascii)</div>
<div class="line"><a name="l14048"></a><span class="lineno">14048</span>&#160; {</div>
<div class="line"><a name="l14049"></a><span class="lineno">14049</span>&#160; std::uint32_t codepoint;</div>
<div class="line"><a name="l14050"></a><span class="lineno">14050</span>&#160; std::uint8_t state = UTF8_ACCEPT;</div>
<div class="line"><a name="l14051"></a><span class="lineno">14051</span>&#160; std::size_t bytes = 0; <span class="comment">// number of bytes written to string_buffer</span></div>
<div class="line"><a name="l14052"></a><span class="lineno">14052</span>&#160; </div>
<div class="line"><a name="l14053"></a><span class="lineno">14053</span>&#160; <span class="comment">// number of bytes written at the point of the last valid byte</span></div>
<div class="line"><a name="l14054"></a><span class="lineno">14054</span>&#160; std::size_t bytes_after_last_accept = 0;</div>
<div class="line"><a name="l14055"></a><span class="lineno">14055</span>&#160; std::size_t undumped_chars = 0;</div>
<div class="line"><a name="l14056"></a><span class="lineno">14056</span>&#160; </div>
<div class="line"><a name="l14057"></a><span class="lineno">14057</span>&#160; <span class="keywordflow">for</span> (std::size_t i = 0; i &lt; s.size(); ++i)</div>
<div class="line"><a name="l14058"></a><span class="lineno">14058</span>&#160; {</div>
<div class="line"><a name="l14059"></a><span class="lineno">14059</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> <span class="keywordtype">byte</span> = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(s[i]);</div>
<div class="line"><a name="l14060"></a><span class="lineno">14060</span>&#160; </div>
<div class="line"><a name="l14061"></a><span class="lineno">14061</span>&#160; <span class="keywordflow">switch</span> (decode(state, codepoint, <span class="keywordtype">byte</span>))</div>
<div class="line"><a name="l14062"></a><span class="lineno">14062</span>&#160; {</div>
<div class="line"><a name="l14063"></a><span class="lineno">14063</span>&#160; <span class="keywordflow">case</span> UTF8_ACCEPT: <span class="comment">// decode found a new code point</span></div>
<div class="line"><a name="l14064"></a><span class="lineno">14064</span>&#160; {</div>
<div class="line"><a name="l14065"></a><span class="lineno">14065</span>&#160; <span class="keywordflow">switch</span> (codepoint)</div>
<div class="line"><a name="l14066"></a><span class="lineno">14066</span>&#160; {</div>
<div class="line"><a name="l14067"></a><span class="lineno">14067</span>&#160; <span class="keywordflow">case</span> 0x08: <span class="comment">// backspace</span></div>
<div class="line"><a name="l14068"></a><span class="lineno">14068</span>&#160; {</div>
<div class="line"><a name="l14069"></a><span class="lineno">14069</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;\\&#39;</span>;</div>
<div class="line"><a name="l14070"></a><span class="lineno">14070</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;b&#39;</span>;</div>
<div class="line"><a name="l14071"></a><span class="lineno">14071</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14072"></a><span class="lineno">14072</span>&#160; }</div>
<div class="line"><a name="l14073"></a><span class="lineno">14073</span>&#160; </div>
<div class="line"><a name="l14074"></a><span class="lineno">14074</span>&#160; <span class="keywordflow">case</span> 0x09: <span class="comment">// horizontal tab</span></div>
<div class="line"><a name="l14075"></a><span class="lineno">14075</span>&#160; {</div>
<div class="line"><a name="l14076"></a><span class="lineno">14076</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;\\&#39;</span>;</div>
<div class="line"><a name="l14077"></a><span class="lineno">14077</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;t&#39;</span>;</div>
<div class="line"><a name="l14078"></a><span class="lineno">14078</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14079"></a><span class="lineno">14079</span>&#160; }</div>
<div class="line"><a name="l14080"></a><span class="lineno">14080</span>&#160; </div>
<div class="line"><a name="l14081"></a><span class="lineno">14081</span>&#160; <span class="keywordflow">case</span> 0x0A: <span class="comment">// newline</span></div>
<div class="line"><a name="l14082"></a><span class="lineno">14082</span>&#160; {</div>
<div class="line"><a name="l14083"></a><span class="lineno">14083</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;\\&#39;</span>;</div>
<div class="line"><a name="l14084"></a><span class="lineno">14084</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;n&#39;</span>;</div>
<div class="line"><a name="l14085"></a><span class="lineno">14085</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14086"></a><span class="lineno">14086</span>&#160; }</div>
<div class="line"><a name="l14087"></a><span class="lineno">14087</span>&#160; </div>
<div class="line"><a name="l14088"></a><span class="lineno">14088</span>&#160; <span class="keywordflow">case</span> 0x0C: <span class="comment">// formfeed</span></div>
<div class="line"><a name="l14089"></a><span class="lineno">14089</span>&#160; {</div>
<div class="line"><a name="l14090"></a><span class="lineno">14090</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;\\&#39;</span>;</div>
<div class="line"><a name="l14091"></a><span class="lineno">14091</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;f&#39;</span>;</div>
<div class="line"><a name="l14092"></a><span class="lineno">14092</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14093"></a><span class="lineno">14093</span>&#160; }</div>
<div class="line"><a name="l14094"></a><span class="lineno">14094</span>&#160; </div>
<div class="line"><a name="l14095"></a><span class="lineno">14095</span>&#160; <span class="keywordflow">case</span> 0x0D: <span class="comment">// carriage return</span></div>
<div class="line"><a name="l14096"></a><span class="lineno">14096</span>&#160; {</div>
<div class="line"><a name="l14097"></a><span class="lineno">14097</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;\\&#39;</span>;</div>
<div class="line"><a name="l14098"></a><span class="lineno">14098</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;r&#39;</span>;</div>
<div class="line"><a name="l14099"></a><span class="lineno">14099</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14100"></a><span class="lineno">14100</span>&#160; }</div>
<div class="line"><a name="l14101"></a><span class="lineno">14101</span>&#160; </div>
<div class="line"><a name="l14102"></a><span class="lineno">14102</span>&#160; <span class="keywordflow">case</span> 0x22: <span class="comment">// quotation mark</span></div>
<div class="line"><a name="l14103"></a><span class="lineno">14103</span>&#160; {</div>
<div class="line"><a name="l14104"></a><span class="lineno">14104</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;\\&#39;</span>;</div>
<div class="line"><a name="l14105"></a><span class="lineno">14105</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;\&quot;&#39;</span>;</div>
<div class="line"><a name="l14106"></a><span class="lineno">14106</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14107"></a><span class="lineno">14107</span>&#160; }</div>
<div class="line"><a name="l14108"></a><span class="lineno">14108</span>&#160; </div>
<div class="line"><a name="l14109"></a><span class="lineno">14109</span>&#160; <span class="keywordflow">case</span> 0x5C: <span class="comment">// reverse solidus</span></div>
<div class="line"><a name="l14110"></a><span class="lineno">14110</span>&#160; {</div>
<div class="line"><a name="l14111"></a><span class="lineno">14111</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;\\&#39;</span>;</div>
<div class="line"><a name="l14112"></a><span class="lineno">14112</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;\\&#39;</span>;</div>
<div class="line"><a name="l14113"></a><span class="lineno">14113</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14114"></a><span class="lineno">14114</span>&#160; }</div>
<div class="line"><a name="l14115"></a><span class="lineno">14115</span>&#160; </div>
<div class="line"><a name="l14116"></a><span class="lineno">14116</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l14117"></a><span class="lineno">14117</span>&#160; {</div>
<div class="line"><a name="l14118"></a><span class="lineno">14118</span>&#160; <span class="comment">// escape control characters (0x00..0x1F) or, if</span></div>
<div class="line"><a name="l14119"></a><span class="lineno">14119</span>&#160; <span class="comment">// ensure_ascii parameter is used, non-ASCII characters</span></div>
<div class="line"><a name="l14120"></a><span class="lineno">14120</span>&#160; <span class="keywordflow">if</span> ((codepoint &lt;= 0x1F) or (ensure_ascii and (codepoint &gt;= 0x7F)))</div>
<div class="line"><a name="l14121"></a><span class="lineno">14121</span>&#160; {</div>
<div class="line"><a name="l14122"></a><span class="lineno">14122</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0xFFFF)</div>
<div class="line"><a name="l14123"></a><span class="lineno">14123</span>&#160; {</div>
<div class="line"><a name="l14124"></a><span class="lineno">14124</span>&#160; (std::snprintf)(string_buffer.data() + bytes, 7, <span class="stringliteral">&quot;\\u%04x&quot;</span>,</div>
<div class="line"><a name="l14125"></a><span class="lineno">14125</span>&#160; <span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(codepoint));</div>
<div class="line"><a name="l14126"></a><span class="lineno">14126</span>&#160; bytes += 6;</div>
<div class="line"><a name="l14127"></a><span class="lineno">14127</span>&#160; }</div>
<div class="line"><a name="l14128"></a><span class="lineno">14128</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l14129"></a><span class="lineno">14129</span>&#160; {</div>
<div class="line"><a name="l14130"></a><span class="lineno">14130</span>&#160; (std::snprintf)(string_buffer.data() + bytes, 13, <span class="stringliteral">&quot;\\u%04x\\u%04x&quot;</span>,</div>
<div class="line"><a name="l14131"></a><span class="lineno">14131</span>&#160; <span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(0xD7C0u + (codepoint &gt;&gt; 10u)),</div>
<div class="line"><a name="l14132"></a><span class="lineno">14132</span>&#160; <span class="keyword">static_cast&lt;</span>std::uint16_t<span class="keyword">&gt;</span>(0xDC00u + (codepoint &amp; 0x3FFu)));</div>
<div class="line"><a name="l14133"></a><span class="lineno">14133</span>&#160; bytes += 12;</div>
<div class="line"><a name="l14134"></a><span class="lineno">14134</span>&#160; }</div>
<div class="line"><a name="l14135"></a><span class="lineno">14135</span>&#160; }</div>
<div class="line"><a name="l14136"></a><span class="lineno">14136</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l14137"></a><span class="lineno">14137</span>&#160; {</div>
<div class="line"><a name="l14138"></a><span class="lineno">14138</span>&#160; <span class="comment">// copy byte to buffer (all previous bytes</span></div>
<div class="line"><a name="l14139"></a><span class="lineno">14139</span>&#160; <span class="comment">// been copied have in default case above)</span></div>
<div class="line"><a name="l14140"></a><span class="lineno">14140</span>&#160; string_buffer[bytes++] = s[i];</div>
<div class="line"><a name="l14141"></a><span class="lineno">14141</span>&#160; }</div>
<div class="line"><a name="l14142"></a><span class="lineno">14142</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14143"></a><span class="lineno">14143</span>&#160; }</div>
<div class="line"><a name="l14144"></a><span class="lineno">14144</span>&#160; }</div>
<div class="line"><a name="l14145"></a><span class="lineno">14145</span>&#160; </div>
<div class="line"><a name="l14146"></a><span class="lineno">14146</span>&#160; <span class="comment">// write buffer and reset index; there must be 13 bytes</span></div>
<div class="line"><a name="l14147"></a><span class="lineno">14147</span>&#160; <span class="comment">// left, as this is the maximal number of bytes to be</span></div>
<div class="line"><a name="l14148"></a><span class="lineno">14148</span>&#160; <span class="comment">// written (&quot;\uxxxx\uxxxx\0&quot;) for one code point</span></div>
<div class="line"><a name="l14149"></a><span class="lineno">14149</span>&#160; <span class="keywordflow">if</span> (string_buffer.size() - bytes &lt; 13)</div>
<div class="line"><a name="l14150"></a><span class="lineno">14150</span>&#160; {</div>
<div class="line"><a name="l14151"></a><span class="lineno">14151</span>&#160; o-&gt;write_characters(string_buffer.data(), bytes);</div>
<div class="line"><a name="l14152"></a><span class="lineno">14152</span>&#160; bytes = 0;</div>
<div class="line"><a name="l14153"></a><span class="lineno">14153</span>&#160; }</div>
<div class="line"><a name="l14154"></a><span class="lineno">14154</span>&#160; </div>
<div class="line"><a name="l14155"></a><span class="lineno">14155</span>&#160; <span class="comment">// remember the byte position of this accept</span></div>
<div class="line"><a name="l14156"></a><span class="lineno">14156</span>&#160; bytes_after_last_accept = bytes;</div>
<div class="line"><a name="l14157"></a><span class="lineno">14157</span>&#160; undumped_chars = 0;</div>
<div class="line"><a name="l14158"></a><span class="lineno">14158</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14159"></a><span class="lineno">14159</span>&#160; }</div>
<div class="line"><a name="l14160"></a><span class="lineno">14160</span>&#160; </div>
<div class="line"><a name="l14161"></a><span class="lineno">14161</span>&#160; <span class="keywordflow">case</span> UTF8_REJECT: <span class="comment">// decode found invalid UTF-8 byte</span></div>
<div class="line"><a name="l14162"></a><span class="lineno">14162</span>&#160; {</div>
<div class="line"><a name="l14163"></a><span class="lineno">14163</span>&#160; <span class="keywordflow">switch</span> (error_handler)</div>
<div class="line"><a name="l14164"></a><span class="lineno">14164</span>&#160; {</div>
<div class="line"><a name="l14165"></a><span class="lineno">14165</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">error_handler_t::strict</a>:</div>
<div class="line"><a name="l14166"></a><span class="lineno">14166</span>&#160; {</div>
<div class="line"><a name="l14167"></a><span class="lineno">14167</span>&#160; std::string sn(3, <span class="charliteral">&#39;\0&#39;</span>);</div>
<div class="line"><a name="l14168"></a><span class="lineno">14168</span>&#160; (std::snprintf)(&amp;sn[0], sn.size(), <span class="stringliteral">&quot;%.2X&quot;</span>, byte);</div>
<div class="line"><a name="l14169"></a><span class="lineno">14169</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(316, <span class="stringliteral">&quot;invalid UTF-8 byte at index &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(i) + <span class="stringliteral">&quot;: 0x&quot;</span> + sn));</div>
<div class="line"><a name="l14170"></a><span class="lineno">14170</span>&#160; }</div>
<div class="line"><a name="l14171"></a><span class="lineno">14171</span>&#160; </div>
<div class="line"><a name="l14172"></a><span class="lineno">14172</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3">error_handler_t::ignore</a>:</div>
<div class="line"><a name="l14173"></a><span class="lineno">14173</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c">error_handler_t::replace</a>:</div>
<div class="line"><a name="l14174"></a><span class="lineno">14174</span>&#160; {</div>
<div class="line"><a name="l14175"></a><span class="lineno">14175</span>&#160; <span class="comment">// in case we saw this character the first time, we</span></div>
<div class="line"><a name="l14176"></a><span class="lineno">14176</span>&#160; <span class="comment">// would like to read it again, because the byte</span></div>
<div class="line"><a name="l14177"></a><span class="lineno">14177</span>&#160; <span class="comment">// may be OK for itself, but just not OK for the</span></div>
<div class="line"><a name="l14178"></a><span class="lineno">14178</span>&#160; <span class="comment">// previous sequence</span></div>
<div class="line"><a name="l14179"></a><span class="lineno">14179</span>&#160; <span class="keywordflow">if</span> (undumped_chars &gt; 0)</div>
<div class="line"><a name="l14180"></a><span class="lineno">14180</span>&#160; {</div>
<div class="line"><a name="l14181"></a><span class="lineno">14181</span>&#160; --i;</div>
<div class="line"><a name="l14182"></a><span class="lineno">14182</span>&#160; }</div>
<div class="line"><a name="l14183"></a><span class="lineno">14183</span>&#160; </div>
<div class="line"><a name="l14184"></a><span class="lineno">14184</span>&#160; <span class="comment">// reset length buffer to the last accepted index;</span></div>
<div class="line"><a name="l14185"></a><span class="lineno">14185</span>&#160; <span class="comment">// thus removing/ignoring the invalid characters</span></div>
<div class="line"><a name="l14186"></a><span class="lineno">14186</span>&#160; bytes = bytes_after_last_accept;</div>
<div class="line"><a name="l14187"></a><span class="lineno">14187</span>&#160; </div>
<div class="line"><a name="l14188"></a><span class="lineno">14188</span>&#160; <span class="keywordflow">if</span> (error_handler == <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c">error_handler_t::replace</a>)</div>
<div class="line"><a name="l14189"></a><span class="lineno">14189</span>&#160; {</div>
<div class="line"><a name="l14190"></a><span class="lineno">14190</span>&#160; <span class="comment">// add a replacement character</span></div>
<div class="line"><a name="l14191"></a><span class="lineno">14191</span>&#160; <span class="keywordflow">if</span> (ensure_ascii)</div>
<div class="line"><a name="l14192"></a><span class="lineno">14192</span>&#160; {</div>
<div class="line"><a name="l14193"></a><span class="lineno">14193</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;\\&#39;</span>;</div>
<div class="line"><a name="l14194"></a><span class="lineno">14194</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;u&#39;</span>;</div>
<div class="line"><a name="l14195"></a><span class="lineno">14195</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;f&#39;</span>;</div>
<div class="line"><a name="l14196"></a><span class="lineno">14196</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;f&#39;</span>;</div>
<div class="line"><a name="l14197"></a><span class="lineno">14197</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;f&#39;</span>;</div>
<div class="line"><a name="l14198"></a><span class="lineno">14198</span>&#160; string_buffer[bytes++] = <span class="charliteral">&#39;d&#39;</span>;</div>
<div class="line"><a name="l14199"></a><span class="lineno">14199</span>&#160; }</div>
<div class="line"><a name="l14200"></a><span class="lineno">14200</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l14201"></a><span class="lineno">14201</span>&#160; {</div>
<div class="line"><a name="l14202"></a><span class="lineno">14202</span>&#160; string_buffer[bytes++] = <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">detail::binary_writer&lt;BasicJsonType, char&gt;::to_char_type</a>(<span class="stringliteral">&#39;\xEF&#39;</span>);</div>
<div class="line"><a name="l14203"></a><span class="lineno">14203</span>&#160; string_buffer[bytes++] = <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">detail::binary_writer&lt;BasicJsonType, char&gt;::to_char_type</a>(<span class="stringliteral">&#39;\xBF&#39;</span>);</div>
<div class="line"><a name="l14204"></a><span class="lineno">14204</span>&#160; string_buffer[bytes++] = <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">detail::binary_writer&lt;BasicJsonType, char&gt;::to_char_type</a>(<span class="stringliteral">&#39;\xBD&#39;</span>);</div>
<div class="line"><a name="l14205"></a><span class="lineno">14205</span>&#160; }</div>
<div class="line"><a name="l14206"></a><span class="lineno">14206</span>&#160; </div>
<div class="line"><a name="l14207"></a><span class="lineno">14207</span>&#160; <span class="comment">// write buffer and reset index; there must be 13 bytes</span></div>
<div class="line"><a name="l14208"></a><span class="lineno">14208</span>&#160; <span class="comment">// left, as this is the maximal number of bytes to be</span></div>
<div class="line"><a name="l14209"></a><span class="lineno">14209</span>&#160; <span class="comment">// written (&quot;\uxxxx\uxxxx\0&quot;) for one code point</span></div>
<div class="line"><a name="l14210"></a><span class="lineno">14210</span>&#160; <span class="keywordflow">if</span> (string_buffer.size() - bytes &lt; 13)</div>
<div class="line"><a name="l14211"></a><span class="lineno">14211</span>&#160; {</div>
<div class="line"><a name="l14212"></a><span class="lineno">14212</span>&#160; o-&gt;write_characters(string_buffer.data(), bytes);</div>
<div class="line"><a name="l14213"></a><span class="lineno">14213</span>&#160; bytes = 0;</div>
<div class="line"><a name="l14214"></a><span class="lineno">14214</span>&#160; }</div>
<div class="line"><a name="l14215"></a><span class="lineno">14215</span>&#160; </div>
<div class="line"><a name="l14216"></a><span class="lineno">14216</span>&#160; bytes_after_last_accept = bytes;</div>
<div class="line"><a name="l14217"></a><span class="lineno">14217</span>&#160; }</div>
<div class="line"><a name="l14218"></a><span class="lineno">14218</span>&#160; </div>
<div class="line"><a name="l14219"></a><span class="lineno">14219</span>&#160; undumped_chars = 0;</div>
<div class="line"><a name="l14220"></a><span class="lineno">14220</span>&#160; </div>
<div class="line"><a name="l14221"></a><span class="lineno">14221</span>&#160; <span class="comment">// continue processing the string</span></div>
<div class="line"><a name="l14222"></a><span class="lineno">14222</span>&#160; state = UTF8_ACCEPT;</div>
<div class="line"><a name="l14223"></a><span class="lineno">14223</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14224"></a><span class="lineno">14224</span>&#160; }</div>
<div class="line"><a name="l14225"></a><span class="lineno">14225</span>&#160; </div>
<div class="line"><a name="l14226"></a><span class="lineno">14226</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l14227"></a><span class="lineno">14227</span>&#160; assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l14228"></a><span class="lineno">14228</span>&#160; }</div>
<div class="line"><a name="l14229"></a><span class="lineno">14229</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14230"></a><span class="lineno">14230</span>&#160; }</div>
<div class="line"><a name="l14231"></a><span class="lineno">14231</span>&#160; </div>
<div class="line"><a name="l14232"></a><span class="lineno">14232</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// decode found yet incomplete multi-byte code point</span></div>
<div class="line"><a name="l14233"></a><span class="lineno">14233</span>&#160; {</div>
<div class="line"><a name="l14234"></a><span class="lineno">14234</span>&#160; <span class="keywordflow">if</span> (not ensure_ascii)</div>
<div class="line"><a name="l14235"></a><span class="lineno">14235</span>&#160; {</div>
<div class="line"><a name="l14236"></a><span class="lineno">14236</span>&#160; <span class="comment">// code point will not be escaped - copy byte to buffer</span></div>
<div class="line"><a name="l14237"></a><span class="lineno">14237</span>&#160; string_buffer[bytes++] = s[i];</div>
<div class="line"><a name="l14238"></a><span class="lineno">14238</span>&#160; }</div>
<div class="line"><a name="l14239"></a><span class="lineno">14239</span>&#160; ++undumped_chars;</div>
<div class="line"><a name="l14240"></a><span class="lineno">14240</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14241"></a><span class="lineno">14241</span>&#160; }</div>
<div class="line"><a name="l14242"></a><span class="lineno">14242</span>&#160; }</div>
<div class="line"><a name="l14243"></a><span class="lineno">14243</span>&#160; }</div>
<div class="line"><a name="l14244"></a><span class="lineno">14244</span>&#160; </div>
<div class="line"><a name="l14245"></a><span class="lineno">14245</span>&#160; <span class="comment">// we finished processing the string</span></div>
<div class="line"><a name="l14246"></a><span class="lineno">14246</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(state == UTF8_ACCEPT))</div>
<div class="line"><a name="l14247"></a><span class="lineno">14247</span>&#160; {</div>
<div class="line"><a name="l14248"></a><span class="lineno">14248</span>&#160; <span class="comment">// write buffer</span></div>
<div class="line"><a name="l14249"></a><span class="lineno">14249</span>&#160; <span class="keywordflow">if</span> (bytes &gt; 0)</div>
<div class="line"><a name="l14250"></a><span class="lineno">14250</span>&#160; {</div>
<div class="line"><a name="l14251"></a><span class="lineno">14251</span>&#160; o-&gt;write_characters(string_buffer.data(), bytes);</div>
<div class="line"><a name="l14252"></a><span class="lineno">14252</span>&#160; }</div>
<div class="line"><a name="l14253"></a><span class="lineno">14253</span>&#160; }</div>
<div class="line"><a name="l14254"></a><span class="lineno">14254</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l14255"></a><span class="lineno">14255</span>&#160; {</div>
<div class="line"><a name="l14256"></a><span class="lineno">14256</span>&#160; <span class="comment">// we finish reading, but do not accept: string was incomplete</span></div>
<div class="line"><a name="l14257"></a><span class="lineno">14257</span>&#160; <span class="keywordflow">switch</span> (error_handler)</div>
<div class="line"><a name="l14258"></a><span class="lineno">14258</span>&#160; {</div>
<div class="line"><a name="l14259"></a><span class="lineno">14259</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">error_handler_t::strict</a>:</div>
<div class="line"><a name="l14260"></a><span class="lineno">14260</span>&#160; {</div>
<div class="line"><a name="l14261"></a><span class="lineno">14261</span>&#160; std::string sn(3, <span class="charliteral">&#39;\0&#39;</span>);</div>
<div class="line"><a name="l14262"></a><span class="lineno">14262</span>&#160; (std::snprintf)(&amp;sn[0], sn.size(), <span class="stringliteral">&quot;%.2X&quot;</span>, <span class="keyword">static_cast&lt;</span>std::uint8_t<span class="keyword">&gt;</span>(s.back()));</div>
<div class="line"><a name="l14263"></a><span class="lineno">14263</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(316, <span class="stringliteral">&quot;incomplete UTF-8 string; last byte: 0x&quot;</span> + sn));</div>
<div class="line"><a name="l14264"></a><span class="lineno">14264</span>&#160; }</div>
<div class="line"><a name="l14265"></a><span class="lineno">14265</span>&#160; </div>
<div class="line"><a name="l14266"></a><span class="lineno">14266</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3">error_handler_t::ignore</a>:</div>
<div class="line"><a name="l14267"></a><span class="lineno">14267</span>&#160; {</div>
<div class="line"><a name="l14268"></a><span class="lineno">14268</span>&#160; <span class="comment">// write all accepted bytes</span></div>
<div class="line"><a name="l14269"></a><span class="lineno">14269</span>&#160; o-&gt;write_characters(string_buffer.data(), bytes_after_last_accept);</div>
<div class="line"><a name="l14270"></a><span class="lineno">14270</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14271"></a><span class="lineno">14271</span>&#160; }</div>
<div class="line"><a name="l14272"></a><span class="lineno">14272</span>&#160; </div>
<div class="line"><a name="l14273"></a><span class="lineno">14273</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c">error_handler_t::replace</a>:</div>
<div class="line"><a name="l14274"></a><span class="lineno">14274</span>&#160; {</div>
<div class="line"><a name="l14275"></a><span class="lineno">14275</span>&#160; <span class="comment">// write all accepted bytes</span></div>
<div class="line"><a name="l14276"></a><span class="lineno">14276</span>&#160; o-&gt;write_characters(string_buffer.data(), bytes_after_last_accept);</div>
<div class="line"><a name="l14277"></a><span class="lineno">14277</span>&#160; <span class="comment">// add a replacement character</span></div>
<div class="line"><a name="l14278"></a><span class="lineno">14278</span>&#160; <span class="keywordflow">if</span> (ensure_ascii)</div>
<div class="line"><a name="l14279"></a><span class="lineno">14279</span>&#160; {</div>
<div class="line"><a name="l14280"></a><span class="lineno">14280</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;\\ufffd&quot;</span>, 6);</div>
<div class="line"><a name="l14281"></a><span class="lineno">14281</span>&#160; }</div>
<div class="line"><a name="l14282"></a><span class="lineno">14282</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l14283"></a><span class="lineno">14283</span>&#160; {</div>
<div class="line"><a name="l14284"></a><span class="lineno">14284</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;\xEF\xBF\xBD&quot;</span>, 3);</div>
<div class="line"><a name="l14285"></a><span class="lineno">14285</span>&#160; }</div>
<div class="line"><a name="l14286"></a><span class="lineno">14286</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l14287"></a><span class="lineno">14287</span>&#160; }</div>
<div class="line"><a name="l14288"></a><span class="lineno">14288</span>&#160; </div>
<div class="line"><a name="l14289"></a><span class="lineno">14289</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l14290"></a><span class="lineno">14290</span>&#160; assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l14291"></a><span class="lineno">14291</span>&#160; }</div>
<div class="line"><a name="l14292"></a><span class="lineno">14292</span>&#160; }</div>
<div class="line"><a name="l14293"></a><span class="lineno">14293</span>&#160; }</div>
<div class="line"><a name="l14294"></a><span class="lineno">14294</span>&#160; </div>
<div class="line"><a name="l14303"></a><span class="lineno">14303</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count_digits(number_unsigned_t x) noexcept</div>
<div class="line"><a name="l14304"></a><span class="lineno">14304</span>&#160; {</div>
<div class="line"><a name="l14305"></a><span class="lineno">14305</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n_digits = 1;</div>
<div class="line"><a name="l14306"></a><span class="lineno">14306</span>&#160; <span class="keywordflow">for</span> (;;)</div>
<div class="line"><a name="l14307"></a><span class="lineno">14307</span>&#160; {</div>
<div class="line"><a name="l14308"></a><span class="lineno">14308</span>&#160; <span class="keywordflow">if</span> (x &lt; 10)</div>
<div class="line"><a name="l14309"></a><span class="lineno">14309</span>&#160; {</div>
<div class="line"><a name="l14310"></a><span class="lineno">14310</span>&#160; <span class="keywordflow">return</span> n_digits;</div>
<div class="line"><a name="l14311"></a><span class="lineno">14311</span>&#160; }</div>
<div class="line"><a name="l14312"></a><span class="lineno">14312</span>&#160; <span class="keywordflow">if</span> (x &lt; 100)</div>
<div class="line"><a name="l14313"></a><span class="lineno">14313</span>&#160; {</div>
<div class="line"><a name="l14314"></a><span class="lineno">14314</span>&#160; <span class="keywordflow">return</span> n_digits + 1;</div>
<div class="line"><a name="l14315"></a><span class="lineno">14315</span>&#160; }</div>
<div class="line"><a name="l14316"></a><span class="lineno">14316</span>&#160; <span class="keywordflow">if</span> (x &lt; 1000)</div>
<div class="line"><a name="l14317"></a><span class="lineno">14317</span>&#160; {</div>
<div class="line"><a name="l14318"></a><span class="lineno">14318</span>&#160; <span class="keywordflow">return</span> n_digits + 2;</div>
<div class="line"><a name="l14319"></a><span class="lineno">14319</span>&#160; }</div>
<div class="line"><a name="l14320"></a><span class="lineno">14320</span>&#160; <span class="keywordflow">if</span> (x &lt; 10000)</div>
<div class="line"><a name="l14321"></a><span class="lineno">14321</span>&#160; {</div>
<div class="line"><a name="l14322"></a><span class="lineno">14322</span>&#160; <span class="keywordflow">return</span> n_digits + 3;</div>
<div class="line"><a name="l14323"></a><span class="lineno">14323</span>&#160; }</div>
<div class="line"><a name="l14324"></a><span class="lineno">14324</span>&#160; x = x / 10000u;</div>
<div class="line"><a name="l14325"></a><span class="lineno">14325</span>&#160; n_digits += 4;</div>
<div class="line"><a name="l14326"></a><span class="lineno">14326</span>&#160; }</div>
<div class="line"><a name="l14327"></a><span class="lineno">14327</span>&#160; }</div>
<div class="line"><a name="l14328"></a><span class="lineno">14328</span>&#160; </div>
<div class="line"><a name="l14338"></a><span class="lineno">14338</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> NumberType, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a>&lt;</div>
<div class="line"><a name="l14339"></a><span class="lineno">14339</span>&#160; std::is_same&lt;NumberType, number_unsigned_t&gt;::value or</div>
<div class="line"><a name="l14340"></a><span class="lineno">14340</span>&#160; std::is_same&lt;NumberType, number_integer_t&gt;::value,</div>
<div class="line"><a name="l14341"></a><span class="lineno">14341</span>&#160; <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l14342"></a><span class="lineno">14342</span>&#160; <span class="keywordtype">void</span> dump_integer(NumberType x)</div>
<div class="line"><a name="l14343"></a><span class="lineno">14343</span>&#160; {</div>
<div class="line"><a name="l14344"></a><span class="lineno">14344</span>&#160; <span class="keyword">static</span> constexpr std::array&lt;std::array&lt;char, 2&gt;, 100&gt; digits_to_99</div>
<div class="line"><a name="l14345"></a><span class="lineno">14345</span>&#160; {</div>
<div class="line"><a name="l14346"></a><span class="lineno">14346</span>&#160; {</div>
<div class="line"><a name="l14347"></a><span class="lineno">14347</span>&#160; {{<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;0&#39;</span>}}, {{<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;1&#39;</span>}}, {{<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;2&#39;</span>}}, {{<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;3&#39;</span>}}, {{<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;4&#39;</span>}}, {{<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;5&#39;</span>}}, {{<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;6&#39;</span>}}, {{<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;7&#39;</span>}}, {{<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;8&#39;</span>}}, {{<span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;9&#39;</span>}},</div>
<div class="line"><a name="l14348"></a><span class="lineno">14348</span>&#160; {{<span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;0&#39;</span>}}, {{<span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;1&#39;</span>}}, {{<span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;2&#39;</span>}}, {{<span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;3&#39;</span>}}, {{<span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;4&#39;</span>}}, {{<span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;5&#39;</span>}}, {{<span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;6&#39;</span>}}, {{<span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;7&#39;</span>}}, {{<span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;8&#39;</span>}}, {{<span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;9&#39;</span>}},</div>
<div class="line"><a name="l14349"></a><span class="lineno">14349</span>&#160; {{<span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;0&#39;</span>}}, {{<span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;1&#39;</span>}}, {{<span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;2&#39;</span>}}, {{<span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;3&#39;</span>}}, {{<span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;4&#39;</span>}}, {{<span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;5&#39;</span>}}, {{<span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;6&#39;</span>}}, {{<span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;7&#39;</span>}}, {{<span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;8&#39;</span>}}, {{<span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;9&#39;</span>}},</div>
<div class="line"><a name="l14350"></a><span class="lineno">14350</span>&#160; {{<span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;0&#39;</span>}}, {{<span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;1&#39;</span>}}, {{<span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;2&#39;</span>}}, {{<span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;3&#39;</span>}}, {{<span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;4&#39;</span>}}, {{<span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;5&#39;</span>}}, {{<span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;6&#39;</span>}}, {{<span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;7&#39;</span>}}, {{<span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;8&#39;</span>}}, {{<span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;9&#39;</span>}},</div>
<div class="line"><a name="l14351"></a><span class="lineno">14351</span>&#160; {{<span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;0&#39;</span>}}, {{<span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;1&#39;</span>}}, {{<span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;2&#39;</span>}}, {{<span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;3&#39;</span>}}, {{<span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;4&#39;</span>}}, {{<span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;5&#39;</span>}}, {{<span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;6&#39;</span>}}, {{<span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;7&#39;</span>}}, {{<span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;8&#39;</span>}}, {{<span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;9&#39;</span>}},</div>
<div class="line"><a name="l14352"></a><span class="lineno">14352</span>&#160; {{<span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;0&#39;</span>}}, {{<span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;1&#39;</span>}}, {{<span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;2&#39;</span>}}, {{<span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;3&#39;</span>}}, {{<span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;4&#39;</span>}}, {{<span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;5&#39;</span>}}, {{<span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;6&#39;</span>}}, {{<span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;7&#39;</span>}}, {{<span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;8&#39;</span>}}, {{<span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;9&#39;</span>}},</div>
<div class="line"><a name="l14353"></a><span class="lineno">14353</span>&#160; {{<span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;0&#39;</span>}}, {{<span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;1&#39;</span>}}, {{<span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;2&#39;</span>}}, {{<span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;3&#39;</span>}}, {{<span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;4&#39;</span>}}, {{<span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;5&#39;</span>}}, {{<span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;6&#39;</span>}}, {{<span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;7&#39;</span>}}, {{<span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;8&#39;</span>}}, {{<span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;9&#39;</span>}},</div>
<div class="line"><a name="l14354"></a><span class="lineno">14354</span>&#160; {{<span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;0&#39;</span>}}, {{<span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;1&#39;</span>}}, {{<span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;2&#39;</span>}}, {{<span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;3&#39;</span>}}, {{<span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;4&#39;</span>}}, {{<span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;5&#39;</span>}}, {{<span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;6&#39;</span>}}, {{<span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;7&#39;</span>}}, {{<span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;8&#39;</span>}}, {{<span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;9&#39;</span>}},</div>
<div class="line"><a name="l14355"></a><span class="lineno">14355</span>&#160; {{<span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;0&#39;</span>}}, {{<span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;1&#39;</span>}}, {{<span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;2&#39;</span>}}, {{<span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;3&#39;</span>}}, {{<span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;4&#39;</span>}}, {{<span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;5&#39;</span>}}, {{<span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;6&#39;</span>}}, {{<span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;7&#39;</span>}}, {{<span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;8&#39;</span>}}, {{<span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;9&#39;</span>}},</div>
<div class="line"><a name="l14356"></a><span class="lineno">14356</span>&#160; {{<span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;0&#39;</span>}}, {{<span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;1&#39;</span>}}, {{<span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;2&#39;</span>}}, {{<span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;3&#39;</span>}}, {{<span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;4&#39;</span>}}, {{<span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;5&#39;</span>}}, {{<span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;6&#39;</span>}}, {{<span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;7&#39;</span>}}, {{<span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;8&#39;</span>}}, {{<span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;9&#39;</span>}},</div>
<div class="line"><a name="l14357"></a><span class="lineno">14357</span>&#160; }</div>
<div class="line"><a name="l14358"></a><span class="lineno">14358</span>&#160; };</div>
<div class="line"><a name="l14359"></a><span class="lineno">14359</span>&#160; </div>
<div class="line"><a name="l14360"></a><span class="lineno">14360</span>&#160; <span class="comment">// special case for &quot;0&quot;</span></div>
<div class="line"><a name="l14361"></a><span class="lineno">14361</span>&#160; <span class="keywordflow">if</span> (x == 0)</div>
<div class="line"><a name="l14362"></a><span class="lineno">14362</span>&#160; {</div>
<div class="line"><a name="l14363"></a><span class="lineno">14363</span>&#160; o-&gt;write_character(<span class="charliteral">&#39;0&#39;</span>);</div>
<div class="line"><a name="l14364"></a><span class="lineno">14364</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l14365"></a><span class="lineno">14365</span>&#160; }</div>
<div class="line"><a name="l14366"></a><span class="lineno">14366</span>&#160; </div>
<div class="line"><a name="l14367"></a><span class="lineno">14367</span>&#160; <span class="comment">// use a pointer to fill the buffer</span></div>
<div class="line"><a name="l14368"></a><span class="lineno">14368</span>&#160; <span class="keyword">auto</span> buffer_ptr = number_buffer.begin();</div>
<div class="line"><a name="l14369"></a><span class="lineno">14369</span>&#160; </div>
<div class="line"><a name="l14370"></a><span class="lineno">14370</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> is_negative = std::is_same&lt;NumberType, number_integer_t&gt;::value and not(x &gt;= 0); <span class="comment">// see issue #755</span></div>
<div class="line"><a name="l14371"></a><span class="lineno">14371</span>&#160; number_unsigned_t abs_value;</div>
<div class="line"><a name="l14372"></a><span class="lineno">14372</span>&#160; </div>
<div class="line"><a name="l14373"></a><span class="lineno">14373</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n_chars;</div>
<div class="line"><a name="l14374"></a><span class="lineno">14374</span>&#160; </div>
<div class="line"><a name="l14375"></a><span class="lineno">14375</span>&#160; <span class="keywordflow">if</span> (is_negative)</div>
<div class="line"><a name="l14376"></a><span class="lineno">14376</span>&#160; {</div>
<div class="line"><a name="l14377"></a><span class="lineno">14377</span>&#160; *buffer_ptr = <span class="charliteral">&#39;-&#39;</span>;</div>
<div class="line"><a name="l14378"></a><span class="lineno">14378</span>&#160; abs_value = remove_sign(x);</div>
<div class="line"><a name="l14379"></a><span class="lineno">14379</span>&#160; </div>
<div class="line"><a name="l14380"></a><span class="lineno">14380</span>&#160; <span class="comment">// account one more byte for the minus sign</span></div>
<div class="line"><a name="l14381"></a><span class="lineno">14381</span>&#160; n_chars = 1 + count_digits(abs_value);</div>
<div class="line"><a name="l14382"></a><span class="lineno">14382</span>&#160; }</div>
<div class="line"><a name="l14383"></a><span class="lineno">14383</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l14384"></a><span class="lineno">14384</span>&#160; {</div>
<div class="line"><a name="l14385"></a><span class="lineno">14385</span>&#160; abs_value = <span class="keyword">static_cast&lt;</span>number_unsigned_t<span class="keyword">&gt;</span>(x);</div>
<div class="line"><a name="l14386"></a><span class="lineno">14386</span>&#160; n_chars = count_digits(abs_value);</div>
<div class="line"><a name="l14387"></a><span class="lineno">14387</span>&#160; }</div>
<div class="line"><a name="l14388"></a><span class="lineno">14388</span>&#160; </div>
<div class="line"><a name="l14389"></a><span class="lineno">14389</span>&#160; <span class="comment">// spare 1 byte for &#39;\0&#39;</span></div>
<div class="line"><a name="l14390"></a><span class="lineno">14390</span>&#160; assert(n_chars &lt; number_buffer.size() - 1);</div>
<div class="line"><a name="l14391"></a><span class="lineno">14391</span>&#160; </div>
<div class="line"><a name="l14392"></a><span class="lineno">14392</span>&#160; <span class="comment">// jump to the end to generate the string from backward</span></div>
<div class="line"><a name="l14393"></a><span class="lineno">14393</span>&#160; <span class="comment">// so we later avoid reversing the result</span></div>
<div class="line"><a name="l14394"></a><span class="lineno">14394</span>&#160; buffer_ptr += n_chars;</div>
<div class="line"><a name="l14395"></a><span class="lineno">14395</span>&#160; </div>
<div class="line"><a name="l14396"></a><span class="lineno">14396</span>&#160; <span class="comment">// Fast int2ascii implementation inspired by &quot;Fastware&quot; talk by Andrei Alexandrescu</span></div>
<div class="line"><a name="l14397"></a><span class="lineno">14397</span>&#160; <span class="comment">// See: https://www.youtube.com/watch?v=o4-CwDo2zpg</span></div>
<div class="line"><a name="l14398"></a><span class="lineno">14398</span>&#160; <span class="keywordflow">while</span> (abs_value &gt;= 100)</div>
<div class="line"><a name="l14399"></a><span class="lineno">14399</span>&#160; {</div>
<div class="line"><a name="l14400"></a><span class="lineno">14400</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> digits_index = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>((abs_value % 100));</div>
<div class="line"><a name="l14401"></a><span class="lineno">14401</span>&#160; abs_value /= 100;</div>
<div class="line"><a name="l14402"></a><span class="lineno">14402</span>&#160; *(--buffer_ptr) = digits_to_99[digits_index][1];</div>
<div class="line"><a name="l14403"></a><span class="lineno">14403</span>&#160; *(--buffer_ptr) = digits_to_99[digits_index][0];</div>
<div class="line"><a name="l14404"></a><span class="lineno">14404</span>&#160; }</div>
<div class="line"><a name="l14405"></a><span class="lineno">14405</span>&#160; </div>
<div class="line"><a name="l14406"></a><span class="lineno">14406</span>&#160; <span class="keywordflow">if</span> (abs_value &gt;= 10)</div>
<div class="line"><a name="l14407"></a><span class="lineno">14407</span>&#160; {</div>
<div class="line"><a name="l14408"></a><span class="lineno">14408</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> digits_index = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(abs_value);</div>
<div class="line"><a name="l14409"></a><span class="lineno">14409</span>&#160; *(--buffer_ptr) = digits_to_99[digits_index][1];</div>
<div class="line"><a name="l14410"></a><span class="lineno">14410</span>&#160; *(--buffer_ptr) = digits_to_99[digits_index][0];</div>
<div class="line"><a name="l14411"></a><span class="lineno">14411</span>&#160; }</div>
<div class="line"><a name="l14412"></a><span class="lineno">14412</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l14413"></a><span class="lineno">14413</span>&#160; {</div>
<div class="line"><a name="l14414"></a><span class="lineno">14414</span>&#160; *(--buffer_ptr) = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + abs_value);</div>
<div class="line"><a name="l14415"></a><span class="lineno">14415</span>&#160; }</div>
<div class="line"><a name="l14416"></a><span class="lineno">14416</span>&#160; </div>
<div class="line"><a name="l14417"></a><span class="lineno">14417</span>&#160; o-&gt;write_characters(number_buffer.data(), n_chars);</div>
<div class="line"><a name="l14418"></a><span class="lineno">14418</span>&#160; }</div>
<div class="line"><a name="l14419"></a><span class="lineno">14419</span>&#160; </div>
<div class="line"><a name="l14428"></a><span class="lineno">14428</span>&#160; <span class="keywordtype">void</span> dump_float(number_float_t x)</div>
<div class="line"><a name="l14429"></a><span class="lineno">14429</span>&#160; {</div>
<div class="line"><a name="l14430"></a><span class="lineno">14430</span>&#160; <span class="comment">// NaN / inf</span></div>
<div class="line"><a name="l14431"></a><span class="lineno">14431</span>&#160; <span class="keywordflow">if</span> (not std::isfinite(x))</div>
<div class="line"><a name="l14432"></a><span class="lineno">14432</span>&#160; {</div>
<div class="line"><a name="l14433"></a><span class="lineno">14433</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;null&quot;</span>, 4);</div>
<div class="line"><a name="l14434"></a><span class="lineno">14434</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l14435"></a><span class="lineno">14435</span>&#160; }</div>
<div class="line"><a name="l14436"></a><span class="lineno">14436</span>&#160; </div>
<div class="line"><a name="l14437"></a><span class="lineno">14437</span>&#160; <span class="comment">// If number_float_t is an IEEE-754 single or double precision number,</span></div>
<div class="line"><a name="l14438"></a><span class="lineno">14438</span>&#160; <span class="comment">// use the Grisu2 algorithm to produce short numbers which are</span></div>
<div class="line"><a name="l14439"></a><span class="lineno">14439</span>&#160; <span class="comment">// guaranteed to round-trip, using strtof and strtod, resp.</span></div>
<div class="line"><a name="l14440"></a><span class="lineno">14440</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l14441"></a><span class="lineno">14441</span>&#160; <span class="comment">// NB: The test below works if &lt;long double&gt; == &lt;double&gt;.</span></div>
<div class="line"><a name="l14442"></a><span class="lineno">14442</span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> is_ieee_single_or_double</div>
<div class="line"><a name="l14443"></a><span class="lineno">14443</span>&#160; = (std::numeric_limits&lt;number_float_t&gt;::is_iec559 and std::numeric_limits&lt;number_float_t&gt;::digits == 24 and std::numeric_limits&lt;number_float_t&gt;::max_exponent == 128) or</div>
<div class="line"><a name="l14444"></a><span class="lineno">14444</span>&#160; (std::numeric_limits&lt;number_float_t&gt;::is_iec559 and std::numeric_limits&lt;number_float_t&gt;::digits == 53 and std::numeric_limits&lt;number_float_t&gt;::max_exponent == 1024);</div>
<div class="line"><a name="l14445"></a><span class="lineno">14445</span>&#160; </div>
<div class="line"><a name="l14446"></a><span class="lineno">14446</span>&#160; dump_float(x, std::integral_constant&lt;bool, is_ieee_single_or_double&gt;());</div>
<div class="line"><a name="l14447"></a><span class="lineno">14447</span>&#160; }</div>
<div class="line"><a name="l14448"></a><span class="lineno">14448</span>&#160; </div>
<div class="line"><a name="l14449"></a><span class="lineno">14449</span>&#160; <span class="keywordtype">void</span> dump_float(number_float_t x, std::true_type <span class="comment">/*is_ieee_single_or_double*/</span>)</div>
<div class="line"><a name="l14450"></a><span class="lineno">14450</span>&#160; {</div>
<div class="line"><a name="l14451"></a><span class="lineno">14451</span>&#160; <span class="keywordtype">char</span>* begin = number_buffer.data();</div>
<div class="line"><a name="l14452"></a><span class="lineno">14452</span>&#160; <span class="keywordtype">char</span>* end = <a class="code" href="namespacenlohmann_1_1detail.html#a6cca370ac6c99294dbe4fe24716a57dd">::nlohmann::detail::to_chars</a>(begin, begin + number_buffer.size(), x);</div>
<div class="line"><a name="l14453"></a><span class="lineno">14453</span>&#160; </div>
<div class="line"><a name="l14454"></a><span class="lineno">14454</span>&#160; o-&gt;write_characters(begin, <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(end - begin));</div>
<div class="line"><a name="l14455"></a><span class="lineno">14455</span>&#160; }</div>
<div class="line"><a name="l14456"></a><span class="lineno">14456</span>&#160; </div>
<div class="line"><a name="l14457"></a><span class="lineno">14457</span>&#160; <span class="keywordtype">void</span> dump_float(number_float_t x, std::false_type <span class="comment">/*is_ieee_single_or_double*/</span>)</div>
<div class="line"><a name="l14458"></a><span class="lineno">14458</span>&#160; {</div>
<div class="line"><a name="l14459"></a><span class="lineno">14459</span>&#160; <span class="comment">// get number of digits for a float -&gt; text -&gt; float round-trip</span></div>
<div class="line"><a name="l14460"></a><span class="lineno">14460</span>&#160; <span class="keyword">static</span> constexpr <span class="keyword">auto</span> d = std::numeric_limits&lt;number_float_t&gt;::max_digits10;</div>
<div class="line"><a name="l14461"></a><span class="lineno">14461</span>&#160; </div>
<div class="line"><a name="l14462"></a><span class="lineno">14462</span>&#160; <span class="comment">// the actual conversion</span></div>
<div class="line"><a name="l14463"></a><span class="lineno">14463</span>&#160; std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), <span class="stringliteral">&quot;%.*g&quot;</span>, d, x);</div>
<div class="line"><a name="l14464"></a><span class="lineno">14464</span>&#160; </div>
<div class="line"><a name="l14465"></a><span class="lineno">14465</span>&#160; <span class="comment">// negative value indicates an error</span></div>
<div class="line"><a name="l14466"></a><span class="lineno">14466</span>&#160; assert(len &gt; 0);</div>
<div class="line"><a name="l14467"></a><span class="lineno">14467</span>&#160; <span class="comment">// check if buffer was large enough</span></div>
<div class="line"><a name="l14468"></a><span class="lineno">14468</span>&#160; assert(<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len) &lt; number_buffer.size());</div>
<div class="line"><a name="l14469"></a><span class="lineno">14469</span>&#160; </div>
<div class="line"><a name="l14470"></a><span class="lineno">14470</span>&#160; <span class="comment">// erase thousands separator</span></div>
<div class="line"><a name="l14471"></a><span class="lineno">14471</span>&#160; <span class="keywordflow">if</span> (thousands_sep != <span class="charliteral">&#39;\0&#39;</span>)</div>
<div class="line"><a name="l14472"></a><span class="lineno">14472</span>&#160; {</div>
<div class="line"><a name="l14473"></a><span class="lineno">14473</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> end = std::remove(number_buffer.begin(),</div>
<div class="line"><a name="l14474"></a><span class="lineno">14474</span>&#160; number_buffer.begin() + len, thousands_sep);</div>
<div class="line"><a name="l14475"></a><span class="lineno">14475</span>&#160; std::fill(end, number_buffer.end(), <span class="charliteral">&#39;\0&#39;</span>);</div>
<div class="line"><a name="l14476"></a><span class="lineno">14476</span>&#160; assert((end - number_buffer.begin()) &lt;= len);</div>
<div class="line"><a name="l14477"></a><span class="lineno">14477</span>&#160; len = (end - number_buffer.begin());</div>
<div class="line"><a name="l14478"></a><span class="lineno">14478</span>&#160; }</div>
<div class="line"><a name="l14479"></a><span class="lineno">14479</span>&#160; </div>
<div class="line"><a name="l14480"></a><span class="lineno">14480</span>&#160; <span class="comment">// convert decimal point to &#39;.&#39;</span></div>
<div class="line"><a name="l14481"></a><span class="lineno">14481</span>&#160; <span class="keywordflow">if</span> (decimal_point != <span class="charliteral">&#39;\0&#39;</span> and decimal_point != <span class="charliteral">&#39;.&#39;</span>)</div>
<div class="line"><a name="l14482"></a><span class="lineno">14482</span>&#160; {</div>
<div class="line"><a name="l14483"></a><span class="lineno">14483</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point);</div>
<div class="line"><a name="l14484"></a><span class="lineno">14484</span>&#160; <span class="keywordflow">if</span> (dec_pos != number_buffer.end())</div>
<div class="line"><a name="l14485"></a><span class="lineno">14485</span>&#160; {</div>
<div class="line"><a name="l14486"></a><span class="lineno">14486</span>&#160; *dec_pos = <span class="charliteral">&#39;.&#39;</span>;</div>
<div class="line"><a name="l14487"></a><span class="lineno">14487</span>&#160; }</div>
<div class="line"><a name="l14488"></a><span class="lineno">14488</span>&#160; }</div>
<div class="line"><a name="l14489"></a><span class="lineno">14489</span>&#160; </div>
<div class="line"><a name="l14490"></a><span class="lineno">14490</span>&#160; o-&gt;write_characters(number_buffer.data(), <span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(len));</div>
<div class="line"><a name="l14491"></a><span class="lineno">14491</span>&#160; </div>
<div class="line"><a name="l14492"></a><span class="lineno">14492</span>&#160; <span class="comment">// determine if need to append &quot;.0&quot;</span></div>
<div class="line"><a name="l14493"></a><span class="lineno">14493</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> value_is_int_like =</div>
<div class="line"><a name="l14494"></a><span class="lineno">14494</span>&#160; std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1,</div>
<div class="line"><a name="l14495"></a><span class="lineno">14495</span>&#160; [](<span class="keywordtype">char</span> c)</div>
<div class="line"><a name="l14496"></a><span class="lineno">14496</span>&#160; {</div>
<div class="line"><a name="l14497"></a><span class="lineno">14497</span>&#160; return c == <span class="stringliteral">&#39;.&#39;</span> or c == <span class="stringliteral">&#39;e&#39;</span>;</div>
<div class="line"><a name="l14498"></a><span class="lineno">14498</span>&#160; });</div>
<div class="line"><a name="l14499"></a><span class="lineno">14499</span>&#160; </div>
<div class="line"><a name="l14500"></a><span class="lineno">14500</span>&#160; <span class="keywordflow">if</span> (value_is_int_like)</div>
<div class="line"><a name="l14501"></a><span class="lineno">14501</span>&#160; {</div>
<div class="line"><a name="l14502"></a><span class="lineno">14502</span>&#160; o-&gt;write_characters(<span class="stringliteral">&quot;.0&quot;</span>, 2);</div>
<div class="line"><a name="l14503"></a><span class="lineno">14503</span>&#160; }</div>
<div class="line"><a name="l14504"></a><span class="lineno">14504</span>&#160; }</div>
<div class="line"><a name="l14505"></a><span class="lineno">14505</span>&#160; </div>
<div class="line"><a name="l14527"></a><span class="lineno">14527</span>&#160; <span class="keyword">static</span> std::uint8_t decode(std::uint8_t&amp; state, std::uint32_t&amp; codep, <span class="keyword">const</span> std::uint8_t <span class="keywordtype">byte</span>) noexcept</div>
<div class="line"><a name="l14528"></a><span class="lineno">14528</span>&#160; {</div>
<div class="line"><a name="l14529"></a><span class="lineno">14529</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::array&lt;std::uint8_t, 400&gt; utf8d =</div>
<div class="line"><a name="l14530"></a><span class="lineno">14530</span>&#160; {</div>
<div class="line"><a name="l14531"></a><span class="lineno">14531</span>&#160; {</div>
<div class="line"><a name="l14532"></a><span class="lineno">14532</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, <span class="comment">// 00..1F</span></div>
<div class="line"><a name="l14533"></a><span class="lineno">14533</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, <span class="comment">// 20..3F</span></div>
<div class="line"><a name="l14534"></a><span class="lineno">14534</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, <span class="comment">// 40..5F</span></div>
<div class="line"><a name="l14535"></a><span class="lineno">14535</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, <span class="comment">// 60..7F</span></div>
<div class="line"><a name="l14536"></a><span class="lineno">14536</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, <span class="comment">// 80..9F</span></div>
<div class="line"><a name="l14537"></a><span class="lineno">14537</span>&#160; 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, <span class="comment">// A0..BF</span></div>
<div class="line"><a name="l14538"></a><span class="lineno">14538</span>&#160; 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, <span class="comment">// C0..DF</span></div>
<div class="line"><a name="l14539"></a><span class="lineno">14539</span>&#160; 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, <span class="comment">// E0..EF</span></div>
<div class="line"><a name="l14540"></a><span class="lineno">14540</span>&#160; 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, <span class="comment">// F0..FF</span></div>
<div class="line"><a name="l14541"></a><span class="lineno">14541</span>&#160; 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, <span class="comment">// s0..s0</span></div>
<div class="line"><a name="l14542"></a><span class="lineno">14542</span>&#160; 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, <span class="comment">// s1..s2</span></div>
<div class="line"><a name="l14543"></a><span class="lineno">14543</span>&#160; 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, <span class="comment">// s3..s4</span></div>
<div class="line"><a name="l14544"></a><span class="lineno">14544</span>&#160; 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, <span class="comment">// s5..s6</span></div>
<div class="line"><a name="l14545"></a><span class="lineno">14545</span>&#160; 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 <span class="comment">// s7..s8</span></div>
<div class="line"><a name="l14546"></a><span class="lineno">14546</span>&#160; }</div>
<div class="line"><a name="l14547"></a><span class="lineno">14547</span>&#160; };</div>
<div class="line"><a name="l14548"></a><span class="lineno">14548</span>&#160; </div>
<div class="line"><a name="l14549"></a><span class="lineno">14549</span>&#160; <span class="keyword">const</span> std::uint8_t type = utf8d[byte];</div>
<div class="line"><a name="l14550"></a><span class="lineno">14550</span>&#160; </div>
<div class="line"><a name="l14551"></a><span class="lineno">14551</span>&#160; codep = (state != UTF8_ACCEPT)</div>
<div class="line"><a name="l14552"></a><span class="lineno">14552</span>&#160; ? (<span class="keywordtype">byte</span> &amp; 0x3fu) | (codep &lt;&lt; 6u)</div>
<div class="line"><a name="l14553"></a><span class="lineno">14553</span>&#160; : (0xFFu &gt;&gt; type) &amp; (byte);</div>
<div class="line"><a name="l14554"></a><span class="lineno">14554</span>&#160; </div>
<div class="line"><a name="l14555"></a><span class="lineno">14555</span>&#160; state = utf8d[256u + state * 16u + type];</div>
<div class="line"><a name="l14556"></a><span class="lineno">14556</span>&#160; <span class="keywordflow">return</span> state;</div>
<div class="line"><a name="l14557"></a><span class="lineno">14557</span>&#160; }</div>
<div class="line"><a name="l14558"></a><span class="lineno">14558</span>&#160; </div>
<div class="line"><a name="l14559"></a><span class="lineno">14559</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l14560"></a><span class="lineno">14560</span>&#160;<span class="comment"> * Overload to make the compiler happy while it is instantiating</span></div>
<div class="line"><a name="l14561"></a><span class="lineno">14561</span>&#160;<span class="comment"> * dump_integer for number_unsigned_t.</span></div>
<div class="line"><a name="l14562"></a><span class="lineno">14562</span>&#160;<span class="comment"> * Must never be called.</span></div>
<div class="line"><a name="l14563"></a><span class="lineno">14563</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l14564"></a><span class="lineno">14564</span>&#160; number_unsigned_t remove_sign(number_unsigned_t x)</div>
<div class="line"><a name="l14565"></a><span class="lineno">14565</span>&#160; {</div>
<div class="line"><a name="l14566"></a><span class="lineno">14566</span>&#160; assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l14567"></a><span class="lineno">14567</span>&#160; <span class="keywordflow">return</span> x; <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l14568"></a><span class="lineno">14568</span>&#160; }</div>
<div class="line"><a name="l14569"></a><span class="lineno">14569</span>&#160; </div>
<div class="line"><a name="l14570"></a><span class="lineno">14570</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l14571"></a><span class="lineno">14571</span>&#160;<span class="comment"> * Helper function for dump_integer</span></div>
<div class="line"><a name="l14572"></a><span class="lineno">14572</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l14573"></a><span class="lineno">14573</span>&#160;<span class="comment"> * This function takes a negative signed integer and returns its absolute</span></div>
<div class="line"><a name="l14574"></a><span class="lineno">14574</span>&#160;<span class="comment"> * value as unsigned integer. The plus/minus shuffling is necessary as we can</span></div>
<div class="line"><a name="l14575"></a><span class="lineno">14575</span>&#160;<span class="comment"> * not directly remove the sign of an arbitrary signed integer as the</span></div>
<div class="line"><a name="l14576"></a><span class="lineno">14576</span>&#160;<span class="comment"> * absolute values of INT_MIN and INT_MAX are usually not the same. See</span></div>
<div class="line"><a name="l14577"></a><span class="lineno">14577</span>&#160;<span class="comment"> * #1708 for details.</span></div>
<div class="line"><a name="l14578"></a><span class="lineno">14578</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l14579"></a><span class="lineno">14579</span>&#160; <span class="keyword">inline</span> number_unsigned_t remove_sign(number_integer_t x) noexcept</div>
<div class="line"><a name="l14580"></a><span class="lineno">14580</span>&#160; {</div>
<div class="line"><a name="l14581"></a><span class="lineno">14581</span>&#160; assert(x &lt; 0 and x &lt; (std::numeric_limits&lt;number_integer_t&gt;::max)());</div>
<div class="line"><a name="l14582"></a><span class="lineno">14582</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>number_unsigned_t<span class="keyword">&gt;</span>(-(x + 1)) + 1;</div>
<div class="line"><a name="l14583"></a><span class="lineno">14583</span>&#160; }</div>
<div class="line"><a name="l14584"></a><span class="lineno">14584</span>&#160; </div>
<div class="line"><a name="l14585"></a><span class="lineno">14585</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l14587"></a><span class="lineno">14587</span>&#160; output_adapter_t&lt;char&gt; o = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l14588"></a><span class="lineno">14588</span>&#160; </div>
<div class="line"><a name="l14590"></a><span class="lineno">14590</span>&#160; std::array&lt;char, 64&gt; number_buffer{{}};</div>
<div class="line"><a name="l14591"></a><span class="lineno">14591</span>&#160; </div>
<div class="line"><a name="l14593"></a><span class="lineno">14593</span>&#160; <span class="keyword">const</span> std::lconv* loc = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l14595"></a><span class="lineno">14595</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> thousands_sep = <span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line"><a name="l14597"></a><span class="lineno">14597</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> decimal_point = <span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line"><a name="l14598"></a><span class="lineno">14598</span>&#160; </div>
<div class="line"><a name="l14600"></a><span class="lineno">14600</span>&#160; std::array&lt;char, 512&gt; string_buffer{{}};</div>
<div class="line"><a name="l14601"></a><span class="lineno">14601</span>&#160; </div>
<div class="line"><a name="l14603"></a><span class="lineno">14603</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> indent_char;</div>
<div class="line"><a name="l14605"></a><span class="lineno">14605</span>&#160; string_t indent_string;</div>
<div class="line"><a name="l14606"></a><span class="lineno">14606</span>&#160; </div>
<div class="line"><a name="l14608"></a><span class="lineno">14608</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">error_handler_t</a> error_handler;</div>
<div class="line"><a name="l14609"></a><span class="lineno">14609</span>&#160;};</div>
<div class="line"><a name="l14610"></a><span class="lineno">14610</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l14611"></a><span class="lineno">14611</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l14612"></a><span class="lineno">14612</span>&#160; </div>
<div class="line"><a name="l14613"></a><span class="lineno">14613</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/value_t.hpp&gt;</span></div>
<div class="line"><a name="l14614"></a><span class="lineno">14614</span>&#160; </div>
<div class="line"><a name="l14615"></a><span class="lineno">14615</span>&#160;<span class="comment">// #include &lt;nlohmann/json_fwd.hpp&gt;</span></div>
<div class="line"><a name="l14616"></a><span class="lineno">14616</span>&#160; </div>
<div class="line"><a name="l14617"></a><span class="lineno">14617</span>&#160; </div>
<div class="line"><a name="l14623"></a><span class="lineno">14623</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
<div class="line"><a name="l14624"></a><span class="lineno">14624</span>&#160;{</div>
<div class="line"><a name="l14625"></a><span class="lineno">14625</span>&#160; </div>
<div class="line"><a name="l14707"></a><span class="lineno">14707</span>&#160;<a class="code" href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f">NLOHMANN_BASIC_JSON_TPL_DECLARATION</a></div>
<div class="line"><a name="l14708"></a><span class="lineno">14708</span>&#160;<span class="keyword">class </span>basic_json</div>
<div class="line"><a name="l14709"></a><span class="lineno">14709</span>&#160;{</div>
<div class="line"><a name="l14710"></a><span class="lineno">14710</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l14711"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6275ed57bae6866cdf5db5370a7ad47c">14711</a></span>&#160; <span class="keyword">template</span>&lt;detail::value_t&gt; <span class="keyword">friend</span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">detail::external_constructor</a>;</div>
<div class="line"><a name="l14712"></a><span class="lineno">14712</span>&#160; friend ::nlohmann::json_pointer&lt;basic_json&gt;;</div>
<div class="line"><a name="l14713"></a><span class="lineno">14713</span>&#160; friend ::nlohmann::detail::parser&lt;basic_json&gt;;</div>
<div class="line"><a name="l14714"></a><span class="lineno">14714</span>&#160; friend ::nlohmann::detail::serializer&lt;basic_json&gt;;</div>
<div class="line"><a name="l14715"></a><span class="lineno">14715</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l14716"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a842e5c7ca096025c18b11e715d3401f4">14716</a></span>&#160; <span class="keyword">friend</span> class ::nlohmann::detail::iter_impl;</div>
<div class="line"><a name="l14717"></a><span class="lineno">14717</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CharType&gt;</div>
<div class="line"><a name="l14718"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a69d491bbda88ade6d3c7a2b11309e8bf">14718</a></span>&#160; <span class="keyword">friend</span> class ::nlohmann::detail::binary_writer;</div>
<div class="line"><a name="l14719"></a><span class="lineno">14719</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> SAX&gt;</div>
<div class="line"><a name="l14720"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a3226693341c251507fec5d6f4fa5ce79">14720</a></span>&#160; <span class="keyword">friend</span> class ::nlohmann::detail::binary_reader;</div>
<div class="line"><a name="l14721"></a><span class="lineno">14721</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l14722"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a47aabb1eceae32e8a6e8e7f0ff34be60">14722</a></span>&#160; <span class="keyword">friend</span> class ::nlohmann::detail::json_sax_dom_parser;</div>
<div class="line"><a name="l14723"></a><span class="lineno">14723</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l14724"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a95574da8d12905ea99dc348934c837da">14724</a></span>&#160; <span class="keyword">friend</span> class ::nlohmann::detail::json_sax_dom_callback_parser;</div>
<div class="line"><a name="l14725"></a><span class="lineno">14725</span>&#160; </div>
<div class="line"><a name="l14727"></a><span class="lineno">14727</span>&#160; <span class="keyword">using</span> basic_json_t = <a class="code" href="json_8hpp.html#a80b7254e63f199a1f656f07ae551f632">NLOHMANN_BASIC_JSON_TPL</a>;</div>
<div class="line"><a name="l14728"></a><span class="lineno">14728</span>&#160; </div>
<div class="line"><a name="l14729"></a><span class="lineno">14729</span>&#160; <span class="comment">// convenience aliases for types residing in namespace detail;</span></div>
<div class="line"><a name="l14730"></a><span class="lineno">14730</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a> = <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">::nlohmann::detail::lexer&lt;basic_json&gt;</a>;</div>
<div class="line"><a name="l14731"></a><span class="lineno">14731</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a> = <a class="code" href="classnlohmann_1_1detail_1_1parser.html">::nlohmann::detail::parser&lt;basic_json&gt;</a>;</div>
<div class="line"><a name="l14732"></a><span class="lineno">14732</span>&#160; </div>
<div class="line"><a name="l14733"></a><span class="lineno">14733</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> = <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">::nlohmann::detail::primitive_iterator_t</a>;</div>
<div class="line"><a name="l14734"></a><span class="lineno">14734</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l14735"></a><span class="lineno">14735</span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html">internal_iterator</a> = <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html">::nlohmann::detail::internal_iterator&lt;BasicJsonType&gt;</a>;</div>
<div class="line"><a name="l14736"></a><span class="lineno">14736</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType&gt;</div>
<div class="line"><a name="l14737"></a><span class="lineno">14737</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> = <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">::nlohmann::detail::iter_impl&lt;BasicJsonType&gt;</a>;</div>
<div class="line"><a name="l14738"></a><span class="lineno">14738</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Iterator&gt;</div>
<div class="line"><a name="l14739"></a><span class="lineno">14739</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy</a> = <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">::nlohmann::detail::iteration_proxy&lt;Iterator&gt;</a>;</div>
<div class="line"><a name="l14740"></a><span class="lineno">14740</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Base&gt; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">::nlohmann::detail::json_reverse_iterator&lt;Base&gt;</a>;</div>
<div class="line"><a name="l14741"></a><span class="lineno">14741</span>&#160; </div>
<div class="line"><a name="l14742"></a><span class="lineno">14742</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
<div class="line"><a name="l14743"></a><span class="lineno">14743</span>&#160; <span class="keyword">using</span> output_adapter_t = <a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">::nlohmann::detail::output_adapter_t&lt;CharType&gt;</a>;</div>
<div class="line"><a name="l14744"></a><span class="lineno">14744</span>&#160; </div>
<div class="line"><a name="l14745"></a><span class="lineno">14745</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a> = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">::nlohmann::detail::binary_reader&lt;basic_json&gt;</a>;</div>
<div class="line"><a name="l14746"></a><span class="lineno">14746</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer</a> = <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">::nlohmann::detail::binary_writer&lt;basic_json, CharType&gt;</a>;</div>
<div class="line"><a name="l14747"></a><span class="lineno">14747</span>&#160; </div>
<div class="line"><a name="l14748"></a><span class="lineno">14748</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a> = <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">::nlohmann::detail::serializer&lt;basic_json&gt;</a>;</div>
<div class="line"><a name="l14749"></a><span class="lineno">14749</span>&#160; </div>
<div class="line"><a name="l14750"></a><span class="lineno">14750</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l14751"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">14751</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">detail::value_t</a>;</div>
<div class="line"><a name="l14753"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6886a5001f5b449ad316101a311ce536">14753</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> = <a class="code" href="classnlohmann_1_1json__pointer.html">::nlohmann::json_pointer&lt;basic_json&gt;</a>;</div>
<div class="line"><a name="l14754"></a><span class="lineno">14754</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> SFINAE&gt;</div>
<div class="line"><a name="l14755"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7768841baaaa7a21098a401c932efaff">14755</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a7768841baaaa7a21098a401c932efaff">json_serializer</a> = JSONSerializer&lt;T, SFINAE&gt;;</div>
<div class="line"><a name="l14757"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae56b6bfbb1f6d2f43611f2ada4f9e5f2">14757</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">error_handler_t</a> = <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">detail::error_handler_t</a>;</div>
<div class="line"><a name="l14759"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">14759</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> = std::initializer_list&lt;detail::json_ref&lt;basic_json&gt;&gt;;</div>
<div class="line"><a name="l14760"></a><span class="lineno">14760</span>&#160; </div>
<div class="line"><a name="l14761"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2ddbac818a4c84a7377b1bbd25363588">14761</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> = <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">detail::input_format_t</a>;</div>
<div class="line"><a name="l14763"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aa865c3eb68b6ebdd647173774d2b5cdb">14763</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1json__sax.html">json_sax_t</a> = <a class="code" href="structnlohmann_1_1json__sax.html">json_sax&lt;basic_json&gt;</a>;</div>
<div class="line"><a name="l14764"></a><span class="lineno">14764</span>&#160; </div>
<div class="line"><a name="l14766"></a><span class="lineno">14766</span>&#160; <span class="comment">// exceptions //</span></div>
<div class="line"><a name="l14768"></a><span class="lineno">14768</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l14772"></a><span class="lineno">14772</span>&#160; </div>
<div class="line"><a name="l14774"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9a0aced019cb1d65bb49703406c84970">14774</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a> = <a class="code" href="classnlohmann_1_1detail_1_1exception.html">detail::exception</a>;</div>
<div class="line"><a name="l14776"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af1efc2468e6022be6e35fc2944cabe4d">14776</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a> = <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">detail::parse_error</a>;</div>
<div class="line"><a name="l14778"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac13d32f7cbd02d616e71d8dc30dadcbf">14778</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">invalid_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">detail::invalid_iterator</a>;</div>
<div class="line"><a name="l14780"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4010e8e268fefd86da773c10318f2902">14780</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1type__error.html">type_error</a> = <a class="code" href="classnlohmann_1_1detail_1_1type__error.html">detail::type_error</a>;</div>
<div class="line"><a name="l14782"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a28f7c2f087274a0012eb7a2333ee1580">14782</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a> = <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">detail::out_of_range</a>;</div>
<div class="line"><a name="l14784"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a3333a5a8714912adda33a35b369f7b3d">14784</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1other__error.html">other_error</a> = <a class="code" href="classnlohmann_1_1detail_1_1other__error.html">detail::other_error</a>;</div>
<div class="line"><a name="l14785"></a><span class="lineno">14785</span>&#160; </div>
<div class="line"><a name="l14787"></a><span class="lineno">14787</span>&#160; </div>
<div class="line"><a name="l14788"></a><span class="lineno">14788</span>&#160; </div>
<div class="line"><a name="l14790"></a><span class="lineno">14790</span>&#160; <span class="comment">// container types //</span></div>
<div class="line"><a name="l14792"></a><span class="lineno">14792</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l14797"></a><span class="lineno">14797</span>&#160; </div>
<div class="line"><a name="l14799"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2b3297873b70c080837e8eedc4fec32f">14799</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html">value_type</a> = <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>;</div>
<div class="line"><a name="l14800"></a><span class="lineno">14800</span>&#160; </div>
<div class="line"><a name="l14802"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac6a5eddd156c776ac75ff54cfe54a5bc">14802</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> = <a class="code" href="classnlohmann_1_1basic__json.html">value_type</a>&amp;;</div>
<div class="line"><a name="l14804"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4057c5425f4faacfe39a8046871786ca">14804</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> = <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">value_type</a>&amp;;</div>
<div class="line"><a name="l14805"></a><span class="lineno">14805</span>&#160; </div>
<div class="line"><a name="l14807"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">14807</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">difference_type</a> = std::ptrdiff_t;</div>
<div class="line"><a name="l14809"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">14809</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> = std::size_t;</div>
<div class="line"><a name="l14810"></a><span class="lineno">14810</span>&#160; </div>
<div class="line"><a name="l14812"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a86ce930490cf7773b26f5ef49c04a350">14812</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a86ce930490cf7773b26f5ef49c04a350">allocator_type</a> = AllocatorType&lt;basic_json&gt;;</div>
<div class="line"><a name="l14813"></a><span class="lineno">14813</span>&#160; </div>
<div class="line"><a name="l14815"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aefee1f777198c68724bd127e0c8abbe4">14815</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#aefee1f777198c68724bd127e0c8abbe4">pointer</a> = <span class="keyword">typename</span> std::allocator_traits&lt;allocator_type&gt;::pointer;</div>
<div class="line"><a name="l14817"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aff3d5cd2a75612364b888d8693231b58">14817</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#aff3d5cd2a75612364b888d8693231b58">const_pointer</a> = <span class="keyword">typename</span> std::allocator_traits&lt;allocator_type&gt;::const_pointer;</div>
<div class="line"><a name="l14818"></a><span class="lineno">14818</span>&#160; </div>
<div class="line"><a name="l14820"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a099316232c76c034030a38faa6e34dca">14820</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl&lt;basic_json&gt;</a>;</div>
<div class="line"><a name="l14822"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a41a70cf9993951836d129bb1c2b3126a">14822</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl&lt;const basic_json&gt;</a>;</div>
<div class="line"><a name="l14824"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac223d5560c2b05a208c88de67376c5f2">14824</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">reverse_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator&lt;typename basic_json::iterator&gt;</a>;</div>
<div class="line"><a name="l14826"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a72be3c24bfa24f0993d6c11af03e7404">14826</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">const_reverse_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator&lt;typename basic_json::const_iterator&gt;</a>;</div>
<div class="line"><a name="l14827"></a><span class="lineno">14827</span>&#160; </div>
<div class="line"><a name="l14829"></a><span class="lineno">14829</span>&#160; </div>
<div class="line"><a name="l14830"></a><span class="lineno">14830</span>&#160; </div>
<div class="line"><a name="l14834"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af4ac14224fbdd29d3547fcb11bb55c8f">14834</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html#a86ce930490cf7773b26f5ef49c04a350">allocator_type</a> <a class="code" href="classnlohmann_1_1basic__json.html#af4ac14224fbdd29d3547fcb11bb55c8f">get_allocator</a>()</div>
<div class="line"><a name="l14835"></a><span class="lineno">14835</span>&#160; {</div>
<div class="line"><a name="l14836"></a><span class="lineno">14836</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a86ce930490cf7773b26f5ef49c04a350">allocator_type</a>();</div>
<div class="line"><a name="l14837"></a><span class="lineno">14837</span>&#160; }</div>
<div class="line"><a name="l14838"></a><span class="lineno">14838</span>&#160; </div>
<div class="line"><a name="l14865"></a><span class="lineno">14865</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l14866"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a677318a34ade7f8177a2784c06aa3671">14866</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a677318a34ade7f8177a2784c06aa3671">meta</a>()</div>
<div class="line"><a name="l14867"></a><span class="lineno">14867</span>&#160; {</div>
<div class="line"><a name="l14868"></a><span class="lineno">14868</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l14869"></a><span class="lineno">14869</span>&#160; </div>
<div class="line"><a name="l14870"></a><span class="lineno">14870</span>&#160; result[<span class="stringliteral">&quot;copyright&quot;</span>] = <span class="stringliteral">&quot;(C) 2013-2017 Niels Lohmann&quot;</span>;</div>
<div class="line"><a name="l14871"></a><span class="lineno">14871</span>&#160; result[<span class="stringliteral">&quot;name&quot;</span>] = <span class="stringliteral">&quot;JSON for Modern C++&quot;</span>;</div>
<div class="line"><a name="l14872"></a><span class="lineno">14872</span>&#160; result[<span class="stringliteral">&quot;url&quot;</span>] = <span class="stringliteral">&quot;https://github.com/nlohmann/json&quot;</span>;</div>
<div class="line"><a name="l14873"></a><span class="lineno">14873</span>&#160; result[<span class="stringliteral">&quot;version&quot;</span>][<span class="stringliteral">&quot;string&quot;</span>] =</div>
<div class="line"><a name="l14874"></a><span class="lineno">14874</span>&#160; <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(<a class="code" href="json_8hpp.html#a7c94253db90041af11dd946a49f0f8a4">NLOHMANN_JSON_VERSION_MAJOR</a>) + <span class="stringliteral">&quot;.&quot;</span> +</div>
<div class="line"><a name="l14875"></a><span class="lineno">14875</span>&#160; <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(<a class="code" href="json_8hpp.html#ab5ca1e164894d78d3276d2e5fe58c5e3">NLOHMANN_JSON_VERSION_MINOR</a>) + <span class="stringliteral">&quot;.&quot;</span> +</div>
<div class="line"><a name="l14876"></a><span class="lineno">14876</span>&#160; <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(<a class="code" href="json_8hpp.html#a307e0238ebc35e99ea45c68823eb83eb">NLOHMANN_JSON_VERSION_PATCH</a>);</div>
<div class="line"><a name="l14877"></a><span class="lineno">14877</span>&#160; result[<span class="stringliteral">&quot;version&quot;</span>][<span class="stringliteral">&quot;major&quot;</span>] = <a class="code" href="json_8hpp.html#a7c94253db90041af11dd946a49f0f8a4">NLOHMANN_JSON_VERSION_MAJOR</a>;</div>
<div class="line"><a name="l14878"></a><span class="lineno">14878</span>&#160; result[<span class="stringliteral">&quot;version&quot;</span>][<span class="stringliteral">&quot;minor&quot;</span>] = <a class="code" href="json_8hpp.html#ab5ca1e164894d78d3276d2e5fe58c5e3">NLOHMANN_JSON_VERSION_MINOR</a>;</div>
<div class="line"><a name="l14879"></a><span class="lineno">14879</span>&#160; result[<span class="stringliteral">&quot;version&quot;</span>][<span class="stringliteral">&quot;patch&quot;</span>] = <a class="code" href="json_8hpp.html#a307e0238ebc35e99ea45c68823eb83eb">NLOHMANN_JSON_VERSION_PATCH</a>;</div>
<div class="line"><a name="l14880"></a><span class="lineno">14880</span>&#160; </div>
<div class="line"><a name="l14881"></a><span class="lineno">14881</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l14882"></a><span class="lineno">14882</span>&#160; result[<span class="stringliteral">&quot;platform&quot;</span>] = <span class="stringliteral">&quot;win32&quot;</span>;</div>
<div class="line"><a name="l14883"></a><span class="lineno">14883</span>&#160;<span class="preprocessor">#elif defined __linux__</span></div>
<div class="line"><a name="l14884"></a><span class="lineno">14884</span>&#160; result[<span class="stringliteral">&quot;platform&quot;</span>] = <span class="stringliteral">&quot;linux&quot;</span>;</div>
<div class="line"><a name="l14885"></a><span class="lineno">14885</span>&#160;<span class="preprocessor">#elif defined __APPLE__</span></div>
<div class="line"><a name="l14886"></a><span class="lineno">14886</span>&#160; result[<span class="stringliteral">&quot;platform&quot;</span>] = <span class="stringliteral">&quot;apple&quot;</span>;</div>
<div class="line"><a name="l14887"></a><span class="lineno">14887</span>&#160;<span class="preprocessor">#elif defined __unix__</span></div>
<div class="line"><a name="l14888"></a><span class="lineno">14888</span>&#160; result[<span class="stringliteral">&quot;platform&quot;</span>] = <span class="stringliteral">&quot;unix&quot;</span>;</div>
<div class="line"><a name="l14889"></a><span class="lineno">14889</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l14890"></a><span class="lineno">14890</span>&#160; result[<span class="stringliteral">&quot;platform&quot;</span>] = <span class="stringliteral">&quot;unknown&quot;</span>;</div>
<div class="line"><a name="l14891"></a><span class="lineno">14891</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l14892"></a><span class="lineno">14892</span>&#160; </div>
<div class="line"><a name="l14893"></a><span class="lineno">14893</span>&#160;<span class="preprocessor">#if defined(__ICC) || defined(__INTEL_COMPILER)</span></div>
<div class="line"><a name="l14894"></a><span class="lineno">14894</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>] = {{<span class="stringliteral">&quot;family&quot;</span>, <span class="stringliteral">&quot;icc&quot;</span>}, {<span class="stringliteral">&quot;version&quot;</span>, __INTEL_COMPILER}};</div>
<div class="line"><a name="l14895"></a><span class="lineno">14895</span>&#160;<span class="preprocessor">#elif defined(__clang__)</span></div>
<div class="line"><a name="l14896"></a><span class="lineno">14896</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>] = {{<span class="stringliteral">&quot;family&quot;</span>, <span class="stringliteral">&quot;clang&quot;</span>}, {<span class="stringliteral">&quot;version&quot;</span>, __clang_version__}};</div>
<div class="line"><a name="l14897"></a><span class="lineno">14897</span>&#160;<span class="preprocessor">#elif defined(__GNUC__) || defined(__GNUG__)</span></div>
<div class="line"><a name="l14898"></a><span class="lineno">14898</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>] = {{<span class="stringliteral">&quot;family&quot;</span>, <span class="stringliteral">&quot;gcc&quot;</span>}, {<span class="stringliteral">&quot;version&quot;</span>, <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(__GNUC__) + <span class="stringliteral">&quot;.&quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(__GNUC_MINOR__) + <span class="stringliteral">&quot;.&quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(__GNUC_PATCHLEVEL__)}};</div>
<div class="line"><a name="l14899"></a><span class="lineno">14899</span>&#160;<span class="preprocessor">#elif defined(__HP_cc) || defined(__HP_aCC)</span></div>
<div class="line"><a name="l14900"></a><span class="lineno">14900</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>] = <span class="stringliteral">&quot;hp&quot;</span></div>
<div class="line"><a name="l14901"></a><span class="lineno">14901</span>&#160;<span class="preprocessor">#elif defined(__IBMCPP__)</span></div>
<div class="line"><a name="l14902"></a><span class="lineno">14902</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>] = {{<span class="stringliteral">&quot;family&quot;</span>, <span class="stringliteral">&quot;ilecpp&quot;</span>}, {<span class="stringliteral">&quot;version&quot;</span>, __IBMCPP__}};</div>
<div class="line"><a name="l14903"></a><span class="lineno">14903</span>&#160;<span class="preprocessor">#elif defined(_MSC_VER)</span></div>
<div class="line"><a name="l14904"></a><span class="lineno">14904</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>] = {{<span class="stringliteral">&quot;family&quot;</span>, <span class="stringliteral">&quot;msvc&quot;</span>}, {<span class="stringliteral">&quot;version&quot;</span>, _MSC_VER}};</div>
<div class="line"><a name="l14905"></a><span class="lineno">14905</span>&#160;<span class="preprocessor">#elif defined(__PGI)</span></div>
<div class="line"><a name="l14906"></a><span class="lineno">14906</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>] = {{<span class="stringliteral">&quot;family&quot;</span>, <span class="stringliteral">&quot;pgcpp&quot;</span>}, {<span class="stringliteral">&quot;version&quot;</span>, __PGI}};</div>
<div class="line"><a name="l14907"></a><span class="lineno">14907</span>&#160;<span class="preprocessor">#elif defined(__SUNPRO_CC)</span></div>
<div class="line"><a name="l14908"></a><span class="lineno">14908</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>] = {{<span class="stringliteral">&quot;family&quot;</span>, <span class="stringliteral">&quot;sunpro&quot;</span>}, {<span class="stringliteral">&quot;version&quot;</span>, __SUNPRO_CC}};</div>
<div class="line"><a name="l14909"></a><span class="lineno">14909</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l14910"></a><span class="lineno">14910</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>] = {{<span class="stringliteral">&quot;family&quot;</span>, <span class="stringliteral">&quot;unknown&quot;</span>}, {<span class="stringliteral">&quot;version&quot;</span>, <span class="stringliteral">&quot;unknown&quot;</span>}};</div>
<div class="line"><a name="l14911"></a><span class="lineno">14911</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l14912"></a><span class="lineno">14912</span>&#160; </div>
<div class="line"><a name="l14913"></a><span class="lineno">14913</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l14914"></a><span class="lineno">14914</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>][<span class="stringliteral">&quot;c++&quot;</span>] = <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(__cplusplus);</div>
<div class="line"><a name="l14915"></a><span class="lineno">14915</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l14916"></a><span class="lineno">14916</span>&#160; result[<span class="stringliteral">&quot;compiler&quot;</span>][<span class="stringliteral">&quot;c++&quot;</span>] = <span class="stringliteral">&quot;unknown&quot;</span>;</div>
<div class="line"><a name="l14917"></a><span class="lineno">14917</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l14918"></a><span class="lineno">14918</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l14919"></a><span class="lineno">14919</span>&#160; }</div>
<div class="line"><a name="l14920"></a><span class="lineno">14920</span>&#160; </div>
<div class="line"><a name="l14921"></a><span class="lineno">14921</span>&#160; </div>
<div class="line"><a name="l14923"></a><span class="lineno">14923</span>&#160; <span class="comment">// JSON value data types //</span></div>
<div class="line"><a name="l14925"></a><span class="lineno">14925</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l14930"></a><span class="lineno">14930</span>&#160; </div>
<div class="line"><a name="l14931"></a><span class="lineno">14931</span>&#160;<span class="preprocessor">#if defined(JSON_HAS_CPP_14)</span></div>
<div class="line"><a name="l14932"></a><span class="lineno">14932</span>&#160; <span class="comment">// Use transparent comparator if possible, combined with perfect forwarding</span></div>
<div class="line"><a name="l14933"></a><span class="lineno">14933</span>&#160; <span class="comment">// on find() and count() calls prevents unnecessary string construction.</span></div>
<div class="line"><a name="l14934"></a><span class="lineno">14934</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#abed9e77c5fcfc925fcdd489911069c3b">object_comparator_t</a> = std::less&lt;&gt;;</div>
<div class="line"><a name="l14935"></a><span class="lineno">14935</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l14936"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abed9e77c5fcfc925fcdd489911069c3b">14936</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#abed9e77c5fcfc925fcdd489911069c3b">object_comparator_t</a> = std::less&lt;StringType&gt;;</div>
<div class="line"><a name="l14937"></a><span class="lineno">14937</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l14938"></a><span class="lineno">14938</span>&#160; </div>
<div class="line"><a name="l15022"></a><span class="lineno">15022</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a> = ObjectType&lt;StringType,</div>
<div class="line"><a name="l15023"></a><span class="lineno">15023</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>,</div>
<div class="line"><a name="l15024"></a><span class="lineno">15024</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#abed9e77c5fcfc925fcdd489911069c3b">object_comparator_t</a>,</div>
<div class="line"><a name="l15025"></a><span class="lineno">15025</span>&#160; AllocatorType&lt;std::pair&lt;<span class="keyword">const</span> StringType,</div>
<div class="line"><a name="l15026"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">15026</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&gt;&gt;&gt;;</div>
<div class="line"><a name="l15027"></a><span class="lineno">15027</span>&#160; </div>
<div class="line"><a name="l15072"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">15072</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a> = ArrayType&lt;basic_json, AllocatorType&lt;basic_json&gt;&gt;;</div>
<div class="line"><a name="l15073"></a><span class="lineno">15073</span>&#160; </div>
<div class="line"><a name="l15125"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">15125</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a> = StringType;</div>
<div class="line"><a name="l15126"></a><span class="lineno">15126</span>&#160; </div>
<div class="line"><a name="l15151"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">15151</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a> = BooleanType;</div>
<div class="line"><a name="l15152"></a><span class="lineno">15152</span>&#160; </div>
<div class="line"><a name="l15223"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">15223</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a> = NumberIntegerType;</div>
<div class="line"><a name="l15224"></a><span class="lineno">15224</span>&#160; </div>
<div class="line"><a name="l15294"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">15294</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a> = NumberUnsignedType;</div>
<div class="line"><a name="l15295"></a><span class="lineno">15295</span>&#160; </div>
<div class="line"><a name="l15362"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">15362</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a> = NumberFloatType;</div>
<div class="line"><a name="l15363"></a><span class="lineno">15363</span>&#160; </div>
<div class="line"><a name="l15365"></a><span class="lineno">15365</span>&#160; </div>
<div class="line"><a name="l15366"></a><span class="lineno">15366</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l15367"></a><span class="lineno">15367</span>&#160; </div>
<div class="line"><a name="l15369"></a><span class="lineno">15369</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l15370"></a><span class="lineno">15370</span>&#160; <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
<div class="line"><a name="l15371"></a><span class="lineno">15371</span>&#160; <span class="keyword">static</span> T* create(Args&amp;&amp; ... args)</div>
<div class="line"><a name="l15372"></a><span class="lineno">15372</span>&#160; {</div>
<div class="line"><a name="l15373"></a><span class="lineno">15373</span>&#160; AllocatorType&lt;T&gt; alloc;</div>
<div class="line"><a name="l15374"></a><span class="lineno">15374</span>&#160; <span class="keyword">using</span> AllocatorTraits = std::allocator_traits&lt;AllocatorType&lt;T&gt;&gt;;</div>
<div class="line"><a name="l15375"></a><span class="lineno">15375</span>&#160; </div>
<div class="line"><a name="l15376"></a><span class="lineno">15376</span>&#160; <span class="keyword">auto</span> deleter = [&amp;](T * <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>)</div>
<div class="line"><a name="l15377"></a><span class="lineno">15377</span>&#160; {</div>
<div class="line"><a name="l15378"></a><span class="lineno">15378</span>&#160; AllocatorTraits::deallocate(alloc, <span class="keywordtype">object</span>, 1);</div>
<div class="line"><a name="l15379"></a><span class="lineno">15379</span>&#160; };</div>
<div class="line"><a name="l15380"></a><span class="lineno">15380</span>&#160; std::unique_ptr&lt;T, decltype(deleter)&gt; <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>(AllocatorTraits::allocate(alloc, 1), deleter);</div>
<div class="line"><a name="l15381"></a><span class="lineno">15381</span>&#160; AllocatorTraits::construct(alloc, <span class="keywordtype">object</span>.<a class="code" href="classnlohmann_1_1basic__json.html#a6b187a22994c12c8cae0dd5ee99dc85e">get</a>(), std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a name="l15382"></a><span class="lineno">15382</span>&#160; assert(<span class="keywordtype">object</span> != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l15383"></a><span class="lineno">15383</span>&#160; <span class="keywordflow">return</span> <span class="keywordtype">object</span>.release();</div>
<div class="line"><a name="l15384"></a><span class="lineno">15384</span>&#160; }</div>
<div class="line"><a name="l15385"></a><span class="lineno">15385</span>&#160; </div>
<div class="line"><a name="l15387"></a><span class="lineno">15387</span>&#160; <span class="comment">// JSON value storage //</span></div>
<div class="line"><a name="l15389"></a><span class="lineno">15389</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l15414"></a><span class="lineno">15414</span>&#160; <span class="keyword">union </span>json_value</div>
<div class="line"><a name="l15415"></a><span class="lineno">15415</span>&#160; {</div>
<div class="line"><a name="l15417"></a><span class="lineno">15417</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>* <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>;</div>
<div class="line"><a name="l15419"></a><span class="lineno">15419</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>* <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>;</div>
<div class="line"><a name="l15421"></a><span class="lineno">15421</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>* string;</div>
<div class="line"><a name="l15423"></a><span class="lineno">15423</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a> boolean;</div>
<div class="line"><a name="l15425"></a><span class="lineno">15425</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a> number_integer;</div>
<div class="line"><a name="l15427"></a><span class="lineno">15427</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a> number_unsigned;</div>
<div class="line"><a name="l15429"></a><span class="lineno">15429</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a> number_float;</div>
<div class="line"><a name="l15430"></a><span class="lineno">15430</span>&#160; </div>
<div class="line"><a name="l15432"></a><span class="lineno">15432</span>&#160; json_value() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l15434"></a><span class="lineno">15434</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a> v) noexcept : boolean(v) {}</div>
<div class="line"><a name="l15436"></a><span class="lineno">15436</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a> v) noexcept : number_integer(v) {}</div>
<div class="line"><a name="l15438"></a><span class="lineno">15438</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a> v) noexcept : <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">number_unsigned</a>(v) {}</div>
<div class="line"><a name="l15440"></a><span class="lineno">15440</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a> v) noexcept : <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">number_float</a>(v) {}</div>
<div class="line"><a name="l15442"></a><span class="lineno">15442</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">value_t</a> t)</div>
<div class="line"><a name="l15443"></a><span class="lineno">15443</span>&#160; {</div>
<div class="line"><a name="l15444"></a><span class="lineno">15444</span>&#160; <span class="keywordflow">switch</span> (t)</div>
<div class="line"><a name="l15445"></a><span class="lineno">15445</span>&#160; {</div>
<div class="line"><a name="l15446"></a><span class="lineno">15446</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l15447"></a><span class="lineno">15447</span>&#160; {</div>
<div class="line"><a name="l15448"></a><span class="lineno">15448</span>&#160; <span class="keywordtype">object</span> = create&lt;object_t&gt;();</div>
<div class="line"><a name="l15449"></a><span class="lineno">15449</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15450"></a><span class="lineno">15450</span>&#160; }</div>
<div class="line"><a name="l15451"></a><span class="lineno">15451</span>&#160; </div>
<div class="line"><a name="l15452"></a><span class="lineno">15452</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l15453"></a><span class="lineno">15453</span>&#160; {</div>
<div class="line"><a name="l15454"></a><span class="lineno">15454</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a> = create&lt;array_t&gt;();</div>
<div class="line"><a name="l15455"></a><span class="lineno">15455</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15456"></a><span class="lineno">15456</span>&#160; }</div>
<div class="line"><a name="l15457"></a><span class="lineno">15457</span>&#160; </div>
<div class="line"><a name="l15458"></a><span class="lineno">15458</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l15459"></a><span class="lineno">15459</span>&#160; {</div>
<div class="line"><a name="l15460"></a><span class="lineno">15460</span>&#160; <span class="keywordtype">string</span> = create&lt;string_t&gt;(<span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l15461"></a><span class="lineno">15461</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15462"></a><span class="lineno">15462</span>&#160; }</div>
<div class="line"><a name="l15463"></a><span class="lineno">15463</span>&#160; </div>
<div class="line"><a name="l15464"></a><span class="lineno">15464</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l15465"></a><span class="lineno">15465</span>&#160; {</div>
<div class="line"><a name="l15466"></a><span class="lineno">15466</span>&#160; <span class="keywordtype">boolean</span> = <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>(<span class="keyword">false</span>);</div>
<div class="line"><a name="l15467"></a><span class="lineno">15467</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15468"></a><span class="lineno">15468</span>&#160; }</div>
<div class="line"><a name="l15469"></a><span class="lineno">15469</span>&#160; </div>
<div class="line"><a name="l15470"></a><span class="lineno">15470</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l15471"></a><span class="lineno">15471</span>&#160; {</div>
<div class="line"><a name="l15472"></a><span class="lineno">15472</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">number_integer</a> = <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a>(0);</div>
<div class="line"><a name="l15473"></a><span class="lineno">15473</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15474"></a><span class="lineno">15474</span>&#160; }</div>
<div class="line"><a name="l15475"></a><span class="lineno">15475</span>&#160; </div>
<div class="line"><a name="l15476"></a><span class="lineno">15476</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l15477"></a><span class="lineno">15477</span>&#160; {</div>
<div class="line"><a name="l15478"></a><span class="lineno">15478</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">number_unsigned</a> = <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a>(0);</div>
<div class="line"><a name="l15479"></a><span class="lineno">15479</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15480"></a><span class="lineno">15480</span>&#160; }</div>
<div class="line"><a name="l15481"></a><span class="lineno">15481</span>&#160; </div>
<div class="line"><a name="l15482"></a><span class="lineno">15482</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l15483"></a><span class="lineno">15483</span>&#160; {</div>
<div class="line"><a name="l15484"></a><span class="lineno">15484</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">number_float</a> = <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a>(0.0);</div>
<div class="line"><a name="l15485"></a><span class="lineno">15485</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15486"></a><span class="lineno">15486</span>&#160; }</div>
<div class="line"><a name="l15487"></a><span class="lineno">15487</span>&#160; </div>
<div class="line"><a name="l15488"></a><span class="lineno">15488</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l15489"></a><span class="lineno">15489</span>&#160; {</div>
<div class="line"><a name="l15490"></a><span class="lineno">15490</span>&#160; <span class="keywordtype">object</span> = <span class="keyword">nullptr</span>; <span class="comment">// silence warning, see #821</span></div>
<div class="line"><a name="l15491"></a><span class="lineno">15491</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15492"></a><span class="lineno">15492</span>&#160; }</div>
<div class="line"><a name="l15493"></a><span class="lineno">15493</span>&#160; </div>
<div class="line"><a name="l15494"></a><span class="lineno">15494</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l15495"></a><span class="lineno">15495</span>&#160; {</div>
<div class="line"><a name="l15496"></a><span class="lineno">15496</span>&#160; <span class="keywordtype">object</span> = <span class="keyword">nullptr</span>; <span class="comment">// silence warning, see #821</span></div>
<div class="line"><a name="l15497"></a><span class="lineno">15497</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(t == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>))</div>
<div class="line"><a name="l15498"></a><span class="lineno">15498</span>&#160; {</div>
<div class="line"><a name="l15499"></a><span class="lineno">15499</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1other__error.html#a87e8ab894e8c85c0d97a0919782d3683">other_error::create</a>(500, <span class="stringliteral">&quot;961c151d2e87f2686a955a9be24d316f1362bf21 3.7.3&quot;</span>)); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l15500"></a><span class="lineno">15500</span>&#160; }</div>
<div class="line"><a name="l15501"></a><span class="lineno">15501</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15502"></a><span class="lineno">15502</span>&#160; }</div>
<div class="line"><a name="l15503"></a><span class="lineno">15503</span>&#160; }</div>
<div class="line"><a name="l15504"></a><span class="lineno">15504</span>&#160; }</div>
<div class="line"><a name="l15505"></a><span class="lineno">15505</span>&#160; </div>
<div class="line"><a name="l15507"></a><span class="lineno">15507</span>&#160; json_value(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>&amp; <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
<div class="line"><a name="l15508"></a><span class="lineno">15508</span>&#160; {</div>
<div class="line"><a name="l15509"></a><span class="lineno">15509</span>&#160; <span class="keywordtype">string</span> = create&lt;string_t&gt;(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>);</div>
<div class="line"><a name="l15510"></a><span class="lineno">15510</span>&#160; }</div>
<div class="line"><a name="l15511"></a><span class="lineno">15511</span>&#160; </div>
<div class="line"><a name="l15513"></a><span class="lineno">15513</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>&amp;&amp; <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
<div class="line"><a name="l15514"></a><span class="lineno">15514</span>&#160; {</div>
<div class="line"><a name="l15515"></a><span class="lineno">15515</span>&#160; <span class="keywordtype">string</span> = create&lt;string_t&gt;(std::move(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>));</div>
<div class="line"><a name="l15516"></a><span class="lineno">15516</span>&#160; }</div>
<div class="line"><a name="l15517"></a><span class="lineno">15517</span>&#160; </div>
<div class="line"><a name="l15519"></a><span class="lineno">15519</span>&#160; json_value(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>&amp; <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
<div class="line"><a name="l15520"></a><span class="lineno">15520</span>&#160; {</div>
<div class="line"><a name="l15521"></a><span class="lineno">15521</span>&#160; <span class="keywordtype">object</span> = create&lt;object_t&gt;(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>);</div>
<div class="line"><a name="l15522"></a><span class="lineno">15522</span>&#160; }</div>
<div class="line"><a name="l15523"></a><span class="lineno">15523</span>&#160; </div>
<div class="line"><a name="l15525"></a><span class="lineno">15525</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>&amp;&amp; <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
<div class="line"><a name="l15526"></a><span class="lineno">15526</span>&#160; {</div>
<div class="line"><a name="l15527"></a><span class="lineno">15527</span>&#160; <span class="keywordtype">object</span> = create&lt;object_t&gt;(std::move(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>));</div>
<div class="line"><a name="l15528"></a><span class="lineno">15528</span>&#160; }</div>
<div class="line"><a name="l15529"></a><span class="lineno">15529</span>&#160; </div>
<div class="line"><a name="l15531"></a><span class="lineno">15531</span>&#160; json_value(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>&amp; <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
<div class="line"><a name="l15532"></a><span class="lineno">15532</span>&#160; {</div>
<div class="line"><a name="l15533"></a><span class="lineno">15533</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a> = create&lt;array_t&gt;(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>);</div>
<div class="line"><a name="l15534"></a><span class="lineno">15534</span>&#160; }</div>
<div class="line"><a name="l15535"></a><span class="lineno">15535</span>&#160; </div>
<div class="line"><a name="l15537"></a><span class="lineno">15537</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>&amp;&amp; <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
<div class="line"><a name="l15538"></a><span class="lineno">15538</span>&#160; {</div>
<div class="line"><a name="l15539"></a><span class="lineno">15539</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a> = create&lt;array_t&gt;(std::move(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>));</div>
<div class="line"><a name="l15540"></a><span class="lineno">15540</span>&#160; }</div>
<div class="line"><a name="l15541"></a><span class="lineno">15541</span>&#160; </div>
<div class="line"><a name="l15542"></a><span class="lineno">15542</span>&#160; <span class="keywordtype">void</span> destroy(<a class="code" href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">value_t</a> t) noexcept</div>
<div class="line"><a name="l15543"></a><span class="lineno">15543</span>&#160; {</div>
<div class="line"><a name="l15544"></a><span class="lineno">15544</span>&#160; <span class="comment">// flatten the current json_value to a heap-allocated stack</span></div>
<div class="line"><a name="l15545"></a><span class="lineno">15545</span>&#160; std::vector&lt;basic_json&gt; stack;</div>
<div class="line"><a name="l15546"></a><span class="lineno">15546</span>&#160; </div>
<div class="line"><a name="l15547"></a><span class="lineno">15547</span>&#160; <span class="comment">// move the top-level items to stack</span></div>
<div class="line"><a name="l15548"></a><span class="lineno">15548</span>&#160; <span class="keywordflow">if</span> (t == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>)</div>
<div class="line"><a name="l15549"></a><span class="lineno">15549</span>&#160; {</div>
<div class="line"><a name="l15550"></a><span class="lineno">15550</span>&#160; stack.reserve(<a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>-&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">size</a>());</div>
<div class="line"><a name="l15551"></a><span class="lineno">15551</span>&#160; std::move(<a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>-&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>(), <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>-&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>(), std::back_inserter(stack));</div>
<div class="line"><a name="l15552"></a><span class="lineno">15552</span>&#160; }</div>
<div class="line"><a name="l15553"></a><span class="lineno">15553</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>)</div>
<div class="line"><a name="l15554"></a><span class="lineno">15554</span>&#160; {</div>
<div class="line"><a name="l15555"></a><span class="lineno">15555</span>&#160; stack.reserve(<a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>-&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">size</a>());</div>
<div class="line"><a name="l15556"></a><span class="lineno">15556</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; it : *<span class="keywordtype">object</span>)</div>
<div class="line"><a name="l15557"></a><span class="lineno">15557</span>&#160; {</div>
<div class="line"><a name="l15558"></a><span class="lineno">15558</span>&#160; stack.push_back(std::move(it.second));</div>
<div class="line"><a name="l15559"></a><span class="lineno">15559</span>&#160; }</div>
<div class="line"><a name="l15560"></a><span class="lineno">15560</span>&#160; }</div>
<div class="line"><a name="l15561"></a><span class="lineno">15561</span>&#160; </div>
<div class="line"><a name="l15562"></a><span class="lineno">15562</span>&#160; <span class="keywordflow">while</span> (not stack.empty())</div>
<div class="line"><a name="l15563"></a><span class="lineno">15563</span>&#160; {</div>
<div class="line"><a name="l15564"></a><span class="lineno">15564</span>&#160; <span class="comment">// move the last item to local variable to be processed</span></div>
<div class="line"><a name="l15565"></a><span class="lineno">15565</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a> current_item(std::move(stack.back()));</div>
<div class="line"><a name="l15566"></a><span class="lineno">15566</span>&#160; stack.pop_back();</div>
<div class="line"><a name="l15567"></a><span class="lineno">15567</span>&#160; </div>
<div class="line"><a name="l15568"></a><span class="lineno">15568</span>&#160; <span class="comment">// if current_item is array/object, move</span></div>
<div class="line"><a name="l15569"></a><span class="lineno">15569</span>&#160; <span class="comment">// its children to the stack to be processed later</span></div>
<div class="line"><a name="l15570"></a><span class="lineno">15570</span>&#160; <span class="keywordflow">if</span> (current_item.is_array())</div>
<div class="line"><a name="l15571"></a><span class="lineno">15571</span>&#160; {</div>
<div class="line"><a name="l15572"></a><span class="lineno">15572</span>&#160; std::move(current_item.m_value.array-&gt;begin(), current_item.m_value.array-&gt;end(),</div>
<div class="line"><a name="l15573"></a><span class="lineno">15573</span>&#160; std::back_inserter(stack));</div>
<div class="line"><a name="l15574"></a><span class="lineno">15574</span>&#160; </div>
<div class="line"><a name="l15575"></a><span class="lineno">15575</span>&#160; current_item.m_value.array-&gt;clear();</div>
<div class="line"><a name="l15576"></a><span class="lineno">15576</span>&#160; }</div>
<div class="line"><a name="l15577"></a><span class="lineno">15577</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current_item.is_object())</div>
<div class="line"><a name="l15578"></a><span class="lineno">15578</span>&#160; {</div>
<div class="line"><a name="l15579"></a><span class="lineno">15579</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; it : *current_item.m_value.object)</div>
<div class="line"><a name="l15580"></a><span class="lineno">15580</span>&#160; {</div>
<div class="line"><a name="l15581"></a><span class="lineno">15581</span>&#160; stack.push_back(std::move(it.second));</div>
<div class="line"><a name="l15582"></a><span class="lineno">15582</span>&#160; }</div>
<div class="line"><a name="l15583"></a><span class="lineno">15583</span>&#160; </div>
<div class="line"><a name="l15584"></a><span class="lineno">15584</span>&#160; current_item.m_value.object-&gt;clear();</div>
<div class="line"><a name="l15585"></a><span class="lineno">15585</span>&#160; }</div>
<div class="line"><a name="l15586"></a><span class="lineno">15586</span>&#160; </div>
<div class="line"><a name="l15587"></a><span class="lineno">15587</span>&#160; <span class="comment">// it&#39;s now safe that current_item get destructed</span></div>
<div class="line"><a name="l15588"></a><span class="lineno">15588</span>&#160; <span class="comment">// since it doesn&#39;t have any children</span></div>
<div class="line"><a name="l15589"></a><span class="lineno">15589</span>&#160; }</div>
<div class="line"><a name="l15590"></a><span class="lineno">15590</span>&#160; </div>
<div class="line"><a name="l15591"></a><span class="lineno">15591</span>&#160; <span class="keywordflow">switch</span> (t)</div>
<div class="line"><a name="l15592"></a><span class="lineno">15592</span>&#160; {</div>
<div class="line"><a name="l15593"></a><span class="lineno">15593</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l15594"></a><span class="lineno">15594</span>&#160; {</div>
<div class="line"><a name="l15595"></a><span class="lineno">15595</span>&#160; AllocatorType&lt;object_t&gt; alloc;</div>
<div class="line"><a name="l15596"></a><span class="lineno">15596</span>&#160; std::allocator_traits&lt;decltype(alloc)&gt;::destroy(alloc, <span class="keywordtype">object</span>);</div>
<div class="line"><a name="l15597"></a><span class="lineno">15597</span>&#160; std::allocator_traits&lt;decltype(alloc)&gt;::deallocate(alloc, <span class="keywordtype">object</span>, 1);</div>
<div class="line"><a name="l15598"></a><span class="lineno">15598</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15599"></a><span class="lineno">15599</span>&#160; }</div>
<div class="line"><a name="l15600"></a><span class="lineno">15600</span>&#160; </div>
<div class="line"><a name="l15601"></a><span class="lineno">15601</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l15602"></a><span class="lineno">15602</span>&#160; {</div>
<div class="line"><a name="l15603"></a><span class="lineno">15603</span>&#160; AllocatorType&lt;array_t&gt; alloc;</div>
<div class="line"><a name="l15604"></a><span class="lineno">15604</span>&#160; std::allocator_traits&lt;decltype(alloc)&gt;::destroy(alloc, <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>);</div>
<div class="line"><a name="l15605"></a><span class="lineno">15605</span>&#160; std::allocator_traits&lt;decltype(alloc)&gt;::deallocate(alloc, <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>, 1);</div>
<div class="line"><a name="l15606"></a><span class="lineno">15606</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15607"></a><span class="lineno">15607</span>&#160; }</div>
<div class="line"><a name="l15608"></a><span class="lineno">15608</span>&#160; </div>
<div class="line"><a name="l15609"></a><span class="lineno">15609</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l15610"></a><span class="lineno">15610</span>&#160; {</div>
<div class="line"><a name="l15611"></a><span class="lineno">15611</span>&#160; AllocatorType&lt;string_t&gt; alloc;</div>
<div class="line"><a name="l15612"></a><span class="lineno">15612</span>&#160; std::allocator_traits&lt;decltype(alloc)&gt;::destroy(alloc, <span class="keywordtype">string</span>);</div>
<div class="line"><a name="l15613"></a><span class="lineno">15613</span>&#160; std::allocator_traits&lt;decltype(alloc)&gt;::deallocate(alloc, <span class="keywordtype">string</span>, 1);</div>
<div class="line"><a name="l15614"></a><span class="lineno">15614</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15615"></a><span class="lineno">15615</span>&#160; }</div>
<div class="line"><a name="l15616"></a><span class="lineno">15616</span>&#160; </div>
<div class="line"><a name="l15617"></a><span class="lineno">15617</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l15618"></a><span class="lineno">15618</span>&#160; {</div>
<div class="line"><a name="l15619"></a><span class="lineno">15619</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15620"></a><span class="lineno">15620</span>&#160; }</div>
<div class="line"><a name="l15621"></a><span class="lineno">15621</span>&#160; }</div>
<div class="line"><a name="l15622"></a><span class="lineno">15622</span>&#160; }</div>
<div class="line"><a name="l15623"></a><span class="lineno">15623</span>&#160; };</div>
<div class="line"><a name="l15624"></a><span class="lineno">15624</span>&#160; </div>
<div class="line"><a name="l15634"></a><span class="lineno">15634</span>&#160; <span class="keywordtype">void</span> assert_invariant() const noexcept</div>
<div class="line"><a name="l15635"></a><span class="lineno">15635</span>&#160; {</div>
<div class="line"><a name="l15636"></a><span class="lineno">15636</span>&#160; assert(m_type != <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a> or m_value.object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l15637"></a><span class="lineno">15637</span>&#160; assert(m_type != <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a> or m_value.array != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l15638"></a><span class="lineno">15638</span>&#160; assert(m_type != <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a> or m_value.string != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l15639"></a><span class="lineno">15639</span>&#160; }</div>
<div class="line"><a name="l15640"></a><span class="lineno">15640</span>&#160; </div>
<div class="line"><a name="l15641"></a><span class="lineno">15641</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l15643"></a><span class="lineno">15643</span>&#160; <span class="comment">// JSON parser callback //</span></div>
<div class="line"><a name="l15645"></a><span class="lineno">15645</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l15661"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aaceba2e4cf75fc983bb75c78c8742e65">15661</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#aaceba2e4cf75fc983bb75c78c8742e65">parse_event_t</a> = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe">parser::parse_event_t</a>;</div>
<div class="line"><a name="l15662"></a><span class="lineno">15662</span>&#160; </div>
<div class="line"><a name="l15712"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab4f78c5f9fd25172eeec84482e03f5b7">15712</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab4f78c5f9fd25172eeec84482e03f5b7">parser_callback_t</a> = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1">parser::parser_callback_t</a>;</div>
<div class="line"><a name="l15713"></a><span class="lineno">15713</span>&#160; </div>
<div class="line"><a name="l15715"></a><span class="lineno">15715</span>&#160; <span class="comment">// constructors //</span></div>
<div class="line"><a name="l15717"></a><span class="lineno">15717</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l15722"></a><span class="lineno">15722</span>&#160; </div>
<div class="line"><a name="l15752"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">15752</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> v)</div>
<div class="line"><a name="l15753"></a><span class="lineno">15753</span>&#160; : m_type(v), m_value(v)</div>
<div class="line"><a name="l15754"></a><span class="lineno">15754</span>&#160; {</div>
<div class="line"><a name="l15755"></a><span class="lineno">15755</span>&#160; assert_invariant();</div>
<div class="line"><a name="l15756"></a><span class="lineno">15756</span>&#160; }</div>
<div class="line"><a name="l15757"></a><span class="lineno">15757</span>&#160; </div>
<div class="line"><a name="l15776"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae9be9e956bfc4658f35d17c6aa72b063">15776</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ae9be9e956bfc4658f35d17c6aa72b063">basic_json</a>(std::nullptr_t = <span class="keyword">nullptr</span>) noexcept</div>
<div class="line"><a name="l15777"></a><span class="lineno">15777</span>&#160; : <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::null)</div>
<div class="line"><a name="l15778"></a><span class="lineno">15778</span>&#160; {</div>
<div class="line"><a name="l15779"></a><span class="lineno">15779</span>&#160; assert_invariant();</div>
<div class="line"><a name="l15780"></a><span class="lineno">15780</span>&#160; }</div>
<div class="line"><a name="l15781"></a><span class="lineno">15781</span>&#160; </div>
<div class="line"><a name="l15839"></a><span class="lineno">15839</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> CompatibleType,</div>
<div class="line"><a name="l15840"></a><span class="lineno">15840</span>&#160; <span class="keyword">typename</span> U = <a class="code" href="namespacenlohmann_1_1detail.html#a53a082eedad9f4729fcd8fed552a21f7">detail::uncvref_t&lt;CompatibleType&gt;</a>,</div>
<div class="line"><a name="l15841"></a><span class="lineno">15841</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a>&lt;</div>
<div class="line"><a name="l15842"></a><span class="lineno">15842</span>&#160; not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">detail::is_basic_json&lt;U&gt;::value</a> and <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__type.html">detail::is_compatible_type&lt;basic_json_t, U&gt;::value</a>, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l15843"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7639e0834df2bc719a04ffea89b31abc">15843</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a7639e0834df2bc719a04ffea89b31abc">basic_json</a>(CompatibleType &amp;&amp; val) noexcept(noexcept(</div>
<div class="line"><a name="l15844"></a><span class="lineno">15844</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer&lt;U&gt;::to_json</a>(std::declval&lt;basic_json_t&amp;&gt;(),</div>
<div class="line"><a name="l15845"></a><span class="lineno">15845</span>&#160; std::forward&lt;CompatibleType&gt;(val))))</div>
<div class="line"><a name="l15846"></a><span class="lineno">15846</span>&#160; {</div>
<div class="line"><a name="l15847"></a><span class="lineno">15847</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer&lt;U&gt;::to_json</a>(*<span class="keyword">this</span>, std::forward&lt;CompatibleType&gt;(val));</div>
<div class="line"><a name="l15848"></a><span class="lineno">15848</span>&#160; assert_invariant();</div>
<div class="line"><a name="l15849"></a><span class="lineno">15849</span>&#160; }</div>
<div class="line"><a name="l15850"></a><span class="lineno">15850</span>&#160; </div>
<div class="line"><a name="l15877"></a><span class="lineno">15877</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> BasicJsonType,</div>
<div class="line"><a name="l15878"></a><span class="lineno">15878</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a>&lt;</div>
<div class="line"><a name="l15879"></a><span class="lineno">15879</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">detail::is_basic_json&lt;BasicJsonType&gt;::value</a> and not std::is_same&lt;basic_json, BasicJsonType&gt;::value, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l15880"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aa16dc469c842fa8a0aaf6f5a95c46bb3">15880</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#aa16dc469c842fa8a0aaf6f5a95c46bb3">basic_json</a>(<span class="keyword">const</span> BasicJsonType&amp; val)</div>
<div class="line"><a name="l15881"></a><span class="lineno">15881</span>&#160; {</div>
<div class="line"><a name="l15882"></a><span class="lineno">15882</span>&#160; <span class="keyword">using</span> other_boolean_t = <span class="keyword">typename</span> BasicJsonType::boolean_t;</div>
<div class="line"><a name="l15883"></a><span class="lineno">15883</span>&#160; <span class="keyword">using</span> other_number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
<div class="line"><a name="l15884"></a><span class="lineno">15884</span>&#160; <span class="keyword">using</span> other_number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
<div class="line"><a name="l15885"></a><span class="lineno">15885</span>&#160; <span class="keyword">using</span> other_number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
<div class="line"><a name="l15886"></a><span class="lineno">15886</span>&#160; <span class="keyword">using</span> other_string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
<div class="line"><a name="l15887"></a><span class="lineno">15887</span>&#160; <span class="keyword">using</span> other_object_t = <span class="keyword">typename</span> BasicJsonType::object_t;</div>
<div class="line"><a name="l15888"></a><span class="lineno">15888</span>&#160; <span class="keyword">using</span> other_array_t = <span class="keyword">typename</span> BasicJsonType::array_t;</div>
<div class="line"><a name="l15889"></a><span class="lineno">15889</span>&#160; </div>
<div class="line"><a name="l15890"></a><span class="lineno">15890</span>&#160; <span class="keywordflow">switch</span> (val.type())</div>
<div class="line"><a name="l15891"></a><span class="lineno">15891</span>&#160; {</div>
<div class="line"><a name="l15892"></a><span class="lineno">15892</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l15893"></a><span class="lineno">15893</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer&lt;other_boolean_t&gt;::to_json</a>(*<span class="keyword">this</span>, val.template get&lt;other_boolean_t&gt;());</div>
<div class="line"><a name="l15894"></a><span class="lineno">15894</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15895"></a><span class="lineno">15895</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l15896"></a><span class="lineno">15896</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer&lt;other_number_float_t&gt;::to_json</a>(*<span class="keyword">this</span>, val.template get&lt;other_number_float_t&gt;());</div>
<div class="line"><a name="l15897"></a><span class="lineno">15897</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15898"></a><span class="lineno">15898</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l15899"></a><span class="lineno">15899</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer&lt;other_number_integer_t&gt;::to_json</a>(*<span class="keyword">this</span>, val.template get&lt;other_number_integer_t&gt;());</div>
<div class="line"><a name="l15900"></a><span class="lineno">15900</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15901"></a><span class="lineno">15901</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l15902"></a><span class="lineno">15902</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer&lt;other_number_unsigned_t&gt;::to_json</a>(*<span class="keyword">this</span>, val.template get&lt;other_number_unsigned_t&gt;());</div>
<div class="line"><a name="l15903"></a><span class="lineno">15903</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15904"></a><span class="lineno">15904</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l15905"></a><span class="lineno">15905</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer&lt;other_string_t&gt;::to_json</a>(*<span class="keyword">this</span>, val.template get_ref&lt;const other_string_t&amp;&gt;());</div>
<div class="line"><a name="l15906"></a><span class="lineno">15906</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15907"></a><span class="lineno">15907</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l15908"></a><span class="lineno">15908</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer&lt;other_object_t&gt;::to_json</a>(*<span class="keyword">this</span>, val.template get_ref&lt;const other_object_t&amp;&gt;());</div>
<div class="line"><a name="l15909"></a><span class="lineno">15909</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15910"></a><span class="lineno">15910</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l15911"></a><span class="lineno">15911</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer&lt;other_array_t&gt;::to_json</a>(*<span class="keyword">this</span>, val.template get_ref&lt;const other_array_t&amp;&gt;());</div>
<div class="line"><a name="l15912"></a><span class="lineno">15912</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15913"></a><span class="lineno">15913</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l15914"></a><span class="lineno">15914</span>&#160; *<span class="keyword">this</span> = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l15915"></a><span class="lineno">15915</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15916"></a><span class="lineno">15916</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>:</div>
<div class="line"><a name="l15917"></a><span class="lineno">15917</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>;</div>
<div class="line"><a name="l15918"></a><span class="lineno">15918</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l15919"></a><span class="lineno">15919</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l15920"></a><span class="lineno">15920</span>&#160; assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l15921"></a><span class="lineno">15921</span>&#160; }</div>
<div class="line"><a name="l15922"></a><span class="lineno">15922</span>&#160; assert_invariant();</div>
<div class="line"><a name="l15923"></a><span class="lineno">15923</span>&#160; }</div>
<div class="line"><a name="l15924"></a><span class="lineno">15924</span>&#160; </div>
<div class="line"><a name="l15999"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab5dfd9a2b2663b219641cb7fe59b6da2">15999</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ab5dfd9a2b2663b219641cb7fe59b6da2">basic_json</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> init,</div>
<div class="line"><a name="l16000"></a><span class="lineno">16000</span>&#160; <span class="keywordtype">bool</span> type_deduction = <span class="keyword">true</span>,</div>
<div class="line"><a name="l16001"></a><span class="lineno">16001</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> manual_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>)</div>
<div class="line"><a name="l16002"></a><span class="lineno">16002</span>&#160; {</div>
<div class="line"><a name="l16003"></a><span class="lineno">16003</span>&#160; <span class="comment">// check if each element is an array with two elements whose first</span></div>
<div class="line"><a name="l16004"></a><span class="lineno">16004</span>&#160; <span class="comment">// element is a string</span></div>
<div class="line"><a name="l16005"></a><span class="lineno">16005</span>&#160; <span class="keywordtype">bool</span> is_an_object = std::all_of(init.begin(), init.end(),</div>
<div class="line"><a name="l16006"></a><span class="lineno">16006</span>&#160; [](<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">detail::json_ref&lt;basic_json&gt;</a>&amp; element_ref)</div>
<div class="line"><a name="l16007"></a><span class="lineno">16007</span>&#160; {</div>
<div class="line"><a name="l16008"></a><span class="lineno">16008</span>&#160; return element_ref-&gt;is_array() and element_ref-&gt;size() == 2 and (*element_ref)[0].is_string();</div>
<div class="line"><a name="l16009"></a><span class="lineno">16009</span>&#160; });</div>
<div class="line"><a name="l16010"></a><span class="lineno">16010</span>&#160; </div>
<div class="line"><a name="l16011"></a><span class="lineno">16011</span>&#160; <span class="comment">// adjust type if type deduction is not wanted</span></div>
<div class="line"><a name="l16012"></a><span class="lineno">16012</span>&#160; <span class="keywordflow">if</span> (not type_deduction)</div>
<div class="line"><a name="l16013"></a><span class="lineno">16013</span>&#160; {</div>
<div class="line"><a name="l16014"></a><span class="lineno">16014</span>&#160; <span class="comment">// if array is wanted, do not create an object though possible</span></div>
<div class="line"><a name="l16015"></a><span class="lineno">16015</span>&#160; <span class="keywordflow">if</span> (manual_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>)</div>
<div class="line"><a name="l16016"></a><span class="lineno">16016</span>&#160; {</div>
<div class="line"><a name="l16017"></a><span class="lineno">16017</span>&#160; is_an_object = <span class="keyword">false</span>;</div>
<div class="line"><a name="l16018"></a><span class="lineno">16018</span>&#160; }</div>
<div class="line"><a name="l16019"></a><span class="lineno">16019</span>&#160; </div>
<div class="line"><a name="l16020"></a><span class="lineno">16020</span>&#160; <span class="comment">// if object is wanted but impossible, throw an exception</span></div>
<div class="line"><a name="l16021"></a><span class="lineno">16021</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(manual_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a> and not is_an_object))</div>
<div class="line"><a name="l16022"></a><span class="lineno">16022</span>&#160; {</div>
<div class="line"><a name="l16023"></a><span class="lineno">16023</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(301, <span class="stringliteral">&quot;cannot create object from initializer list&quot;</span>));</div>
<div class="line"><a name="l16024"></a><span class="lineno">16024</span>&#160; }</div>
<div class="line"><a name="l16025"></a><span class="lineno">16025</span>&#160; }</div>
<div class="line"><a name="l16026"></a><span class="lineno">16026</span>&#160; </div>
<div class="line"><a name="l16027"></a><span class="lineno">16027</span>&#160; <span class="keywordflow">if</span> (is_an_object)</div>
<div class="line"><a name="l16028"></a><span class="lineno">16028</span>&#160; {</div>
<div class="line"><a name="l16029"></a><span class="lineno">16029</span>&#160; <span class="comment">// the initializer list is a list of pairs -&gt; create object</span></div>
<div class="line"><a name="l16030"></a><span class="lineno">16030</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l16031"></a><span class="lineno">16031</span>&#160; m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l16032"></a><span class="lineno">16032</span>&#160; </div>
<div class="line"><a name="l16033"></a><span class="lineno">16033</span>&#160; std::for_each(init.begin(), init.end(), [<span class="keyword">this</span>](<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">detail::json_ref&lt;basic_json&gt;</a>&amp; element_ref)</div>
<div class="line"><a name="l16034"></a><span class="lineno">16034</span>&#160; {</div>
<div class="line"><a name="l16035"></a><span class="lineno">16035</span>&#160; auto element = element_ref.moved_or_copied();</div>
<div class="line"><a name="l16036"></a><span class="lineno">16036</span>&#160; m_value.object-&gt;emplace(</div>
<div class="line"><a name="l16037"></a><span class="lineno">16037</span>&#160; std::move(*((*element.m_value.array)[0].m_value.string)),</div>
<div class="line"><a name="l16038"></a><span class="lineno">16038</span>&#160; std::move((*element.m_value.array)[1]));</div>
<div class="line"><a name="l16039"></a><span class="lineno">16039</span>&#160; });</div>
<div class="line"><a name="l16040"></a><span class="lineno">16040</span>&#160; }</div>
<div class="line"><a name="l16041"></a><span class="lineno">16041</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l16042"></a><span class="lineno">16042</span>&#160; {</div>
<div class="line"><a name="l16043"></a><span class="lineno">16043</span>&#160; <span class="comment">// the initializer list describes an array -&gt; create array</span></div>
<div class="line"><a name="l16044"></a><span class="lineno">16044</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l16045"></a><span class="lineno">16045</span>&#160; m_value.array = create&lt;array_t&gt;(init.begin(), init.end());</div>
<div class="line"><a name="l16046"></a><span class="lineno">16046</span>&#160; }</div>
<div class="line"><a name="l16047"></a><span class="lineno">16047</span>&#160; </div>
<div class="line"><a name="l16048"></a><span class="lineno">16048</span>&#160; assert_invariant();</div>
<div class="line"><a name="l16049"></a><span class="lineno">16049</span>&#160; }</div>
<div class="line"><a name="l16050"></a><span class="lineno">16050</span>&#160; </div>
<div class="line"><a name="l16088"></a><span class="lineno">16088</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l16089"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">16089</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> init = {})</div>
<div class="line"><a name="l16090"></a><span class="lineno">16090</span>&#160; {</div>
<div class="line"><a name="l16091"></a><span class="lineno">16091</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(init, <span class="keyword">false</span>, <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>);</div>
<div class="line"><a name="l16092"></a><span class="lineno">16092</span>&#160; }</div>
<div class="line"><a name="l16093"></a><span class="lineno">16093</span>&#160; </div>
<div class="line"><a name="l16132"></a><span class="lineno">16132</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l16133"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">16133</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> init = {})</div>
<div class="line"><a name="l16134"></a><span class="lineno">16134</span>&#160; {</div>
<div class="line"><a name="l16135"></a><span class="lineno">16135</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(init, <span class="keyword">false</span>, <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>);</div>
<div class="line"><a name="l16136"></a><span class="lineno">16136</span>&#160; }</div>
<div class="line"><a name="l16137"></a><span class="lineno">16137</span>&#160; </div>
<div class="line"><a name="l16160"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab6816ae5100409254ed0a8bc21c387bb">16160</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ab6816ae5100409254ed0a8bc21c387bb">basic_json</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> cnt, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; val)</div>
<div class="line"><a name="l16161"></a><span class="lineno">16161</span>&#160; : m_type(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>)</div>
<div class="line"><a name="l16162"></a><span class="lineno">16162</span>&#160; {</div>
<div class="line"><a name="l16163"></a><span class="lineno">16163</span>&#160; m_value.array = create&lt;array_t&gt;(cnt, val);</div>
<div class="line"><a name="l16164"></a><span class="lineno">16164</span>&#160; assert_invariant();</div>
<div class="line"><a name="l16165"></a><span class="lineno">16165</span>&#160; }</div>
<div class="line"><a name="l16166"></a><span class="lineno">16166</span>&#160; </div>
<div class="line"><a name="l16222"></a><span class="lineno">16222</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>InputIT, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l16223"></a><span class="lineno">16223</span>&#160; std::is_same&lt;InputIT, typename basic_json_t::iterator&gt;::value or</div>
<div class="line"><a name="l16224"></a><span class="lineno">16224</span>&#160; std::is_same&lt;InputIT, typename basic_json_t::const_iterator&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l16225"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abe197e9f3184487805cfb5bba6fd5938">16225</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#abe197e9f3184487805cfb5bba6fd5938">basic_json</a>(InputIT first, InputIT last)</div>
<div class="line"><a name="l16226"></a><span class="lineno">16226</span>&#160; {</div>
<div class="line"><a name="l16227"></a><span class="lineno">16227</span>&#160; assert(first.m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l16228"></a><span class="lineno">16228</span>&#160; assert(last.m_object != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l16229"></a><span class="lineno">16229</span>&#160; </div>
<div class="line"><a name="l16230"></a><span class="lineno">16230</span>&#160; <span class="comment">// make sure iterator fits the current value</span></div>
<div class="line"><a name="l16231"></a><span class="lineno">16231</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(first.m_object != last.m_object))</div>
<div class="line"><a name="l16232"></a><span class="lineno">16232</span>&#160; {</div>
<div class="line"><a name="l16233"></a><span class="lineno">16233</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(201, <span class="stringliteral">&quot;iterators are not compatible&quot;</span>));</div>
<div class="line"><a name="l16234"></a><span class="lineno">16234</span>&#160; }</div>
<div class="line"><a name="l16235"></a><span class="lineno">16235</span>&#160; </div>
<div class="line"><a name="l16236"></a><span class="lineno">16236</span>&#160; <span class="comment">// copy type from first iterator</span></div>
<div class="line"><a name="l16237"></a><span class="lineno">16237</span>&#160; m_type = first.m_object-&gt;m_type;</div>
<div class="line"><a name="l16238"></a><span class="lineno">16238</span>&#160; </div>
<div class="line"><a name="l16239"></a><span class="lineno">16239</span>&#160; <span class="comment">// check if iterator range is complete for primitive values</span></div>
<div class="line"><a name="l16240"></a><span class="lineno">16240</span>&#160; <span class="keywordflow">switch</span> (m_type)</div>
<div class="line"><a name="l16241"></a><span class="lineno">16241</span>&#160; {</div>
<div class="line"><a name="l16242"></a><span class="lineno">16242</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l16243"></a><span class="lineno">16243</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l16244"></a><span class="lineno">16244</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l16245"></a><span class="lineno">16245</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l16246"></a><span class="lineno">16246</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l16247"></a><span class="lineno">16247</span>&#160; {</div>
<div class="line"><a name="l16248"></a><span class="lineno">16248</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not first.m_it.primitive_iterator.is_begin()</div>
<div class="line"><a name="l16249"></a><span class="lineno">16249</span>&#160; or not last.m_it.primitive_iterator.is_end()))</div>
<div class="line"><a name="l16250"></a><span class="lineno">16250</span>&#160; {</div>
<div class="line"><a name="l16251"></a><span class="lineno">16251</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(204, <span class="stringliteral">&quot;iterators out of range&quot;</span>));</div>
<div class="line"><a name="l16252"></a><span class="lineno">16252</span>&#160; }</div>
<div class="line"><a name="l16253"></a><span class="lineno">16253</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16254"></a><span class="lineno">16254</span>&#160; }</div>
<div class="line"><a name="l16255"></a><span class="lineno">16255</span>&#160; </div>
<div class="line"><a name="l16256"></a><span class="lineno">16256</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l16257"></a><span class="lineno">16257</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16258"></a><span class="lineno">16258</span>&#160; }</div>
<div class="line"><a name="l16259"></a><span class="lineno">16259</span>&#160; </div>
<div class="line"><a name="l16260"></a><span class="lineno">16260</span>&#160; <span class="keywordflow">switch</span> (m_type)</div>
<div class="line"><a name="l16261"></a><span class="lineno">16261</span>&#160; {</div>
<div class="line"><a name="l16262"></a><span class="lineno">16262</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l16263"></a><span class="lineno">16263</span>&#160; {</div>
<div class="line"><a name="l16264"></a><span class="lineno">16264</span>&#160; m_value.number_integer = first.m_object-&gt;m_value.number_integer;</div>
<div class="line"><a name="l16265"></a><span class="lineno">16265</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16266"></a><span class="lineno">16266</span>&#160; }</div>
<div class="line"><a name="l16267"></a><span class="lineno">16267</span>&#160; </div>
<div class="line"><a name="l16268"></a><span class="lineno">16268</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l16269"></a><span class="lineno">16269</span>&#160; {</div>
<div class="line"><a name="l16270"></a><span class="lineno">16270</span>&#160; m_value.number_unsigned = first.m_object-&gt;m_value.number_unsigned;</div>
<div class="line"><a name="l16271"></a><span class="lineno">16271</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16272"></a><span class="lineno">16272</span>&#160; }</div>
<div class="line"><a name="l16273"></a><span class="lineno">16273</span>&#160; </div>
<div class="line"><a name="l16274"></a><span class="lineno">16274</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l16275"></a><span class="lineno">16275</span>&#160; {</div>
<div class="line"><a name="l16276"></a><span class="lineno">16276</span>&#160; m_value.number_float = first.m_object-&gt;m_value.number_float;</div>
<div class="line"><a name="l16277"></a><span class="lineno">16277</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16278"></a><span class="lineno">16278</span>&#160; }</div>
<div class="line"><a name="l16279"></a><span class="lineno">16279</span>&#160; </div>
<div class="line"><a name="l16280"></a><span class="lineno">16280</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l16281"></a><span class="lineno">16281</span>&#160; {</div>
<div class="line"><a name="l16282"></a><span class="lineno">16282</span>&#160; m_value.boolean = first.m_object-&gt;m_value.boolean;</div>
<div class="line"><a name="l16283"></a><span class="lineno">16283</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16284"></a><span class="lineno">16284</span>&#160; }</div>
<div class="line"><a name="l16285"></a><span class="lineno">16285</span>&#160; </div>
<div class="line"><a name="l16286"></a><span class="lineno">16286</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l16287"></a><span class="lineno">16287</span>&#160; {</div>
<div class="line"><a name="l16288"></a><span class="lineno">16288</span>&#160; m_value = *first.m_object-&gt;m_value.string;</div>
<div class="line"><a name="l16289"></a><span class="lineno">16289</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16290"></a><span class="lineno">16290</span>&#160; }</div>
<div class="line"><a name="l16291"></a><span class="lineno">16291</span>&#160; </div>
<div class="line"><a name="l16292"></a><span class="lineno">16292</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l16293"></a><span class="lineno">16293</span>&#160; {</div>
<div class="line"><a name="l16294"></a><span class="lineno">16294</span>&#160; m_value.object = create&lt;object_t&gt;(first.m_it.object_iterator,</div>
<div class="line"><a name="l16295"></a><span class="lineno">16295</span>&#160; last.m_it.object_iterator);</div>
<div class="line"><a name="l16296"></a><span class="lineno">16296</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16297"></a><span class="lineno">16297</span>&#160; }</div>
<div class="line"><a name="l16298"></a><span class="lineno">16298</span>&#160; </div>
<div class="line"><a name="l16299"></a><span class="lineno">16299</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l16300"></a><span class="lineno">16300</span>&#160; {</div>
<div class="line"><a name="l16301"></a><span class="lineno">16301</span>&#160; m_value.array = create&lt;array_t&gt;(first.m_it.array_iterator,</div>
<div class="line"><a name="l16302"></a><span class="lineno">16302</span>&#160; last.m_it.array_iterator);</div>
<div class="line"><a name="l16303"></a><span class="lineno">16303</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16304"></a><span class="lineno">16304</span>&#160; }</div>
<div class="line"><a name="l16305"></a><span class="lineno">16305</span>&#160; </div>
<div class="line"><a name="l16306"></a><span class="lineno">16306</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l16307"></a><span class="lineno">16307</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(206, <span class="stringliteral">&quot;cannot construct with iterators from &quot;</span> +</div>
<div class="line"><a name="l16308"></a><span class="lineno">16308</span>&#160; std::string(first.m_object-&gt;type_name())));</div>
<div class="line"><a name="l16309"></a><span class="lineno">16309</span>&#160; }</div>
<div class="line"><a name="l16310"></a><span class="lineno">16310</span>&#160; </div>
<div class="line"><a name="l16311"></a><span class="lineno">16311</span>&#160; assert_invariant();</div>
<div class="line"><a name="l16312"></a><span class="lineno">16312</span>&#160; }</div>
<div class="line"><a name="l16313"></a><span class="lineno">16313</span>&#160; </div>
<div class="line"><a name="l16314"></a><span class="lineno">16314</span>&#160; </div>
<div class="line"><a name="l16316"></a><span class="lineno">16316</span>&#160; <span class="comment">// other constructors and destructor //</span></div>
<div class="line"><a name="l16318"></a><span class="lineno">16318</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l16320"></a><span class="lineno">16320</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">detail::json_ref&lt;basic_json&gt;</a>&amp; ref)</div>
<div class="line"><a name="l16321"></a><span class="lineno">16321</span>&#160; : <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>(ref.moved_or_copied())</div>
<div class="line"><a name="l16322"></a><span class="lineno">16322</span>&#160; {}</div>
<div class="line"><a name="l16323"></a><span class="lineno">16323</span>&#160; </div>
<div class="line"><a name="l16349"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af5de621bcf646c332343f9c1e011126c">16349</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#af5de621bcf646c332343f9c1e011126c">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; other)</div>
<div class="line"><a name="l16350"></a><span class="lineno">16350</span>&#160; : m_type(other.m_type)</div>
<div class="line"><a name="l16351"></a><span class="lineno">16351</span>&#160; {</div>
<div class="line"><a name="l16352"></a><span class="lineno">16352</span>&#160; <span class="comment">// check of passed value is valid</span></div>
<div class="line"><a name="l16353"></a><span class="lineno">16353</span>&#160; other.assert_invariant();</div>
<div class="line"><a name="l16354"></a><span class="lineno">16354</span>&#160; </div>
<div class="line"><a name="l16355"></a><span class="lineno">16355</span>&#160; <span class="keywordflow">switch</span> (m_type)</div>
<div class="line"><a name="l16356"></a><span class="lineno">16356</span>&#160; {</div>
<div class="line"><a name="l16357"></a><span class="lineno">16357</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l16358"></a><span class="lineno">16358</span>&#160; {</div>
<div class="line"><a name="l16359"></a><span class="lineno">16359</span>&#160; m_value = *other.m_value.object;</div>
<div class="line"><a name="l16360"></a><span class="lineno">16360</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16361"></a><span class="lineno">16361</span>&#160; }</div>
<div class="line"><a name="l16362"></a><span class="lineno">16362</span>&#160; </div>
<div class="line"><a name="l16363"></a><span class="lineno">16363</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l16364"></a><span class="lineno">16364</span>&#160; {</div>
<div class="line"><a name="l16365"></a><span class="lineno">16365</span>&#160; m_value = *other.m_value.array;</div>
<div class="line"><a name="l16366"></a><span class="lineno">16366</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16367"></a><span class="lineno">16367</span>&#160; }</div>
<div class="line"><a name="l16368"></a><span class="lineno">16368</span>&#160; </div>
<div class="line"><a name="l16369"></a><span class="lineno">16369</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l16370"></a><span class="lineno">16370</span>&#160; {</div>
<div class="line"><a name="l16371"></a><span class="lineno">16371</span>&#160; m_value = *other.m_value.string;</div>
<div class="line"><a name="l16372"></a><span class="lineno">16372</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16373"></a><span class="lineno">16373</span>&#160; }</div>
<div class="line"><a name="l16374"></a><span class="lineno">16374</span>&#160; </div>
<div class="line"><a name="l16375"></a><span class="lineno">16375</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l16376"></a><span class="lineno">16376</span>&#160; {</div>
<div class="line"><a name="l16377"></a><span class="lineno">16377</span>&#160; m_value = other.m_value.boolean;</div>
<div class="line"><a name="l16378"></a><span class="lineno">16378</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16379"></a><span class="lineno">16379</span>&#160; }</div>
<div class="line"><a name="l16380"></a><span class="lineno">16380</span>&#160; </div>
<div class="line"><a name="l16381"></a><span class="lineno">16381</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l16382"></a><span class="lineno">16382</span>&#160; {</div>
<div class="line"><a name="l16383"></a><span class="lineno">16383</span>&#160; m_value = other.m_value.number_integer;</div>
<div class="line"><a name="l16384"></a><span class="lineno">16384</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16385"></a><span class="lineno">16385</span>&#160; }</div>
<div class="line"><a name="l16386"></a><span class="lineno">16386</span>&#160; </div>
<div class="line"><a name="l16387"></a><span class="lineno">16387</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l16388"></a><span class="lineno">16388</span>&#160; {</div>
<div class="line"><a name="l16389"></a><span class="lineno">16389</span>&#160; m_value = other.m_value.number_unsigned;</div>
<div class="line"><a name="l16390"></a><span class="lineno">16390</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16391"></a><span class="lineno">16391</span>&#160; }</div>
<div class="line"><a name="l16392"></a><span class="lineno">16392</span>&#160; </div>
<div class="line"><a name="l16393"></a><span class="lineno">16393</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l16394"></a><span class="lineno">16394</span>&#160; {</div>
<div class="line"><a name="l16395"></a><span class="lineno">16395</span>&#160; m_value = other.m_value.number_float;</div>
<div class="line"><a name="l16396"></a><span class="lineno">16396</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16397"></a><span class="lineno">16397</span>&#160; }</div>
<div class="line"><a name="l16398"></a><span class="lineno">16398</span>&#160; </div>
<div class="line"><a name="l16399"></a><span class="lineno">16399</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l16400"></a><span class="lineno">16400</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l16401"></a><span class="lineno">16401</span>&#160; }</div>
<div class="line"><a name="l16402"></a><span class="lineno">16402</span>&#160; </div>
<div class="line"><a name="l16403"></a><span class="lineno">16403</span>&#160; assert_invariant();</div>
<div class="line"><a name="l16404"></a><span class="lineno">16404</span>&#160; }</div>
<div class="line"><a name="l16405"></a><span class="lineno">16405</span>&#160; </div>
<div class="line"><a name="l16432"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9a06d1efd50a00f4889f831f851ce124">16432</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a9a06d1efd50a00f4889f831f851ce124">basic_json</a>(<a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp;&amp; other) noexcept</div>
<div class="line"><a name="l16433"></a><span class="lineno">16433</span>&#160; : m_type(std::move(other.m_type)),</div>
<div class="line"><a name="l16434"></a><span class="lineno">16434</span>&#160; m_value(std::move(other.m_value))</div>
<div class="line"><a name="l16435"></a><span class="lineno">16435</span>&#160; {</div>
<div class="line"><a name="l16436"></a><span class="lineno">16436</span>&#160; <span class="comment">// check that passed value is valid</span></div>
<div class="line"><a name="l16437"></a><span class="lineno">16437</span>&#160; other.assert_invariant();</div>
<div class="line"><a name="l16438"></a><span class="lineno">16438</span>&#160; </div>
<div class="line"><a name="l16439"></a><span class="lineno">16439</span>&#160; <span class="comment">// invalidate payload</span></div>
<div class="line"><a name="l16440"></a><span class="lineno">16440</span>&#160; other.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
<div class="line"><a name="l16441"></a><span class="lineno">16441</span>&#160; other.m_value = {};</div>
<div class="line"><a name="l16442"></a><span class="lineno">16442</span>&#160; </div>
<div class="line"><a name="l16443"></a><span class="lineno">16443</span>&#160; assert_invariant();</div>
<div class="line"><a name="l16444"></a><span class="lineno">16444</span>&#160; }</div>
<div class="line"><a name="l16445"></a><span class="lineno">16445</span>&#160; </div>
<div class="line"><a name="l16469"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a849368ca71af3a93d576939d486f61c7">16469</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; <a class="code" href="classnlohmann_1_1basic__json.html#a849368ca71af3a93d576939d486f61c7">operator=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> other) noexcept (</div>
<div class="line"><a name="l16470"></a><span class="lineno">16470</span>&#160; std::is_nothrow_move_constructible&lt;value_t&gt;::value and</div>
<div class="line"><a name="l16471"></a><span class="lineno">16471</span>&#160; std::is_nothrow_move_assignable&lt;value_t&gt;::value and</div>
<div class="line"><a name="l16472"></a><span class="lineno">16472</span>&#160; std::is_nothrow_move_constructible&lt;json_value&gt;::value and</div>
<div class="line"><a name="l16473"></a><span class="lineno">16473</span>&#160; std::is_nothrow_move_assignable&lt;json_value&gt;::value</div>
<div class="line"><a name="l16474"></a><span class="lineno">16474</span>&#160; )</div>
<div class="line"><a name="l16475"></a><span class="lineno">16475</span>&#160; {</div>
<div class="line"><a name="l16476"></a><span class="lineno">16476</span>&#160; <span class="comment">// check that passed value is valid</span></div>
<div class="line"><a name="l16477"></a><span class="lineno">16477</span>&#160; other.assert_invariant();</div>
<div class="line"><a name="l16478"></a><span class="lineno">16478</span>&#160; </div>
<div class="line"><a name="l16479"></a><span class="lineno">16479</span>&#160; <span class="keyword">using</span> std::swap;</div>
<div class="line"><a name="l16480"></a><span class="lineno">16480</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a8c9d932353e1ab98a7dc2fc27e002031">swap</a>(m_type, other.m_type);</div>
<div class="line"><a name="l16481"></a><span class="lineno">16481</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a8c9d932353e1ab98a7dc2fc27e002031">swap</a>(m_value, other.m_value);</div>
<div class="line"><a name="l16482"></a><span class="lineno">16482</span>&#160; </div>
<div class="line"><a name="l16483"></a><span class="lineno">16483</span>&#160; assert_invariant();</div>
<div class="line"><a name="l16484"></a><span class="lineno">16484</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l16485"></a><span class="lineno">16485</span>&#160; }</div>
<div class="line"><a name="l16486"></a><span class="lineno">16486</span>&#160; </div>
<div class="line"><a name="l16502"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aba01953d5d90e676d504863b8d9fdde5">16502</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#aba01953d5d90e676d504863b8d9fdde5">~basic_json</a>() noexcept</div>
<div class="line"><a name="l16503"></a><span class="lineno">16503</span>&#160; {</div>
<div class="line"><a name="l16504"></a><span class="lineno">16504</span>&#160; assert_invariant();</div>
<div class="line"><a name="l16505"></a><span class="lineno">16505</span>&#160; m_value.destroy(m_type);</div>
<div class="line"><a name="l16506"></a><span class="lineno">16506</span>&#160; }</div>
<div class="line"><a name="l16507"></a><span class="lineno">16507</span>&#160; </div>
<div class="line"><a name="l16509"></a><span class="lineno">16509</span>&#160; </div>
<div class="line"><a name="l16510"></a><span class="lineno">16510</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l16512"></a><span class="lineno">16512</span>&#160; <span class="comment">// object inspection //</span></div>
<div class="line"><a name="l16514"></a><span class="lineno">16514</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l16518"></a><span class="lineno">16518</span>&#160; </div>
<div class="line"><a name="l16560"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a50ec80b02d0f3f51130d4abb5d1cfdc5">16560</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a> <a class="code" href="classnlohmann_1_1basic__json.html#a50ec80b02d0f3f51130d4abb5d1cfdc5">dump</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> indent = -1,</div>
<div class="line"><a name="l16561"></a><span class="lineno">16561</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> indent_char = <span class="charliteral">&#39; &#39;</span>,</div>
<div class="line"><a name="l16562"></a><span class="lineno">16562</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> ensure_ascii = <span class="keyword">false</span>,</div>
<div class="line"><a name="l16563"></a><span class="lineno">16563</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">error_handler_t</a> error_handler = error_handler_t::strict)<span class="keyword"> const</span></div>
<div class="line"><a name="l16564"></a><span class="lineno">16564</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l16565"></a><span class="lineno">16565</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a> result;</div>
<div class="line"><a name="l16566"></a><span class="lineno">16566</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a> s(<a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter&lt;char, string_t&gt;</a>(result), indent_char, error_handler);</div>
<div class="line"><a name="l16567"></a><span class="lineno">16567</span>&#160; </div>
<div class="line"><a name="l16568"></a><span class="lineno">16568</span>&#160; <span class="keywordflow">if</span> (indent &gt;= 0)</div>
<div class="line"><a name="l16569"></a><span class="lineno">16569</span>&#160; {</div>
<div class="line"><a name="l16570"></a><span class="lineno">16570</span>&#160; s.<a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(*<span class="keyword">this</span>, <span class="keyword">true</span>, ensure_ascii, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(indent));</div>
<div class="line"><a name="l16571"></a><span class="lineno">16571</span>&#160; }</div>
<div class="line"><a name="l16572"></a><span class="lineno">16572</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l16573"></a><span class="lineno">16573</span>&#160; {</div>
<div class="line"><a name="l16574"></a><span class="lineno">16574</span>&#160; s.<a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(*<span class="keyword">this</span>, <span class="keyword">false</span>, ensure_ascii, 0);</div>
<div class="line"><a name="l16575"></a><span class="lineno">16575</span>&#160; }</div>
<div class="line"><a name="l16576"></a><span class="lineno">16576</span>&#160; </div>
<div class="line"><a name="l16577"></a><span class="lineno">16577</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l16578"></a><span class="lineno">16578</span>&#160; }</div>
<div class="line"><a name="l16579"></a><span class="lineno">16579</span>&#160; </div>
<div class="line"><a name="l16612"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">16612</a></span>&#160; constexpr <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> <a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">type</a>() const noexcept</div>
<div class="line"><a name="l16613"></a><span class="lineno">16613</span>&#160; {</div>
<div class="line"><a name="l16614"></a><span class="lineno">16614</span>&#160; <span class="keywordflow">return</span> m_type;</div>
<div class="line"><a name="l16615"></a><span class="lineno">16615</span>&#160; }</div>
<div class="line"><a name="l16616"></a><span class="lineno">16616</span>&#160; </div>
<div class="line"><a name="l16642"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6362b88718eb5c6d4fed6a61eed44b95">16642</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a6362b88718eb5c6d4fed6a61eed44b95">is_primitive</a>() const noexcept</div>
<div class="line"><a name="l16643"></a><span class="lineno">16643</span>&#160; {</div>
<div class="line"><a name="l16644"></a><span class="lineno">16644</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">is_boolean</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#a2b9852390abb4b1ef5fac6984e2fc0f3">is_number</a>();</div>
<div class="line"><a name="l16645"></a><span class="lineno">16645</span>&#160; }</div>
<div class="line"><a name="l16646"></a><span class="lineno">16646</span>&#160; </div>
<div class="line"><a name="l16669"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9f68a0af820c3ced7f9d17851ce4c22d">16669</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a9f68a0af820c3ced7f9d17851ce4c22d">is_structured</a>() const noexcept</div>
<div class="line"><a name="l16670"></a><span class="lineno">16670</span>&#160; {</div>
<div class="line"><a name="l16671"></a><span class="lineno">16671</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>();</div>
<div class="line"><a name="l16672"></a><span class="lineno">16672</span>&#160; }</div>
<div class="line"><a name="l16673"></a><span class="lineno">16673</span>&#160; </div>
<div class="line"><a name="l16691"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">16691</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() const noexcept</div>
<div class="line"><a name="l16692"></a><span class="lineno">16692</span>&#160; {</div>
<div class="line"><a name="l16693"></a><span class="lineno">16693</span>&#160; <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
<div class="line"><a name="l16694"></a><span class="lineno">16694</span>&#160; }</div>
<div class="line"><a name="l16695"></a><span class="lineno">16695</span>&#160; </div>
<div class="line"><a name="l16713"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">16713</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">is_boolean</a>() const noexcept</div>
<div class="line"><a name="l16714"></a><span class="lineno">16714</span>&#160; {</div>
<div class="line"><a name="l16715"></a><span class="lineno">16715</span>&#160; <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>;</div>
<div class="line"><a name="l16716"></a><span class="lineno">16716</span>&#160; }</div>
<div class="line"><a name="l16717"></a><span class="lineno">16717</span>&#160; </div>
<div class="line"><a name="l16743"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2b9852390abb4b1ef5fac6984e2fc0f3">16743</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a2b9852390abb4b1ef5fac6984e2fc0f3">is_number</a>() const noexcept</div>
<div class="line"><a name="l16744"></a><span class="lineno">16744</span>&#160; {</div>
<div class="line"><a name="l16745"></a><span class="lineno">16745</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">is_number_integer</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">is_number_float</a>();</div>
<div class="line"><a name="l16746"></a><span class="lineno">16746</span>&#160; }</div>
<div class="line"><a name="l16747"></a><span class="lineno">16747</span>&#160; </div>
<div class="line"><a name="l16772"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">16772</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">is_number_integer</a>() const noexcept</div>
<div class="line"><a name="l16773"></a><span class="lineno">16773</span>&#160; {</div>
<div class="line"><a name="l16774"></a><span class="lineno">16774</span>&#160; <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a> or m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>;</div>
<div class="line"><a name="l16775"></a><span class="lineno">16775</span>&#160; }</div>
<div class="line"><a name="l16776"></a><span class="lineno">16776</span>&#160; </div>
<div class="line"><a name="l16800"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abc7378cba0613a78b9aad1c8e7044bb0">16800</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#abc7378cba0613a78b9aad1c8e7044bb0">is_number_unsigned</a>() const noexcept</div>
<div class="line"><a name="l16801"></a><span class="lineno">16801</span>&#160; {</div>
<div class="line"><a name="l16802"></a><span class="lineno">16802</span>&#160; <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>;</div>
<div class="line"><a name="l16803"></a><span class="lineno">16803</span>&#160; }</div>
<div class="line"><a name="l16804"></a><span class="lineno">16804</span>&#160; </div>
<div class="line"><a name="l16828"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">16828</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">is_number_float</a>() const noexcept</div>
<div class="line"><a name="l16829"></a><span class="lineno">16829</span>&#160; {</div>
<div class="line"><a name="l16830"></a><span class="lineno">16830</span>&#160; <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>;</div>
<div class="line"><a name="l16831"></a><span class="lineno">16831</span>&#160; }</div>
<div class="line"><a name="l16832"></a><span class="lineno">16832</span>&#160; </div>
<div class="line"><a name="l16850"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">16850</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() const noexcept</div>
<div class="line"><a name="l16851"></a><span class="lineno">16851</span>&#160; {</div>
<div class="line"><a name="l16852"></a><span class="lineno">16852</span>&#160; <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l16853"></a><span class="lineno">16853</span>&#160; }</div>
<div class="line"><a name="l16854"></a><span class="lineno">16854</span>&#160; </div>
<div class="line"><a name="l16872"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">16872</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>() const noexcept</div>
<div class="line"><a name="l16873"></a><span class="lineno">16873</span>&#160; {</div>
<div class="line"><a name="l16874"></a><span class="lineno">16874</span>&#160; <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l16875"></a><span class="lineno">16875</span>&#160; }</div>
<div class="line"><a name="l16876"></a><span class="lineno">16876</span>&#160; </div>
<div class="line"><a name="l16894"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">16894</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>() const noexcept</div>
<div class="line"><a name="l16895"></a><span class="lineno">16895</span>&#160; {</div>
<div class="line"><a name="l16896"></a><span class="lineno">16896</span>&#160; <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>;</div>
<div class="line"><a name="l16897"></a><span class="lineno">16897</span>&#160; }</div>
<div class="line"><a name="l16898"></a><span class="lineno">16898</span>&#160; </div>
<div class="line"><a name="l16921"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aabe623bc8304c2ba92d96d91f390fab4">16921</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#aabe623bc8304c2ba92d96d91f390fab4">is_discarded</a>() const noexcept</div>
<div class="line"><a name="l16922"></a><span class="lineno">16922</span>&#160; {</div>
<div class="line"><a name="l16923"></a><span class="lineno">16923</span>&#160; <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>;</div>
<div class="line"><a name="l16924"></a><span class="lineno">16924</span>&#160; }</div>
<div class="line"><a name="l16925"></a><span class="lineno">16925</span>&#160; </div>
<div class="line"><a name="l16947"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a26ef3058e249f82a04f8ec18f7419027">16947</a></span>&#160; constexpr <span class="keyword">operator</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">value_t</a>() const noexcept</div>
<div class="line"><a name="l16948"></a><span class="lineno">16948</span>&#160; {</div>
<div class="line"><a name="l16949"></a><span class="lineno">16949</span>&#160; <span class="keywordflow">return</span> m_type;</div>
<div class="line"><a name="l16950"></a><span class="lineno">16950</span>&#160; }</div>
<div class="line"><a name="l16951"></a><span class="lineno">16951</span>&#160; </div>
<div class="line"><a name="l16953"></a><span class="lineno">16953</span>&#160; </div>
<div class="line"><a name="l16954"></a><span class="lineno">16954</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l16956"></a><span class="lineno">16956</span>&#160; <span class="comment">// value access //</span></div>
<div class="line"><a name="l16958"></a><span class="lineno">16958</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l16960"></a><span class="lineno">16960</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a> get_impl(<a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>* <span class="comment">/*unused*/</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l16961"></a><span class="lineno">16961</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l16962"></a><span class="lineno">16962</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">is_boolean</a>()))</div>
<div class="line"><a name="l16963"></a><span class="lineno">16963</span>&#160; {</div>
<div class="line"><a name="l16964"></a><span class="lineno">16964</span>&#160; <span class="keywordflow">return</span> m_value.boolean;</div>
<div class="line"><a name="l16965"></a><span class="lineno">16965</span>&#160; }</div>
<div class="line"><a name="l16966"></a><span class="lineno">16966</span>&#160; </div>
<div class="line"><a name="l16967"></a><span class="lineno">16967</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">&quot;type must be boolean, but is &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l16968"></a><span class="lineno">16968</span>&#160; }</div>
<div class="line"><a name="l16969"></a><span class="lineno">16969</span>&#160; </div>
<div class="line"><a name="l16971"></a><span class="lineno">16971</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
<div class="line"><a name="l16972"></a><span class="lineno">16972</span>&#160; {</div>
<div class="line"><a name="l16973"></a><span class="lineno">16973</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() ? m_value.object : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l16974"></a><span class="lineno">16974</span>&#160; }</div>
<div class="line"><a name="l16975"></a><span class="lineno">16975</span>&#160; </div>
<div class="line"><a name="l16977"></a><span class="lineno">16977</span>&#160; constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l16978"></a><span class="lineno">16978</span>&#160; {</div>
<div class="line"><a name="l16979"></a><span class="lineno">16979</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() ? m_value.object : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l16980"></a><span class="lineno">16980</span>&#160; }</div>
<div class="line"><a name="l16981"></a><span class="lineno">16981</span>&#160; </div>
<div class="line"><a name="l16983"></a><span class="lineno">16983</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
<div class="line"><a name="l16984"></a><span class="lineno">16984</span>&#160; {</div>
<div class="line"><a name="l16985"></a><span class="lineno">16985</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>() ? m_value.array : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l16986"></a><span class="lineno">16986</span>&#160; }</div>
<div class="line"><a name="l16987"></a><span class="lineno">16987</span>&#160; </div>
<div class="line"><a name="l16989"></a><span class="lineno">16989</span>&#160; constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l16990"></a><span class="lineno">16990</span>&#160; {</div>
<div class="line"><a name="l16991"></a><span class="lineno">16991</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>() ? m_value.array : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l16992"></a><span class="lineno">16992</span>&#160; }</div>
<div class="line"><a name="l16993"></a><span class="lineno">16993</span>&#160; </div>
<div class="line"><a name="l16995"></a><span class="lineno">16995</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
<div class="line"><a name="l16996"></a><span class="lineno">16996</span>&#160; {</div>
<div class="line"><a name="l16997"></a><span class="lineno">16997</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>() ? m_value.string : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l16998"></a><span class="lineno">16998</span>&#160; }</div>
<div class="line"><a name="l16999"></a><span class="lineno">16999</span>&#160; </div>
<div class="line"><a name="l17001"></a><span class="lineno">17001</span>&#160; constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l17002"></a><span class="lineno">17002</span>&#160; {</div>
<div class="line"><a name="l17003"></a><span class="lineno">17003</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>() ? m_value.string : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l17004"></a><span class="lineno">17004</span>&#160; }</div>
<div class="line"><a name="l17005"></a><span class="lineno">17005</span>&#160; </div>
<div class="line"><a name="l17007"></a><span class="lineno">17007</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
<div class="line"><a name="l17008"></a><span class="lineno">17008</span>&#160; {</div>
<div class="line"><a name="l17009"></a><span class="lineno">17009</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">is_boolean</a>() ? &amp;m_value.boolean : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l17010"></a><span class="lineno">17010</span>&#160; }</div>
<div class="line"><a name="l17011"></a><span class="lineno">17011</span>&#160; </div>
<div class="line"><a name="l17013"></a><span class="lineno">17013</span>&#160; constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l17014"></a><span class="lineno">17014</span>&#160; {</div>
<div class="line"><a name="l17015"></a><span class="lineno">17015</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">is_boolean</a>() ? &amp;m_value.boolean : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l17016"></a><span class="lineno">17016</span>&#160; }</div>
<div class="line"><a name="l17017"></a><span class="lineno">17017</span>&#160; </div>
<div class="line"><a name="l17019"></a><span class="lineno">17019</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
<div class="line"><a name="l17020"></a><span class="lineno">17020</span>&#160; {</div>
<div class="line"><a name="l17021"></a><span class="lineno">17021</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">is_number_integer</a>() ? &amp;m_value.number_integer : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l17022"></a><span class="lineno">17022</span>&#160; }</div>
<div class="line"><a name="l17023"></a><span class="lineno">17023</span>&#160; </div>
<div class="line"><a name="l17025"></a><span class="lineno">17025</span>&#160; constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l17026"></a><span class="lineno">17026</span>&#160; {</div>
<div class="line"><a name="l17027"></a><span class="lineno">17027</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">is_number_integer</a>() ? &amp;m_value.number_integer : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l17028"></a><span class="lineno">17028</span>&#160; }</div>
<div class="line"><a name="l17029"></a><span class="lineno">17029</span>&#160; </div>
<div class="line"><a name="l17031"></a><span class="lineno">17031</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
<div class="line"><a name="l17032"></a><span class="lineno">17032</span>&#160; {</div>
<div class="line"><a name="l17033"></a><span class="lineno">17033</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#abc7378cba0613a78b9aad1c8e7044bb0">is_number_unsigned</a>() ? &amp;m_value.number_unsigned : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l17034"></a><span class="lineno">17034</span>&#160; }</div>
<div class="line"><a name="l17035"></a><span class="lineno">17035</span>&#160; </div>
<div class="line"><a name="l17037"></a><span class="lineno">17037</span>&#160; constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l17038"></a><span class="lineno">17038</span>&#160; {</div>
<div class="line"><a name="l17039"></a><span class="lineno">17039</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#abc7378cba0613a78b9aad1c8e7044bb0">is_number_unsigned</a>() ? &amp;m_value.number_unsigned : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l17040"></a><span class="lineno">17040</span>&#160; }</div>
<div class="line"><a name="l17041"></a><span class="lineno">17041</span>&#160; </div>
<div class="line"><a name="l17043"></a><span class="lineno">17043</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
<div class="line"><a name="l17044"></a><span class="lineno">17044</span>&#160; {</div>
<div class="line"><a name="l17045"></a><span class="lineno">17045</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">is_number_float</a>() ? &amp;m_value.number_float : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l17046"></a><span class="lineno">17046</span>&#160; }</div>
<div class="line"><a name="l17047"></a><span class="lineno">17047</span>&#160; </div>
<div class="line"><a name="l17049"></a><span class="lineno">17049</span>&#160; constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l17050"></a><span class="lineno">17050</span>&#160; {</div>
<div class="line"><a name="l17051"></a><span class="lineno">17051</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">is_number_float</a>() ? &amp;m_value.number_float : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l17052"></a><span class="lineno">17052</span>&#160; }</div>
<div class="line"><a name="l17053"></a><span class="lineno">17053</span>&#160; </div>
<div class="line"><a name="l17065"></a><span class="lineno">17065</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ReferenceType, <span class="keyword">typename</span> ThisType&gt;</div>
<div class="line"><a name="l17066"></a><span class="lineno">17066</span>&#160; <span class="keyword">static</span> ReferenceType get_ref_impl(ThisType&amp; obj)</div>
<div class="line"><a name="l17067"></a><span class="lineno">17067</span>&#160; {</div>
<div class="line"><a name="l17068"></a><span class="lineno">17068</span>&#160; <span class="comment">// delegate the call to get_ptr&lt;&gt;()</span></div>
<div class="line"><a name="l17069"></a><span class="lineno">17069</span>&#160; <span class="keyword">auto</span> ptr = obj.template get_ptr&lt;typename std::add_pointer&lt;ReferenceType&gt;::type&gt;();</div>
<div class="line"><a name="l17070"></a><span class="lineno">17070</span>&#160; </div>
<div class="line"><a name="l17071"></a><span class="lineno">17071</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(ptr != <span class="keyword">nullptr</span>))</div>
<div class="line"><a name="l17072"></a><span class="lineno">17072</span>&#160; {</div>
<div class="line"><a name="l17073"></a><span class="lineno">17073</span>&#160; <span class="keywordflow">return</span> *ptr;</div>
<div class="line"><a name="l17074"></a><span class="lineno">17074</span>&#160; }</div>
<div class="line"><a name="l17075"></a><span class="lineno">17075</span>&#160; </div>
<div class="line"><a name="l17076"></a><span class="lineno">17076</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(303, <span class="stringliteral">&quot;incompatible ReferenceType for get_ref, actual type is &quot;</span> + std::string(obj.type_name())));</div>
<div class="line"><a name="l17077"></a><span class="lineno">17077</span>&#160; }</div>
<div class="line"><a name="l17078"></a><span class="lineno">17078</span>&#160; </div>
<div class="line"><a name="l17079"></a><span class="lineno">17079</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l17083"></a><span class="lineno">17083</span>&#160; </div>
<div class="line"><a name="l17098"></a><span class="lineno">17098</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a>&lt;</div>
<div class="line"><a name="l17099"></a><span class="lineno">17099</span>&#160; std::is_same&lt;typename std::remove_const&lt;BasicJsonType&gt;::type, basic_json_t&gt;<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>,</div>
<div class="line"><a name="l17100"></a><span class="lineno">17100</span>&#160; <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l17101"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6b187a22994c12c8cae0dd5ee99dc85e">17101</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a6b187a22994c12c8cae0dd5ee99dc85e">get</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l17102"></a><span class="lineno">17102</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l17103"></a><span class="lineno">17103</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l17104"></a><span class="lineno">17104</span>&#160; }</div>
<div class="line"><a name="l17105"></a><span class="lineno">17105</span>&#160; </div>
<div class="line"><a name="l17121"></a><span class="lineno">17121</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> BasicJsonType, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a>&lt;</div>
<div class="line"><a name="l17122"></a><span class="lineno">17122</span>&#160; not std::is_same&lt;BasicJsonType, basic_json&gt;::value and</div>
<div class="line"><a name="l17123"></a><span class="lineno">17123</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">detail::is_basic_json&lt;BasicJsonType&gt;::value</a>, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l17124"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a30ff63a4d671eb14f652356cd934320c">17124</a></span>&#160; BasicJsonType <a class="code" href="classnlohmann_1_1basic__json.html#a30ff63a4d671eb14f652356cd934320c">get</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l17125"></a><span class="lineno">17125</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l17126"></a><span class="lineno">17126</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l17127"></a><span class="lineno">17127</span>&#160; }</div>
<div class="line"><a name="l17128"></a><span class="lineno">17128</span>&#160; </div>
<div class="line"><a name="l17168"></a><span class="lineno">17168</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueTypeCV, <span class="keyword">typename</span> ValueType = detail::uncvref_t&lt;ValueTypeCV&gt;,</div>
<div class="line"><a name="l17169"></a><span class="lineno">17169</span>&#160; detail::enable_if_t &lt;</div>
<div class="line"><a name="l17170"></a><span class="lineno">17170</span>&#160; not detail::is_basic_json&lt;ValueType&gt;::value and</div>
<div class="line"><a name="l17171"></a><span class="lineno">17171</span>&#160; detail::has_from_json&lt;basic_json_t, ValueType&gt;::value and</div>
<div class="line"><a name="l17172"></a><span class="lineno">17172</span>&#160; not detail::has_non_default_from_json&lt;basic_json_t, ValueType&gt;::value,</div>
<div class="line"><a name="l17173"></a><span class="lineno">17173</span>&#160; <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l17174"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aa6602bb24022183ab989439e19345d08">17174</a></span>&#160; ValueType <a class="code" href="classnlohmann_1_1basic__json.html#aa6602bb24022183ab989439e19345d08">get</a>() const noexcept(noexcept(</div>
<div class="line"><a name="l17175"></a><span class="lineno">17175</span>&#160; JSONSerializer&lt;ValueType&gt;::<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">from_json</a>(<a class="code" href="namespacestd.html">std</a>::declval&lt;const basic_json_t&amp;&gt;(), <a class="code" href="namespacestd.html">std</a>::declval&lt;ValueType&amp;&gt;())))</div>
<div class="line"><a name="l17176"></a><span class="lineno">17176</span>&#160; {</div>
<div class="line"><a name="l17177"></a><span class="lineno">17177</span>&#160; <span class="comment">// we cannot static_assert on ValueTypeCV being non-const, because</span></div>
<div class="line"><a name="l17178"></a><span class="lineno">17178</span>&#160; <span class="comment">// there is support for get&lt;const basic_json_t&gt;(), which is why we</span></div>
<div class="line"><a name="l17179"></a><span class="lineno">17179</span>&#160; <span class="comment">// still need the uncvref</span></div>
<div class="line"><a name="l17180"></a><span class="lineno">17180</span>&#160; static_assert(not std::is_reference&lt;ValueTypeCV&gt;::value,</div>
<div class="line"><a name="l17181"></a><span class="lineno">17181</span>&#160; <span class="stringliteral">&quot;get() cannot be used with reference types, you might want to use get_ref()&quot;</span>);</div>
<div class="line"><a name="l17182"></a><span class="lineno">17182</span>&#160; static_assert(std::is_default_constructible&lt;ValueType&gt;::value,</div>
<div class="line"><a name="l17183"></a><span class="lineno">17183</span>&#160; <span class="stringliteral">&quot;types must be DefaultConstructible when used with get()&quot;</span>);</div>
<div class="line"><a name="l17184"></a><span class="lineno">17184</span>&#160; </div>
<div class="line"><a name="l17185"></a><span class="lineno">17185</span>&#160; ValueType ret;</div>
<div class="line"><a name="l17186"></a><span class="lineno">17186</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer&lt;ValueType&gt;::from_json</a>(*<span class="keyword">this</span>, ret);</div>
<div class="line"><a name="l17187"></a><span class="lineno">17187</span>&#160; <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l17188"></a><span class="lineno">17188</span>&#160; }</div>
<div class="line"><a name="l17189"></a><span class="lineno">17189</span>&#160; </div>
<div class="line"><a name="l17221"></a><span class="lineno">17221</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueTypeCV, <span class="keyword">typename</span> ValueType = detail::uncvref_t&lt;ValueTypeCV&gt;,</div>
<div class="line"><a name="l17222"></a><span class="lineno">17222</span>&#160; detail::enable_if_t&lt;not std::is_same&lt;basic_json_t, ValueType&gt;::value and</div>
<div class="line"><a name="l17223"></a><span class="lineno">17223</span>&#160; detail::has_non_default_from_json&lt;basic_json_t, ValueType&gt;::value,</div>
<div class="line"><a name="l17224"></a><span class="lineno">17224</span>&#160; <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l17225"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6c829df57e924f88cecb702a60af8f17">17225</a></span>&#160; ValueType <a class="code" href="classnlohmann_1_1basic__json.html#a6c829df57e924f88cecb702a60af8f17">get</a>() const noexcept(noexcept(</div>
<div class="line"><a name="l17226"></a><span class="lineno">17226</span>&#160; JSONSerializer&lt;ValueType&gt;::<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">from_json</a>(<a class="code" href="namespacestd.html">std</a>::declval&lt;const basic_json_t&amp;&gt;())))</div>
<div class="line"><a name="l17227"></a><span class="lineno">17227</span>&#160; {</div>
<div class="line"><a name="l17228"></a><span class="lineno">17228</span>&#160; static_assert(not std::is_reference&lt;ValueTypeCV&gt;::value,</div>
<div class="line"><a name="l17229"></a><span class="lineno">17229</span>&#160; <span class="stringliteral">&quot;get() cannot be used with reference types, you might want to use get_ref()&quot;</span>);</div>
<div class="line"><a name="l17230"></a><span class="lineno">17230</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer&lt;ValueType&gt;::from_json</a>(*<span class="keyword">this</span>);</div>
<div class="line"><a name="l17231"></a><span class="lineno">17231</span>&#160; }</div>
<div class="line"><a name="l17232"></a><span class="lineno">17232</span>&#160; </div>
<div class="line"><a name="l17266"></a><span class="lineno">17266</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType,</div>
<div class="line"><a name="l17267"></a><span class="lineno">17267</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a> &lt;</div>
<div class="line"><a name="l17268"></a><span class="lineno">17268</span>&#160; not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">detail::is_basic_json&lt;ValueType&gt;::value</a> and</div>
<div class="line"><a name="l17269"></a><span class="lineno">17269</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">detail::has_from_json&lt;basic_json_t, ValueType&gt;::value</a>,</div>
<div class="line"><a name="l17270"></a><span class="lineno">17270</span>&#160; <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l17271"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a65753c68f06639eda0d355f919564e01">17271</a></span>&#160; ValueType &amp; <a class="code" href="classnlohmann_1_1basic__json.html#a65753c68f06639eda0d355f919564e01">get_to</a>(ValueType&amp; v) <span class="keyword">const</span> noexcept(noexcept(</div>
<div class="line"><a name="l17272"></a><span class="lineno">17272</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer&lt;ValueType&gt;::from_json</a>(std::declval&lt;const basic_json_t&amp;&gt;(), v)))</div>
<div class="line"><a name="l17273"></a><span class="lineno">17273</span>&#160; {</div>
<div class="line"><a name="l17274"></a><span class="lineno">17274</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer&lt;ValueType&gt;::from_json</a>(*<span class="keyword">this</span>, v);</div>
<div class="line"><a name="l17275"></a><span class="lineno">17275</span>&#160; <span class="keywordflow">return</span> v;</div>
<div class="line"><a name="l17276"></a><span class="lineno">17276</span>&#160; }</div>
<div class="line"><a name="l17277"></a><span class="lineno">17277</span>&#160; </div>
<div class="line"><a name="l17278"></a><span class="lineno">17278</span>&#160; <span class="keyword">template</span> &lt;</div>
<div class="line"><a name="l17279"></a><span class="lineno">17279</span>&#160; <span class="keyword">typename</span> T, std::size_t N,</div>
<div class="line"><a name="l17280"></a><span class="lineno">17280</span>&#160; <span class="keyword">typename</span> Array = T (&amp;)[N],</div>
<div class="line"><a name="l17281"></a><span class="lineno">17281</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a> &lt;</div>
<div class="line"><a name="l17282"></a><span class="lineno">17282</span>&#160; <a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">detail::has_from_json&lt;basic_json_t, Array&gt;::value</a>, <span class="keywordtype">int</span> &gt; = 0 &gt;</div>
<div class="line"><a name="l17283"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab9d91cc9c3b62782b38d8f2158269937">17283</a></span>&#160; Array <a class="code" href="classnlohmann_1_1basic__json.html#ab9d91cc9c3b62782b38d8f2158269937">get_to</a>(T (&amp;v)[N]) <span class="keyword">const</span></div>
<div class="line"><a name="l17284"></a><span class="lineno">17284</span>&#160; noexcept(noexcept(<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer&lt;Array&gt;::from_json</a>(</div>
<div class="line"><a name="l17285"></a><span class="lineno">17285</span>&#160; std::declval&lt;const basic_json_t&amp;&gt;(), v)))</div>
<div class="line"><a name="l17286"></a><span class="lineno">17286</span>&#160; {</div>
<div class="line"><a name="l17287"></a><span class="lineno">17287</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer&lt;Array&gt;::from_json</a>(*<span class="keyword">this</span>, v);</div>
<div class="line"><a name="l17288"></a><span class="lineno">17288</span>&#160; <span class="keywordflow">return</span> v;</div>
<div class="line"><a name="l17289"></a><span class="lineno">17289</span>&#160; }</div>
<div class="line"><a name="l17290"></a><span class="lineno">17290</span>&#160; </div>
<div class="line"><a name="l17291"></a><span class="lineno">17291</span>&#160; </div>
<div class="line"><a name="l17318"></a><span class="lineno">17318</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l17319"></a><span class="lineno">17319</span>&#160; std::is_pointer&lt;PointerType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l17320"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abefbb319df8ed4f8705b4fd4e4dc731c">17320</a></span>&#160; <span class="keyword">auto</span> <a class="code" href="classnlohmann_1_1basic__json.html#abefbb319df8ed4f8705b4fd4e4dc731c">get_ptr</a>() noexcept -&gt; decltype(<a class="code" href="namespacestd.html">std</a>::declval&lt;basic_json_t&amp;&gt;().get_impl_ptr(<a class="code" href="namespacestd.html">std</a>::declval&lt;PointerType&gt;()))</div>
<div class="line"><a name="l17321"></a><span class="lineno">17321</span>&#160; {</div>
<div class="line"><a name="l17322"></a><span class="lineno">17322</span>&#160; <span class="comment">// delegate the call to get_impl_ptr&lt;&gt;()</span></div>
<div class="line"><a name="l17323"></a><span class="lineno">17323</span>&#160; <span class="keywordflow">return</span> get_impl_ptr(<span class="keyword">static_cast&lt;</span>PointerType<span class="keyword">&gt;</span>(<span class="keyword">nullptr</span>));</div>
<div class="line"><a name="l17324"></a><span class="lineno">17324</span>&#160; }</div>
<div class="line"><a name="l17325"></a><span class="lineno">17325</span>&#160; </div>
<div class="line"><a name="l17330"></a><span class="lineno">17330</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l17331"></a><span class="lineno">17331</span>&#160; std::is_pointer&lt;PointerType&gt;::value and</div>
<div class="line"><a name="l17332"></a><span class="lineno">17332</span>&#160; std::is_const&lt;typename std::remove_pointer&lt;PointerType&gt;::type&gt;<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l17333"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6508b9ef55eb018231fb2198211f6d73">17333</a></span>&#160; constexpr <span class="keyword">auto</span> <a class="code" href="classnlohmann_1_1basic__json.html#a6508b9ef55eb018231fb2198211f6d73">get_ptr</a>() const noexcept -&gt; decltype(<a class="code" href="namespacestd.html">std</a>::declval&lt;const basic_json_t&amp;&gt;().get_impl_ptr(<a class="code" href="namespacestd.html">std</a>::declval&lt;PointerType&gt;()))</div>
<div class="line"><a name="l17334"></a><span class="lineno">17334</span>&#160; {</div>
<div class="line"><a name="l17335"></a><span class="lineno">17335</span>&#160; <span class="comment">// delegate the call to get_impl_ptr&lt;&gt;() const</span></div>
<div class="line"><a name="l17336"></a><span class="lineno">17336</span>&#160; <span class="keywordflow">return</span> get_impl_ptr(<span class="keyword">static_cast&lt;</span>PointerType<span class="keyword">&gt;</span>(<span class="keyword">nullptr</span>));</div>
<div class="line"><a name="l17337"></a><span class="lineno">17337</span>&#160; }</div>
<div class="line"><a name="l17338"></a><span class="lineno">17338</span>&#160; </div>
<div class="line"><a name="l17366"></a><span class="lineno">17366</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l17367"></a><span class="lineno">17367</span>&#160; std::is_pointer&lt;PointerType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l17368"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a44516cba796e50ce5d62c9d6b7ab4c1d">17368</a></span>&#160; <span class="keyword">auto</span> <a class="code" href="classnlohmann_1_1basic__json.html#a44516cba796e50ce5d62c9d6b7ab4c1d">get</a>() noexcept -&gt; decltype(<a class="code" href="namespacestd.html">std</a>::declval&lt;basic_json_t&amp;&gt;().template <a class="code" href="classnlohmann_1_1basic__json.html#abefbb319df8ed4f8705b4fd4e4dc731c">get_ptr</a>&lt;PointerType&gt;())</div>
<div class="line"><a name="l17369"></a><span class="lineno">17369</span>&#160; {</div>
<div class="line"><a name="l17370"></a><span class="lineno">17370</span>&#160; <span class="comment">// delegate the call to get_ptr</span></div>
<div class="line"><a name="l17371"></a><span class="lineno">17371</span>&#160; <span class="keywordflow">return</span> get_ptr&lt;PointerType&gt;();</div>
<div class="line"><a name="l17372"></a><span class="lineno">17372</span>&#160; }</div>
<div class="line"><a name="l17373"></a><span class="lineno">17373</span>&#160; </div>
<div class="line"><a name="l17378"></a><span class="lineno">17378</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l17379"></a><span class="lineno">17379</span>&#160; std::is_pointer&lt;PointerType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l17380"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad6b0b151621542e5d135812b8c163222">17380</a></span>&#160; constexpr <span class="keyword">auto</span> <a class="code" href="classnlohmann_1_1basic__json.html#ad6b0b151621542e5d135812b8c163222">get</a>() const noexcept -&gt; decltype(<a class="code" href="namespacestd.html">std</a>::declval&lt;const basic_json_t&amp;&gt;().template <a class="code" href="classnlohmann_1_1basic__json.html#abefbb319df8ed4f8705b4fd4e4dc731c">get_ptr</a>&lt;PointerType&gt;())</div>
<div class="line"><a name="l17381"></a><span class="lineno">17381</span>&#160; {</div>
<div class="line"><a name="l17382"></a><span class="lineno">17382</span>&#160; <span class="comment">// delegate the call to get_ptr</span></div>
<div class="line"><a name="l17383"></a><span class="lineno">17383</span>&#160; <span class="keywordflow">return</span> get_ptr&lt;PointerType&gt;();</div>
<div class="line"><a name="l17384"></a><span class="lineno">17384</span>&#160; }</div>
<div class="line"><a name="l17385"></a><span class="lineno">17385</span>&#160; </div>
<div class="line"><a name="l17412"></a><span class="lineno">17412</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ReferenceType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l17413"></a><span class="lineno">17413</span>&#160; std::is_reference&lt;ReferenceType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l17414"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#afbd800010b67619463c0fce6e74f7878">17414</a></span>&#160; ReferenceType <a class="code" href="classnlohmann_1_1basic__json.html#afbd800010b67619463c0fce6e74f7878">get_ref</a>()</div>
<div class="line"><a name="l17415"></a><span class="lineno">17415</span>&#160; {</div>
<div class="line"><a name="l17416"></a><span class="lineno">17416</span>&#160; <span class="comment">// delegate call to get_ref_impl</span></div>
<div class="line"><a name="l17417"></a><span class="lineno">17417</span>&#160; <span class="keywordflow">return</span> get_ref_impl&lt;ReferenceType&gt;(*<span class="keyword">this</span>);</div>
<div class="line"><a name="l17418"></a><span class="lineno">17418</span>&#160; }</div>
<div class="line"><a name="l17419"></a><span class="lineno">17419</span>&#160; </div>
<div class="line"><a name="l17424"></a><span class="lineno">17424</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ReferenceType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l17425"></a><span class="lineno">17425</span>&#160; std::is_reference&lt;ReferenceType&gt;::value and</div>
<div class="line"><a name="l17426"></a><span class="lineno">17426</span>&#160; std::is_const&lt;typename std::remove_reference&lt;ReferenceType&gt;::type&gt;<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l17427"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac382f3d2bc6a5d52d936e4e40593f03b">17427</a></span>&#160; ReferenceType <a class="code" href="classnlohmann_1_1basic__json.html#ac382f3d2bc6a5d52d936e4e40593f03b">get_ref</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l17428"></a><span class="lineno">17428</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l17429"></a><span class="lineno">17429</span>&#160; <span class="comment">// delegate call to get_ref_impl</span></div>
<div class="line"><a name="l17430"></a><span class="lineno">17430</span>&#160; <span class="keywordflow">return</span> get_ref_impl&lt;ReferenceType&gt;(*<span class="keyword">this</span>);</div>
<div class="line"><a name="l17431"></a><span class="lineno">17431</span>&#160; }</div>
<div class="line"><a name="l17432"></a><span class="lineno">17432</span>&#160; </div>
<div class="line"><a name="l17462"></a><span class="lineno">17462</span>&#160; <span class="keyword">template</span> &lt; <span class="keyword">typename</span> ValueType, <span class="keyword">typename</span> std::enable_if &lt;</div>
<div class="line"><a name="l17463"></a><span class="lineno">17463</span>&#160; not std::is_pointer&lt;ValueType&gt;::value and</div>
<div class="line"><a name="l17464"></a><span class="lineno">17464</span>&#160; not std::is_same&lt;ValueType, detail::json_ref&lt;basic_json&gt;&gt;<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a> and</div>
<div class="line"><a name="l17465"></a><span class="lineno">17465</span>&#160; not std::is_same&lt;ValueType, typename string_t::value_type&gt;::value and</div>
<div class="line"><a name="l17466"></a><span class="lineno">17466</span>&#160; not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">detail::is_basic_json&lt;ValueType&gt;::value</a></div>
<div class="line"><a name="l17467"></a><span class="lineno">17467</span>&#160; </div>
<div class="line"><a name="l17468"></a><span class="lineno">17468</span>&#160;<span class="preprocessor">#ifndef _MSC_VER // fix for issue #167 operator&lt;&lt; ambiguity under VS2015</span></div>
<div class="line"><a name="l17469"></a><span class="lineno">17469</span>&#160; and not std::is_same&lt;ValueType, std::initializer_list&lt;typename string_t::value_type&gt;&gt;<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a></div>
<div class="line"><a name="l17470"></a><span class="lineno">17470</span>&#160;<span class="preprocessor">#if defined(JSON_HAS_CPP_17) &amp;&amp; (defined(__GNUC__) || (defined(_MSC_VER) and _MSC_VER &lt;= 1914))</span></div>
<div class="line"><a name="l17471"></a><span class="lineno">17471</span>&#160; and not std::is_same&lt;ValueType, typename std::string_view&gt;::value</div>
<div class="line"><a name="l17472"></a><span class="lineno">17472</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l17473"></a><span class="lineno">17473</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l17474"></a><span class="lineno">17474</span>&#160; and <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">detail::is_detected&lt;detail::get_template_function, const basic_json_t&amp;, ValueType&gt;::value</a></div>
<div class="line"><a name="l17475"></a><span class="lineno">17475</span>&#160; , <span class="keywordtype">int</span> &gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0 &gt;</div>
<div class="line"><a name="l17476"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1f1d4bc973c5b866db3d96e14d2c9f3f">17476</a></span>&#160; <span class="keyword">operator</span> ValueType()<span class="keyword"> const</span></div>
<div class="line"><a name="l17477"></a><span class="lineno">17477</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l17478"></a><span class="lineno">17478</span>&#160; <span class="comment">// delegate the call to get&lt;&gt;() const</span></div>
<div class="line"><a name="l17479"></a><span class="lineno">17479</span>&#160; <span class="keywordflow">return</span> get&lt;ValueType&gt;();</div>
<div class="line"><a name="l17480"></a><span class="lineno">17480</span>&#160; }</div>
<div class="line"><a name="l17481"></a><span class="lineno">17481</span>&#160; </div>
<div class="line"><a name="l17483"></a><span class="lineno">17483</span>&#160; </div>
<div class="line"><a name="l17484"></a><span class="lineno">17484</span>&#160; </div>
<div class="line"><a name="l17486"></a><span class="lineno">17486</span>&#160; <span class="comment">// element access //</span></div>
<div class="line"><a name="l17488"></a><span class="lineno">17488</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l17492"></a><span class="lineno">17492</span>&#160; </div>
<div class="line"><a name="l17519"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a73ae333487310e3302135189ce8ff5d8">17519</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a73ae333487310e3302135189ce8ff5d8">at</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> idx)</div>
<div class="line"><a name="l17520"></a><span class="lineno">17520</span>&#160; {</div>
<div class="line"><a name="l17521"></a><span class="lineno">17521</span>&#160; <span class="comment">// at only works for arrays</span></div>
<div class="line"><a name="l17522"></a><span class="lineno">17522</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
<div class="line"><a name="l17523"></a><span class="lineno">17523</span>&#160; {</div>
<div class="line"><a name="l17524"></a><span class="lineno">17524</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l17525"></a><span class="lineno">17525</span>&#160; {</div>
<div class="line"><a name="l17526"></a><span class="lineno">17526</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;at(idx);</div>
<div class="line"><a name="l17527"></a><span class="lineno">17527</span>&#160; }</div>
<div class="line"><a name="l17528"></a><span class="lineno">17528</span>&#160; <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a> (std::out_of_range&amp;)</div>
<div class="line"><a name="l17529"></a><span class="lineno">17529</span>&#160; {</div>
<div class="line"><a name="l17530"></a><span class="lineno">17530</span>&#160; <span class="comment">// create better exception explanation</span></div>
<div class="line"><a name="l17531"></a><span class="lineno">17531</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(401, <span class="stringliteral">&quot;array index &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(idx) + <span class="stringliteral">&quot; is out of range&quot;</span>));</div>
<div class="line"><a name="l17532"></a><span class="lineno">17532</span>&#160; }</div>
<div class="line"><a name="l17533"></a><span class="lineno">17533</span>&#160; }</div>
<div class="line"><a name="l17534"></a><span class="lineno">17534</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l17535"></a><span class="lineno">17535</span>&#160; {</div>
<div class="line"><a name="l17536"></a><span class="lineno">17536</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(304, <span class="stringliteral">&quot;cannot use at() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l17537"></a><span class="lineno">17537</span>&#160; }</div>
<div class="line"><a name="l17538"></a><span class="lineno">17538</span>&#160; }</div>
<div class="line"><a name="l17539"></a><span class="lineno">17539</span>&#160; </div>
<div class="line"><a name="l17566"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab157adb4de8475b452da9ebf04f2de15">17566</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#ab157adb4de8475b452da9ebf04f2de15">at</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> idx)<span class="keyword"> const</span></div>
<div class="line"><a name="l17567"></a><span class="lineno">17567</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l17568"></a><span class="lineno">17568</span>&#160; <span class="comment">// at only works for arrays</span></div>
<div class="line"><a name="l17569"></a><span class="lineno">17569</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
<div class="line"><a name="l17570"></a><span class="lineno">17570</span>&#160; {</div>
<div class="line"><a name="l17571"></a><span class="lineno">17571</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l17572"></a><span class="lineno">17572</span>&#160; {</div>
<div class="line"><a name="l17573"></a><span class="lineno">17573</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;at(idx);</div>
<div class="line"><a name="l17574"></a><span class="lineno">17574</span>&#160; }</div>
<div class="line"><a name="l17575"></a><span class="lineno">17575</span>&#160; <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a> (std::out_of_range&amp;)</div>
<div class="line"><a name="l17576"></a><span class="lineno">17576</span>&#160; {</div>
<div class="line"><a name="l17577"></a><span class="lineno">17577</span>&#160; <span class="comment">// create better exception explanation</span></div>
<div class="line"><a name="l17578"></a><span class="lineno">17578</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(401, <span class="stringliteral">&quot;array index &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(idx) + <span class="stringliteral">&quot; is out of range&quot;</span>));</div>
<div class="line"><a name="l17579"></a><span class="lineno">17579</span>&#160; }</div>
<div class="line"><a name="l17580"></a><span class="lineno">17580</span>&#160; }</div>
<div class="line"><a name="l17581"></a><span class="lineno">17581</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l17582"></a><span class="lineno">17582</span>&#160; {</div>
<div class="line"><a name="l17583"></a><span class="lineno">17583</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(304, <span class="stringliteral">&quot;cannot use at() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l17584"></a><span class="lineno">17584</span>&#160; }</div>
<div class="line"><a name="l17585"></a><span class="lineno">17585</span>&#160; }</div>
<div class="line"><a name="l17586"></a><span class="lineno">17586</span>&#160; </div>
<div class="line"><a name="l17617"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a93403e803947b86f4da2d1fb3345cf2c">17617</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a93403e803947b86f4da2d1fb3345cf2c">at</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key)</div>
<div class="line"><a name="l17618"></a><span class="lineno">17618</span>&#160; {</div>
<div class="line"><a name="l17619"></a><span class="lineno">17619</span>&#160; <span class="comment">// at only works for objects</span></div>
<div class="line"><a name="l17620"></a><span class="lineno">17620</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l17621"></a><span class="lineno">17621</span>&#160; {</div>
<div class="line"><a name="l17622"></a><span class="lineno">17622</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l17623"></a><span class="lineno">17623</span>&#160; {</div>
<div class="line"><a name="l17624"></a><span class="lineno">17624</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;at(key);</div>
<div class="line"><a name="l17625"></a><span class="lineno">17625</span>&#160; }</div>
<div class="line"><a name="l17626"></a><span class="lineno">17626</span>&#160; <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a> (std::out_of_range&amp;)</div>
<div class="line"><a name="l17627"></a><span class="lineno">17627</span>&#160; {</div>
<div class="line"><a name="l17628"></a><span class="lineno">17628</span>&#160; <span class="comment">// create better exception explanation</span></div>
<div class="line"><a name="l17629"></a><span class="lineno">17629</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(403, <span class="stringliteral">&quot;key &#39;&quot;</span> + key + <span class="stringliteral">&quot;&#39; not found&quot;</span>));</div>
<div class="line"><a name="l17630"></a><span class="lineno">17630</span>&#160; }</div>
<div class="line"><a name="l17631"></a><span class="lineno">17631</span>&#160; }</div>
<div class="line"><a name="l17632"></a><span class="lineno">17632</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l17633"></a><span class="lineno">17633</span>&#160; {</div>
<div class="line"><a name="l17634"></a><span class="lineno">17634</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(304, <span class="stringliteral">&quot;cannot use at() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l17635"></a><span class="lineno">17635</span>&#160; }</div>
<div class="line"><a name="l17636"></a><span class="lineno">17636</span>&#160; }</div>
<div class="line"><a name="l17637"></a><span class="lineno">17637</span>&#160; </div>
<div class="line"><a name="l17668"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#acac9d438c9bb12740dcdb01069293a34">17668</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#acac9d438c9bb12740dcdb01069293a34">at</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key)<span class="keyword"> const</span></div>
<div class="line"><a name="l17669"></a><span class="lineno">17669</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l17670"></a><span class="lineno">17670</span>&#160; <span class="comment">// at only works for objects</span></div>
<div class="line"><a name="l17671"></a><span class="lineno">17671</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l17672"></a><span class="lineno">17672</span>&#160; {</div>
<div class="line"><a name="l17673"></a><span class="lineno">17673</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l17674"></a><span class="lineno">17674</span>&#160; {</div>
<div class="line"><a name="l17675"></a><span class="lineno">17675</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;at(key);</div>
<div class="line"><a name="l17676"></a><span class="lineno">17676</span>&#160; }</div>
<div class="line"><a name="l17677"></a><span class="lineno">17677</span>&#160; <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a> (std::out_of_range&amp;)</div>
<div class="line"><a name="l17678"></a><span class="lineno">17678</span>&#160; {</div>
<div class="line"><a name="l17679"></a><span class="lineno">17679</span>&#160; <span class="comment">// create better exception explanation</span></div>
<div class="line"><a name="l17680"></a><span class="lineno">17680</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(403, <span class="stringliteral">&quot;key &#39;&quot;</span> + key + <span class="stringliteral">&quot;&#39; not found&quot;</span>));</div>
<div class="line"><a name="l17681"></a><span class="lineno">17681</span>&#160; }</div>
<div class="line"><a name="l17682"></a><span class="lineno">17682</span>&#160; }</div>
<div class="line"><a name="l17683"></a><span class="lineno">17683</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l17684"></a><span class="lineno">17684</span>&#160; {</div>
<div class="line"><a name="l17685"></a><span class="lineno">17685</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(304, <span class="stringliteral">&quot;cannot use at() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l17686"></a><span class="lineno">17686</span>&#160; }</div>
<div class="line"><a name="l17687"></a><span class="lineno">17687</span>&#160; }</div>
<div class="line"><a name="l17688"></a><span class="lineno">17688</span>&#160; </div>
<div class="line"><a name="l17714"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac871e3b03fb2eeca9a8de4db2bea760f">17714</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#ac871e3b03fb2eeca9a8de4db2bea760f">operator[]</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> idx)</div>
<div class="line"><a name="l17715"></a><span class="lineno">17715</span>&#160; {</div>
<div class="line"><a name="l17716"></a><span class="lineno">17716</span>&#160; <span class="comment">// implicitly convert null value to an empty array</span></div>
<div class="line"><a name="l17717"></a><span class="lineno">17717</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
<div class="line"><a name="l17718"></a><span class="lineno">17718</span>&#160; {</div>
<div class="line"><a name="l17719"></a><span class="lineno">17719</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l17720"></a><span class="lineno">17720</span>&#160; m_value.array = create&lt;array_t&gt;();</div>
<div class="line"><a name="l17721"></a><span class="lineno">17721</span>&#160; assert_invariant();</div>
<div class="line"><a name="l17722"></a><span class="lineno">17722</span>&#160; }</div>
<div class="line"><a name="l17723"></a><span class="lineno">17723</span>&#160; </div>
<div class="line"><a name="l17724"></a><span class="lineno">17724</span>&#160; <span class="comment">// operator[] only works for arrays</span></div>
<div class="line"><a name="l17725"></a><span class="lineno">17725</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
<div class="line"><a name="l17726"></a><span class="lineno">17726</span>&#160; {</div>
<div class="line"><a name="l17727"></a><span class="lineno">17727</span>&#160; <span class="comment">// fill up array with null values if given idx is outside range</span></div>
<div class="line"><a name="l17728"></a><span class="lineno">17728</span>&#160; <span class="keywordflow">if</span> (idx &gt;= m_value.array-&gt;size())</div>
<div class="line"><a name="l17729"></a><span class="lineno">17729</span>&#160; {</div>
<div class="line"><a name="l17730"></a><span class="lineno">17730</span>&#160; m_value.array-&gt;insert(m_value.array-&gt;end(),</div>
<div class="line"><a name="l17731"></a><span class="lineno">17731</span>&#160; idx - m_value.array-&gt;size() + 1,</div>
<div class="line"><a name="l17732"></a><span class="lineno">17732</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>());</div>
<div class="line"><a name="l17733"></a><span class="lineno">17733</span>&#160; }</div>
<div class="line"><a name="l17734"></a><span class="lineno">17734</span>&#160; </div>
<div class="line"><a name="l17735"></a><span class="lineno">17735</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;operator[](idx);</div>
<div class="line"><a name="l17736"></a><span class="lineno">17736</span>&#160; }</div>
<div class="line"><a name="l17737"></a><span class="lineno">17737</span>&#160; </div>
<div class="line"><a name="l17738"></a><span class="lineno">17738</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">&quot;cannot use operator[] with a numeric argument with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l17739"></a><span class="lineno">17739</span>&#160; }</div>
<div class="line"><a name="l17740"></a><span class="lineno">17740</span>&#160; </div>
<div class="line"><a name="l17760"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9cb592cd85c14f3e845e30d51cf17efb">17760</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a9cb592cd85c14f3e845e30d51cf17efb">operator[]</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> idx)<span class="keyword"> const</span></div>
<div class="line"><a name="l17761"></a><span class="lineno">17761</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l17762"></a><span class="lineno">17762</span>&#160; <span class="comment">// const operator[] only works for arrays</span></div>
<div class="line"><a name="l17763"></a><span class="lineno">17763</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
<div class="line"><a name="l17764"></a><span class="lineno">17764</span>&#160; {</div>
<div class="line"><a name="l17765"></a><span class="lineno">17765</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;operator[](idx);</div>
<div class="line"><a name="l17766"></a><span class="lineno">17766</span>&#160; }</div>
<div class="line"><a name="l17767"></a><span class="lineno">17767</span>&#160; </div>
<div class="line"><a name="l17768"></a><span class="lineno">17768</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">&quot;cannot use operator[] with a numeric argument with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l17769"></a><span class="lineno">17769</span>&#160; }</div>
<div class="line"><a name="l17770"></a><span class="lineno">17770</span>&#160; </div>
<div class="line"><a name="l17798"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a233b02b0839ef798942dd46157cc0fe6">17798</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a233b02b0839ef798942dd46157cc0fe6">operator[]</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key)</div>
<div class="line"><a name="l17799"></a><span class="lineno">17799</span>&#160; {</div>
<div class="line"><a name="l17800"></a><span class="lineno">17800</span>&#160; <span class="comment">// implicitly convert null value to an empty object</span></div>
<div class="line"><a name="l17801"></a><span class="lineno">17801</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
<div class="line"><a name="l17802"></a><span class="lineno">17802</span>&#160; {</div>
<div class="line"><a name="l17803"></a><span class="lineno">17803</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l17804"></a><span class="lineno">17804</span>&#160; m_value.object = create&lt;object_t&gt;();</div>
<div class="line"><a name="l17805"></a><span class="lineno">17805</span>&#160; assert_invariant();</div>
<div class="line"><a name="l17806"></a><span class="lineno">17806</span>&#160; }</div>
<div class="line"><a name="l17807"></a><span class="lineno">17807</span>&#160; </div>
<div class="line"><a name="l17808"></a><span class="lineno">17808</span>&#160; <span class="comment">// operator[] only works for objects</span></div>
<div class="line"><a name="l17809"></a><span class="lineno">17809</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l17810"></a><span class="lineno">17810</span>&#160; {</div>
<div class="line"><a name="l17811"></a><span class="lineno">17811</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;operator[](key);</div>
<div class="line"><a name="l17812"></a><span class="lineno">17812</span>&#160; }</div>
<div class="line"><a name="l17813"></a><span class="lineno">17813</span>&#160; </div>
<div class="line"><a name="l17814"></a><span class="lineno">17814</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">&quot;cannot use operator[] with a string argument with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l17815"></a><span class="lineno">17815</span>&#160; }</div>
<div class="line"><a name="l17816"></a><span class="lineno">17816</span>&#160; </div>
<div class="line"><a name="l17847"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab2318780e5ae692039e816b6ac32c91e">17847</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#ab2318780e5ae692039e816b6ac32c91e">operator[]</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key)<span class="keyword"> const</span></div>
<div class="line"><a name="l17848"></a><span class="lineno">17848</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l17849"></a><span class="lineno">17849</span>&#160; <span class="comment">// const operator[] only works for objects</span></div>
<div class="line"><a name="l17850"></a><span class="lineno">17850</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l17851"></a><span class="lineno">17851</span>&#160; {</div>
<div class="line"><a name="l17852"></a><span class="lineno">17852</span>&#160; assert(m_value.object-&gt;find(key) != m_value.object-&gt;end());</div>
<div class="line"><a name="l17853"></a><span class="lineno">17853</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;find(key)-&gt;second;</div>
<div class="line"><a name="l17854"></a><span class="lineno">17854</span>&#160; }</div>
<div class="line"><a name="l17855"></a><span class="lineno">17855</span>&#160; </div>
<div class="line"><a name="l17856"></a><span class="lineno">17856</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">&quot;cannot use operator[] with a string argument with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l17857"></a><span class="lineno">17857</span>&#160; }</div>
<div class="line"><a name="l17858"></a><span class="lineno">17858</span>&#160; </div>
<div class="line"><a name="l17886"></a><span class="lineno">17886</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l17887"></a><span class="lineno">17887</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l17888"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abb8eaa633584b5aff9c8fcd242f25ca8">17888</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> operator[](T* key)</div>
<div class="line"><a name="l17889"></a><span class="lineno">17889</span>&#160; {</div>
<div class="line"><a name="l17890"></a><span class="lineno">17890</span>&#160; <span class="comment">// implicitly convert null to object</span></div>
<div class="line"><a name="l17891"></a><span class="lineno">17891</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
<div class="line"><a name="l17892"></a><span class="lineno">17892</span>&#160; {</div>
<div class="line"><a name="l17893"></a><span class="lineno">17893</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l17894"></a><span class="lineno">17894</span>&#160; m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l17895"></a><span class="lineno">17895</span>&#160; assert_invariant();</div>
<div class="line"><a name="l17896"></a><span class="lineno">17896</span>&#160; }</div>
<div class="line"><a name="l17897"></a><span class="lineno">17897</span>&#160; </div>
<div class="line"><a name="l17898"></a><span class="lineno">17898</span>&#160; <span class="comment">// at only works for objects</span></div>
<div class="line"><a name="l17899"></a><span class="lineno">17899</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l17900"></a><span class="lineno">17900</span>&#160; {</div>
<div class="line"><a name="l17901"></a><span class="lineno">17901</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;operator[](key);</div>
<div class="line"><a name="l17902"></a><span class="lineno">17902</span>&#160; }</div>
<div class="line"><a name="l17903"></a><span class="lineno">17903</span>&#160; </div>
<div class="line"><a name="l17904"></a><span class="lineno">17904</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">&quot;cannot use operator[] with a string argument with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l17905"></a><span class="lineno">17905</span>&#160; }</div>
<div class="line"><a name="l17906"></a><span class="lineno">17906</span>&#160; </div>
<div class="line"><a name="l17937"></a><span class="lineno">17937</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l17938"></a><span class="lineno">17938</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l17939"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a26554213cbb1722accc460ce348c860a">17939</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> operator[](T* key)<span class="keyword"> const</span></div>
<div class="line"><a name="l17940"></a><span class="lineno">17940</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l17941"></a><span class="lineno">17941</span>&#160; <span class="comment">// at only works for objects</span></div>
<div class="line"><a name="l17942"></a><span class="lineno">17942</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l17943"></a><span class="lineno">17943</span>&#160; {</div>
<div class="line"><a name="l17944"></a><span class="lineno">17944</span>&#160; assert(m_value.object-&gt;find(key) != m_value.object-&gt;end());</div>
<div class="line"><a name="l17945"></a><span class="lineno">17945</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;find(key)-&gt;second;</div>
<div class="line"><a name="l17946"></a><span class="lineno">17946</span>&#160; }</div>
<div class="line"><a name="l17947"></a><span class="lineno">17947</span>&#160; </div>
<div class="line"><a name="l17948"></a><span class="lineno">17948</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">&quot;cannot use operator[] with a string argument with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l17949"></a><span class="lineno">17949</span>&#160; }</div>
<div class="line"><a name="l17950"></a><span class="lineno">17950</span>&#160; </div>
<div class="line"><a name="l18001"></a><span class="lineno">18001</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>ValueType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l18002"></a><span class="lineno">18002</span>&#160; std::is_convertible&lt;basic_json_t, ValueType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l18003"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">18003</a></span>&#160; ValueType <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key, <span class="keyword">const</span> ValueType&amp; default_value)<span class="keyword"> const</span></div>
<div class="line"><a name="l18004"></a><span class="lineno">18004</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l18005"></a><span class="lineno">18005</span>&#160; <span class="comment">// at only works for objects</span></div>
<div class="line"><a name="l18006"></a><span class="lineno">18006</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l18007"></a><span class="lineno">18007</span>&#160; {</div>
<div class="line"><a name="l18008"></a><span class="lineno">18008</span>&#160; <span class="comment">// if key is found, return value and given default value otherwise</span></div>
<div class="line"><a name="l18009"></a><span class="lineno">18009</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> it = <a class="code" href="classnlohmann_1_1basic__json.html#a89eb3928f57903677051c80534be9cb1">find</a>(key);</div>
<div class="line"><a name="l18010"></a><span class="lineno">18010</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>())</div>
<div class="line"><a name="l18011"></a><span class="lineno">18011</span>&#160; {</div>
<div class="line"><a name="l18012"></a><span class="lineno">18012</span>&#160; <span class="keywordflow">return</span> *it;</div>
<div class="line"><a name="l18013"></a><span class="lineno">18013</span>&#160; }</div>
<div class="line"><a name="l18014"></a><span class="lineno">18014</span>&#160; </div>
<div class="line"><a name="l18015"></a><span class="lineno">18015</span>&#160; <span class="keywordflow">return</span> default_value;</div>
<div class="line"><a name="l18016"></a><span class="lineno">18016</span>&#160; }</div>
<div class="line"><a name="l18017"></a><span class="lineno">18017</span>&#160; </div>
<div class="line"><a name="l18018"></a><span class="lineno">18018</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(306, <span class="stringliteral">&quot;cannot use value() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l18019"></a><span class="lineno">18019</span>&#160; }</div>
<div class="line"><a name="l18020"></a><span class="lineno">18020</span>&#160; </div>
<div class="line"><a name="l18025"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad6a18403e7fbac9c4efd06facc71fc88">18025</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a> <a class="code" href="classnlohmann_1_1basic__json.html#ad6a18403e7fbac9c4efd06facc71fc88">value</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key, <span class="keyword">const</span> <span class="keywordtype">char</span>* default_value)<span class="keyword"> const</span></div>
<div class="line"><a name="l18026"></a><span class="lineno">18026</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l18027"></a><span class="lineno">18027</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>(key, <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>(default_value));</div>
<div class="line"><a name="l18028"></a><span class="lineno">18028</span>&#160; }</div>
<div class="line"><a name="l18029"></a><span class="lineno">18029</span>&#160; </div>
<div class="line"><a name="l18073"></a><span class="lineno">18073</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>ValueType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l18074"></a><span class="lineno">18074</span>&#160; std::is_convertible&lt;basic_json_t, ValueType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l18075"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a671aea68432ecb28770bbc482918f023">18075</a></span>&#160; ValueType <a class="code" href="classnlohmann_1_1basic__json.html#a671aea68432ecb28770bbc482918f023">value</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; ptr, <span class="keyword">const</span> ValueType&amp; default_value)<span class="keyword"> const</span></div>
<div class="line"><a name="l18076"></a><span class="lineno">18076</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l18077"></a><span class="lineno">18077</span>&#160; <span class="comment">// at only works for objects</span></div>
<div class="line"><a name="l18078"></a><span class="lineno">18078</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l18079"></a><span class="lineno">18079</span>&#160; {</div>
<div class="line"><a name="l18080"></a><span class="lineno">18080</span>&#160; <span class="comment">// if pointer resolves a value, return it or use default value</span></div>
<div class="line"><a name="l18081"></a><span class="lineno">18081</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l18082"></a><span class="lineno">18082</span>&#160; {</div>
<div class="line"><a name="l18083"></a><span class="lineno">18083</span>&#160; <span class="keywordflow">return</span> ptr.get_checked(<span class="keyword">this</span>);</div>
<div class="line"><a name="l18084"></a><span class="lineno">18084</span>&#160; }</div>
<div class="line"><a name="l18085"></a><span class="lineno">18085</span>&#160; <a class="code" href="json_8hpp.html#a5478b7564e65634cc69432ed3cb6490e">JSON_INTERNAL_CATCH</a> (<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a>&amp;)</div>
<div class="line"><a name="l18086"></a><span class="lineno">18086</span>&#160; {</div>
<div class="line"><a name="l18087"></a><span class="lineno">18087</span>&#160; <span class="keywordflow">return</span> default_value;</div>
<div class="line"><a name="l18088"></a><span class="lineno">18088</span>&#160; }</div>
<div class="line"><a name="l18089"></a><span class="lineno">18089</span>&#160; }</div>
<div class="line"><a name="l18090"></a><span class="lineno">18090</span>&#160; </div>
<div class="line"><a name="l18091"></a><span class="lineno">18091</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(306, <span class="stringliteral">&quot;cannot use value() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l18092"></a><span class="lineno">18092</span>&#160; }</div>
<div class="line"><a name="l18093"></a><span class="lineno">18093</span>&#160; </div>
<div class="line"><a name="l18098"></a><span class="lineno">18098</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
<div class="line"><a name="l18099"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a869c900ee02cf1a68988dcce3b375424">18099</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a> <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>(const <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; ptr, const <span class="keywordtype">char</span>* default_value)<span class="keyword"> const</span></div>
<div class="line"><a name="l18100"></a><span class="lineno">18100</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l18101"></a><span class="lineno">18101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>(ptr, <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>(default_value));</div>
<div class="line"><a name="l18102"></a><span class="lineno">18102</span>&#160; }</div>
<div class="line"><a name="l18103"></a><span class="lineno">18103</span>&#160; </div>
<div class="line"><a name="l18129"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a3acba9c6ceb7214e565fe08c3ba5b352">18129</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a3acba9c6ceb7214e565fe08c3ba5b352">front</a>()</div>
<div class="line"><a name="l18130"></a><span class="lineno">18130</span>&#160; {</div>
<div class="line"><a name="l18131"></a><span class="lineno">18131</span>&#160; <span class="keywordflow">return</span> *<a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>();</div>
<div class="line"><a name="l18132"></a><span class="lineno">18132</span>&#160; }</div>
<div class="line"><a name="l18133"></a><span class="lineno">18133</span>&#160; </div>
<div class="line"><a name="l18137"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4b1fb3671ade9afc8d33b2c9510acbfc">18137</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a4b1fb3671ade9afc8d33b2c9510acbfc">front</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l18138"></a><span class="lineno">18138</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l18139"></a><span class="lineno">18139</span>&#160; <span class="keywordflow">return</span> *<a class="code" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">cbegin</a>();</div>
<div class="line"><a name="l18140"></a><span class="lineno">18140</span>&#160; }</div>
<div class="line"><a name="l18141"></a><span class="lineno">18141</span>&#160; </div>
<div class="line"><a name="l18173"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a011397134847f36db0ed7d7a93753677">18173</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a011397134847f36db0ed7d7a93753677">back</a>()</div>
<div class="line"><a name="l18174"></a><span class="lineno">18174</span>&#160; {</div>
<div class="line"><a name="l18175"></a><span class="lineno">18175</span>&#160; <span class="keyword">auto</span> tmp = <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>();</div>
<div class="line"><a name="l18176"></a><span class="lineno">18176</span>&#160; --tmp;</div>
<div class="line"><a name="l18177"></a><span class="lineno">18177</span>&#160; <span class="keywordflow">return</span> *tmp;</div>
<div class="line"><a name="l18178"></a><span class="lineno">18178</span>&#160; }</div>
<div class="line"><a name="l18179"></a><span class="lineno">18179</span>&#160; </div>
<div class="line"><a name="l18183"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a83fe4a151b3a591f357527d5d9aa1b9f">18183</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a83fe4a151b3a591f357527d5d9aa1b9f">back</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l18184"></a><span class="lineno">18184</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l18185"></a><span class="lineno">18185</span>&#160; <span class="keyword">auto</span> tmp = <a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>();</div>
<div class="line"><a name="l18186"></a><span class="lineno">18186</span>&#160; --tmp;</div>
<div class="line"><a name="l18187"></a><span class="lineno">18187</span>&#160; <span class="keywordflow">return</span> *tmp;</div>
<div class="line"><a name="l18188"></a><span class="lineno">18188</span>&#160; }</div>
<div class="line"><a name="l18189"></a><span class="lineno">18189</span>&#160; </div>
<div class="line"><a name="l18236"></a><span class="lineno">18236</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>IteratorType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l18237"></a><span class="lineno">18237</span>&#160; std::is_same&lt;IteratorType, typename basic_json_t::iterator&gt;::value or</div>
<div class="line"><a name="l18238"></a><span class="lineno">18238</span>&#160; std::is_same&lt;IteratorType, typename basic_json_t::const_iterator&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a></div>
<div class="line"><a name="l18239"></a><span class="lineno">18239</span>&#160; = 0&gt;</div>
<div class="line"><a name="l18240"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a068a16e76be178e83da6a192916923ed">18240</a></span>&#160; IteratorType <a class="code" href="classnlohmann_1_1basic__json.html#a068a16e76be178e83da6a192916923ed">erase</a>(IteratorType pos)</div>
<div class="line"><a name="l18241"></a><span class="lineno">18241</span>&#160; {</div>
<div class="line"><a name="l18242"></a><span class="lineno">18242</span>&#160; <span class="comment">// make sure iterator fits the current value</span></div>
<div class="line"><a name="l18243"></a><span class="lineno">18243</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<span class="keyword">this</span> != pos.m_object))</div>
<div class="line"><a name="l18244"></a><span class="lineno">18244</span>&#160; {</div>
<div class="line"><a name="l18245"></a><span class="lineno">18245</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">&quot;iterator does not fit current value&quot;</span>));</div>
<div class="line"><a name="l18246"></a><span class="lineno">18246</span>&#160; }</div>
<div class="line"><a name="l18247"></a><span class="lineno">18247</span>&#160; </div>
<div class="line"><a name="l18248"></a><span class="lineno">18248</span>&#160; IteratorType result = <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>();</div>
<div class="line"><a name="l18249"></a><span class="lineno">18249</span>&#160; </div>
<div class="line"><a name="l18250"></a><span class="lineno">18250</span>&#160; <span class="keywordflow">switch</span> (m_type)</div>
<div class="line"><a name="l18251"></a><span class="lineno">18251</span>&#160; {</div>
<div class="line"><a name="l18252"></a><span class="lineno">18252</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l18253"></a><span class="lineno">18253</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l18254"></a><span class="lineno">18254</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l18255"></a><span class="lineno">18255</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l18256"></a><span class="lineno">18256</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l18257"></a><span class="lineno">18257</span>&#160; {</div>
<div class="line"><a name="l18258"></a><span class="lineno">18258</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not pos.m_it.primitive_iterator.is_begin()))</div>
<div class="line"><a name="l18259"></a><span class="lineno">18259</span>&#160; {</div>
<div class="line"><a name="l18260"></a><span class="lineno">18260</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(205, <span class="stringliteral">&quot;iterator out of range&quot;</span>));</div>
<div class="line"><a name="l18261"></a><span class="lineno">18261</span>&#160; }</div>
<div class="line"><a name="l18262"></a><span class="lineno">18262</span>&#160; </div>
<div class="line"><a name="l18263"></a><span class="lineno">18263</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>())</div>
<div class="line"><a name="l18264"></a><span class="lineno">18264</span>&#160; {</div>
<div class="line"><a name="l18265"></a><span class="lineno">18265</span>&#160; AllocatorType&lt;string_t&gt; alloc;</div>
<div class="line"><a name="l18266"></a><span class="lineno">18266</span>&#160; std::allocator_traits&lt;decltype(alloc)&gt;::destroy(alloc, m_value.string);</div>
<div class="line"><a name="l18267"></a><span class="lineno">18267</span>&#160; std::allocator_traits&lt;decltype(alloc)&gt;::deallocate(alloc, m_value.string, 1);</div>
<div class="line"><a name="l18268"></a><span class="lineno">18268</span>&#160; m_value.string = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l18269"></a><span class="lineno">18269</span>&#160; }</div>
<div class="line"><a name="l18270"></a><span class="lineno">18270</span>&#160; </div>
<div class="line"><a name="l18271"></a><span class="lineno">18271</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
<div class="line"><a name="l18272"></a><span class="lineno">18272</span>&#160; assert_invariant();</div>
<div class="line"><a name="l18273"></a><span class="lineno">18273</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l18274"></a><span class="lineno">18274</span>&#160; }</div>
<div class="line"><a name="l18275"></a><span class="lineno">18275</span>&#160; </div>
<div class="line"><a name="l18276"></a><span class="lineno">18276</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l18277"></a><span class="lineno">18277</span>&#160; {</div>
<div class="line"><a name="l18278"></a><span class="lineno">18278</span>&#160; result.m_it.object_iterator = m_value.object-&gt;erase(pos.m_it.object_iterator);</div>
<div class="line"><a name="l18279"></a><span class="lineno">18279</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l18280"></a><span class="lineno">18280</span>&#160; }</div>
<div class="line"><a name="l18281"></a><span class="lineno">18281</span>&#160; </div>
<div class="line"><a name="l18282"></a><span class="lineno">18282</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l18283"></a><span class="lineno">18283</span>&#160; {</div>
<div class="line"><a name="l18284"></a><span class="lineno">18284</span>&#160; result.m_it.array_iterator = m_value.array-&gt;erase(pos.m_it.array_iterator);</div>
<div class="line"><a name="l18285"></a><span class="lineno">18285</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l18286"></a><span class="lineno">18286</span>&#160; }</div>
<div class="line"><a name="l18287"></a><span class="lineno">18287</span>&#160; </div>
<div class="line"><a name="l18288"></a><span class="lineno">18288</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l18289"></a><span class="lineno">18289</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(307, <span class="stringliteral">&quot;cannot use erase() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l18290"></a><span class="lineno">18290</span>&#160; }</div>
<div class="line"><a name="l18291"></a><span class="lineno">18291</span>&#160; </div>
<div class="line"><a name="l18292"></a><span class="lineno">18292</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l18293"></a><span class="lineno">18293</span>&#160; }</div>
<div class="line"><a name="l18294"></a><span class="lineno">18294</span>&#160; </div>
<div class="line"><a name="l18341"></a><span class="lineno">18341</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>IteratorType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l18342"></a><span class="lineno">18342</span>&#160; std::is_same&lt;IteratorType, typename basic_json_t::iterator&gt;::value or</div>
<div class="line"><a name="l18343"></a><span class="lineno">18343</span>&#160; std::is_same&lt;IteratorType, typename basic_json_t::const_iterator&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a></div>
<div class="line"><a name="l18344"></a><span class="lineno">18344</span>&#160; = 0&gt;</div>
<div class="line"><a name="l18345"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4b3f7eb2d4625d95a51fbbdceb7c5f39">18345</a></span>&#160; IteratorType <a class="code" href="classnlohmann_1_1basic__json.html#a4b3f7eb2d4625d95a51fbbdceb7c5f39">erase</a>(IteratorType first, IteratorType last)</div>
<div class="line"><a name="l18346"></a><span class="lineno">18346</span>&#160; {</div>
<div class="line"><a name="l18347"></a><span class="lineno">18347</span>&#160; <span class="comment">// make sure iterator fits the current value</span></div>
<div class="line"><a name="l18348"></a><span class="lineno">18348</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<span class="keyword">this</span> != first.m_object or <span class="keyword">this</span> != last.m_object))</div>
<div class="line"><a name="l18349"></a><span class="lineno">18349</span>&#160; {</div>
<div class="line"><a name="l18350"></a><span class="lineno">18350</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(203, <span class="stringliteral">&quot;iterators do not fit current value&quot;</span>));</div>
<div class="line"><a name="l18351"></a><span class="lineno">18351</span>&#160; }</div>
<div class="line"><a name="l18352"></a><span class="lineno">18352</span>&#160; </div>
<div class="line"><a name="l18353"></a><span class="lineno">18353</span>&#160; IteratorType result = <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>();</div>
<div class="line"><a name="l18354"></a><span class="lineno">18354</span>&#160; </div>
<div class="line"><a name="l18355"></a><span class="lineno">18355</span>&#160; <span class="keywordflow">switch</span> (m_type)</div>
<div class="line"><a name="l18356"></a><span class="lineno">18356</span>&#160; {</div>
<div class="line"><a name="l18357"></a><span class="lineno">18357</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l18358"></a><span class="lineno">18358</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l18359"></a><span class="lineno">18359</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l18360"></a><span class="lineno">18360</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l18361"></a><span class="lineno">18361</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l18362"></a><span class="lineno">18362</span>&#160; {</div>
<div class="line"><a name="l18363"></a><span class="lineno">18363</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(not first.m_it.primitive_iterator.is_begin()</div>
<div class="line"><a name="l18364"></a><span class="lineno">18364</span>&#160; or not last.m_it.primitive_iterator.is_end()))</div>
<div class="line"><a name="l18365"></a><span class="lineno">18365</span>&#160; {</div>
<div class="line"><a name="l18366"></a><span class="lineno">18366</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(204, <span class="stringliteral">&quot;iterators out of range&quot;</span>));</div>
<div class="line"><a name="l18367"></a><span class="lineno">18367</span>&#160; }</div>
<div class="line"><a name="l18368"></a><span class="lineno">18368</span>&#160; </div>
<div class="line"><a name="l18369"></a><span class="lineno">18369</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>())</div>
<div class="line"><a name="l18370"></a><span class="lineno">18370</span>&#160; {</div>
<div class="line"><a name="l18371"></a><span class="lineno">18371</span>&#160; AllocatorType&lt;string_t&gt; alloc;</div>
<div class="line"><a name="l18372"></a><span class="lineno">18372</span>&#160; std::allocator_traits&lt;decltype(alloc)&gt;::destroy(alloc, m_value.string);</div>
<div class="line"><a name="l18373"></a><span class="lineno">18373</span>&#160; std::allocator_traits&lt;decltype(alloc)&gt;::deallocate(alloc, m_value.string, 1);</div>
<div class="line"><a name="l18374"></a><span class="lineno">18374</span>&#160; m_value.string = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l18375"></a><span class="lineno">18375</span>&#160; }</div>
<div class="line"><a name="l18376"></a><span class="lineno">18376</span>&#160; </div>
<div class="line"><a name="l18377"></a><span class="lineno">18377</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
<div class="line"><a name="l18378"></a><span class="lineno">18378</span>&#160; assert_invariant();</div>
<div class="line"><a name="l18379"></a><span class="lineno">18379</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l18380"></a><span class="lineno">18380</span>&#160; }</div>
<div class="line"><a name="l18381"></a><span class="lineno">18381</span>&#160; </div>
<div class="line"><a name="l18382"></a><span class="lineno">18382</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l18383"></a><span class="lineno">18383</span>&#160; {</div>
<div class="line"><a name="l18384"></a><span class="lineno">18384</span>&#160; result.m_it.object_iterator = m_value.object-&gt;erase(first.m_it.object_iterator,</div>
<div class="line"><a name="l18385"></a><span class="lineno">18385</span>&#160; last.m_it.object_iterator);</div>
<div class="line"><a name="l18386"></a><span class="lineno">18386</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l18387"></a><span class="lineno">18387</span>&#160; }</div>
<div class="line"><a name="l18388"></a><span class="lineno">18388</span>&#160; </div>
<div class="line"><a name="l18389"></a><span class="lineno">18389</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l18390"></a><span class="lineno">18390</span>&#160; {</div>
<div class="line"><a name="l18391"></a><span class="lineno">18391</span>&#160; result.m_it.array_iterator = m_value.array-&gt;erase(first.m_it.array_iterator,</div>
<div class="line"><a name="l18392"></a><span class="lineno">18392</span>&#160; last.m_it.array_iterator);</div>
<div class="line"><a name="l18393"></a><span class="lineno">18393</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l18394"></a><span class="lineno">18394</span>&#160; }</div>
<div class="line"><a name="l18395"></a><span class="lineno">18395</span>&#160; </div>
<div class="line"><a name="l18396"></a><span class="lineno">18396</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l18397"></a><span class="lineno">18397</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(307, <span class="stringliteral">&quot;cannot use erase() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l18398"></a><span class="lineno">18398</span>&#160; }</div>
<div class="line"><a name="l18399"></a><span class="lineno">18399</span>&#160; </div>
<div class="line"><a name="l18400"></a><span class="lineno">18400</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l18401"></a><span class="lineno">18401</span>&#160; }</div>
<div class="line"><a name="l18402"></a><span class="lineno">18402</span>&#160; </div>
<div class="line"><a name="l18432"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2f8484d69c55d8f2a9697a7bec29362a">18432</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json.html#a2f8484d69c55d8f2a9697a7bec29362a">erase</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key)</div>
<div class="line"><a name="l18433"></a><span class="lineno">18433</span>&#160; {</div>
<div class="line"><a name="l18434"></a><span class="lineno">18434</span>&#160; <span class="comment">// this erase only works for objects</span></div>
<div class="line"><a name="l18435"></a><span class="lineno">18435</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l18436"></a><span class="lineno">18436</span>&#160; {</div>
<div class="line"><a name="l18437"></a><span class="lineno">18437</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;erase(key);</div>
<div class="line"><a name="l18438"></a><span class="lineno">18438</span>&#160; }</div>
<div class="line"><a name="l18439"></a><span class="lineno">18439</span>&#160; </div>
<div class="line"><a name="l18440"></a><span class="lineno">18440</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(307, <span class="stringliteral">&quot;cannot use erase() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l18441"></a><span class="lineno">18441</span>&#160; }</div>
<div class="line"><a name="l18442"></a><span class="lineno">18442</span>&#160; </div>
<div class="line"><a name="l18467"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a88cbcefe9a3f4d294bed0653550a5cb9">18467</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a88cbcefe9a3f4d294bed0653550a5cb9">erase</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> idx)</div>
<div class="line"><a name="l18468"></a><span class="lineno">18468</span>&#160; {</div>
<div class="line"><a name="l18469"></a><span class="lineno">18469</span>&#160; <span class="comment">// this erase only works for arrays</span></div>
<div class="line"><a name="l18470"></a><span class="lineno">18470</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
<div class="line"><a name="l18471"></a><span class="lineno">18471</span>&#160; {</div>
<div class="line"><a name="l18472"></a><span class="lineno">18472</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(idx &gt;= <a class="code" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">size</a>()))</div>
<div class="line"><a name="l18473"></a><span class="lineno">18473</span>&#160; {</div>
<div class="line"><a name="l18474"></a><span class="lineno">18474</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(401, <span class="stringliteral">&quot;array index &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(idx) + <span class="stringliteral">&quot; is out of range&quot;</span>));</div>
<div class="line"><a name="l18475"></a><span class="lineno">18475</span>&#160; }</div>
<div class="line"><a name="l18476"></a><span class="lineno">18476</span>&#160; </div>
<div class="line"><a name="l18477"></a><span class="lineno">18477</span>&#160; m_value.array-&gt;erase(m_value.array-&gt;begin() + <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">difference_type</a><span class="keyword">&gt;</span>(idx));</div>
<div class="line"><a name="l18478"></a><span class="lineno">18478</span>&#160; }</div>
<div class="line"><a name="l18479"></a><span class="lineno">18479</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l18480"></a><span class="lineno">18480</span>&#160; {</div>
<div class="line"><a name="l18481"></a><span class="lineno">18481</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(307, <span class="stringliteral">&quot;cannot use erase() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l18482"></a><span class="lineno">18482</span>&#160; }</div>
<div class="line"><a name="l18483"></a><span class="lineno">18483</span>&#160; }</div>
<div class="line"><a name="l18484"></a><span class="lineno">18484</span>&#160; </div>
<div class="line"><a name="l18486"></a><span class="lineno">18486</span>&#160; </div>
<div class="line"><a name="l18487"></a><span class="lineno">18487</span>&#160; </div>
<div class="line"><a name="l18489"></a><span class="lineno">18489</span>&#160; <span class="comment">// lookup //</span></div>
<div class="line"><a name="l18491"></a><span class="lineno">18491</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l18494"></a><span class="lineno">18494</span>&#160; </div>
<div class="line"><a name="l18519"></a><span class="lineno">18519</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> KeyT&gt;</div>
<div class="line"><a name="l18520"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a89eb3928f57903677051c80534be9cb1">18520</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a89eb3928f57903677051c80534be9cb1">find</a>(KeyT&amp;&amp; key)</div>
<div class="line"><a name="l18521"></a><span class="lineno">18521</span>&#160; {</div>
<div class="line"><a name="l18522"></a><span class="lineno">18522</span>&#160; <span class="keyword">auto</span> result = <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>();</div>
<div class="line"><a name="l18523"></a><span class="lineno">18523</span>&#160; </div>
<div class="line"><a name="l18524"></a><span class="lineno">18524</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>())</div>
<div class="line"><a name="l18525"></a><span class="lineno">18525</span>&#160; {</div>
<div class="line"><a name="l18526"></a><span class="lineno">18526</span>&#160; result.m_it.object_iterator = m_value.object-&gt;find(std::forward&lt;KeyT&gt;(key));</div>
<div class="line"><a name="l18527"></a><span class="lineno">18527</span>&#160; }</div>
<div class="line"><a name="l18528"></a><span class="lineno">18528</span>&#160; </div>
<div class="line"><a name="l18529"></a><span class="lineno">18529</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l18530"></a><span class="lineno">18530</span>&#160; }</div>
<div class="line"><a name="l18531"></a><span class="lineno">18531</span>&#160; </div>
<div class="line"><a name="l18536"></a><span class="lineno">18536</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> KeyT&gt;</div>
<div class="line"><a name="l18537"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae625a0647486edf2bb38c849ca67f934">18537</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#ae625a0647486edf2bb38c849ca67f934">find</a>(KeyT&amp;&amp; key)<span class="keyword"> const</span></div>
<div class="line"><a name="l18538"></a><span class="lineno">18538</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l18539"></a><span class="lineno">18539</span>&#160; <span class="keyword">auto</span> result = <a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>();</div>
<div class="line"><a name="l18540"></a><span class="lineno">18540</span>&#160; </div>
<div class="line"><a name="l18541"></a><span class="lineno">18541</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>())</div>
<div class="line"><a name="l18542"></a><span class="lineno">18542</span>&#160; {</div>
<div class="line"><a name="l18543"></a><span class="lineno">18543</span>&#160; result.m_it.object_iterator = m_value.object-&gt;find(std::forward&lt;KeyT&gt;(key));</div>
<div class="line"><a name="l18544"></a><span class="lineno">18544</span>&#160; }</div>
<div class="line"><a name="l18545"></a><span class="lineno">18545</span>&#160; </div>
<div class="line"><a name="l18546"></a><span class="lineno">18546</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l18547"></a><span class="lineno">18547</span>&#160; }</div>
<div class="line"><a name="l18548"></a><span class="lineno">18548</span>&#160; </div>
<div class="line"><a name="l18570"></a><span class="lineno">18570</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> KeyT&gt;</div>
<div class="line"><a name="l18571"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a0d74bfcf65662f1d66d14c34b0027098">18571</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json.html#a0d74bfcf65662f1d66d14c34b0027098">count</a>(KeyT&amp;&amp; key)<span class="keyword"> const</span></div>
<div class="line"><a name="l18572"></a><span class="lineno">18572</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l18573"></a><span class="lineno">18573</span>&#160; <span class="comment">// return 0 for all nonobject types</span></div>
<div class="line"><a name="l18574"></a><span class="lineno">18574</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() ? m_value.object-&gt;count(std::forward&lt;KeyT&gt;(key)) : 0;</div>
<div class="line"><a name="l18575"></a><span class="lineno">18575</span>&#160; }</div>
<div class="line"><a name="l18576"></a><span class="lineno">18576</span>&#160; </div>
<div class="line"><a name="l18602"></a><span class="lineno">18602</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> KeyT, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l18603"></a><span class="lineno">18603</span>&#160; not std::is_same&lt;typename std::decay&lt;KeyT&gt;::type, <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l18604"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9286acdc0578fc66e9346323e69fc0e3">18604</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a9286acdc0578fc66e9346323e69fc0e3">contains</a>(KeyT &amp;&amp; key)<span class="keyword"> const</span></div>
<div class="line"><a name="l18605"></a><span class="lineno">18605</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l18606"></a><span class="lineno">18606</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() and m_value.object-&gt;find(std::forward&lt;KeyT&gt;(key)) != m_value.object-&gt;end();</div>
<div class="line"><a name="l18607"></a><span class="lineno">18607</span>&#160; }</div>
<div class="line"><a name="l18608"></a><span class="lineno">18608</span>&#160; </div>
<div class="line"><a name="l18635"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab23b04802eb9da97dc3f664e54e09cb3">18635</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab23b04802eb9da97dc3f664e54e09cb3">contains</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; ptr)<span class="keyword"> const</span></div>
<div class="line"><a name="l18636"></a><span class="lineno">18636</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l18637"></a><span class="lineno">18637</span>&#160; <span class="keywordflow">return</span> ptr.contains(<span class="keyword">this</span>);</div>
<div class="line"><a name="l18638"></a><span class="lineno">18638</span>&#160; }</div>
<div class="line"><a name="l18639"></a><span class="lineno">18639</span>&#160; </div>
<div class="line"><a name="l18641"></a><span class="lineno">18641</span>&#160; </div>
<div class="line"><a name="l18642"></a><span class="lineno">18642</span>&#160; </div>
<div class="line"><a name="l18644"></a><span class="lineno">18644</span>&#160; <span class="comment">// iterators //</span></div>
<div class="line"><a name="l18646"></a><span class="lineno">18646</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l18649"></a><span class="lineno">18649</span>&#160; </div>
<div class="line"><a name="l18674"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">18674</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>() noexcept</div>
<div class="line"><a name="l18675"></a><span class="lineno">18675</span>&#160; {</div>
<div class="line"><a name="l18676"></a><span class="lineno">18676</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> result(<span class="keyword">this</span>);</div>
<div class="line"><a name="l18677"></a><span class="lineno">18677</span>&#160; result.set_begin();</div>
<div class="line"><a name="l18678"></a><span class="lineno">18678</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l18679"></a><span class="lineno">18679</span>&#160; }</div>
<div class="line"><a name="l18680"></a><span class="lineno">18680</span>&#160; </div>
<div class="line"><a name="l18684"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4f0f5dd42b2987ff20306ed78bd31d1d">18684</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a4f0f5dd42b2987ff20306ed78bd31d1d">begin</a>() const noexcept</div>
<div class="line"><a name="l18685"></a><span class="lineno">18685</span>&#160; {</div>
<div class="line"><a name="l18686"></a><span class="lineno">18686</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">cbegin</a>();</div>
<div class="line"><a name="l18687"></a><span class="lineno">18687</span>&#160; }</div>
<div class="line"><a name="l18688"></a><span class="lineno">18688</span>&#160; </div>
<div class="line"><a name="l18714"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">18714</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">cbegin</a>() const noexcept</div>
<div class="line"><a name="l18715"></a><span class="lineno">18715</span>&#160; {</div>
<div class="line"><a name="l18716"></a><span class="lineno">18716</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> result(<span class="keyword">this</span>);</div>
<div class="line"><a name="l18717"></a><span class="lineno">18717</span>&#160; result.set_begin();</div>
<div class="line"><a name="l18718"></a><span class="lineno">18718</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l18719"></a><span class="lineno">18719</span>&#160; }</div>
<div class="line"><a name="l18720"></a><span class="lineno">18720</span>&#160; </div>
<div class="line"><a name="l18745"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">18745</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>() noexcept</div>
<div class="line"><a name="l18746"></a><span class="lineno">18746</span>&#160; {</div>
<div class="line"><a name="l18747"></a><span class="lineno">18747</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> result(<span class="keyword">this</span>);</div>
<div class="line"><a name="l18748"></a><span class="lineno">18748</span>&#160; result.set_end();</div>
<div class="line"><a name="l18749"></a><span class="lineno">18749</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l18750"></a><span class="lineno">18750</span>&#160; }</div>
<div class="line"><a name="l18751"></a><span class="lineno">18751</span>&#160; </div>
<div class="line"><a name="l18755"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1c15707055088cd5436ae91db72cbe67">18755</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1c15707055088cd5436ae91db72cbe67">end</a>() const noexcept</div>
<div class="line"><a name="l18756"></a><span class="lineno">18756</span>&#160; {</div>
<div class="line"><a name="l18757"></a><span class="lineno">18757</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>();</div>
<div class="line"><a name="l18758"></a><span class="lineno">18758</span>&#160; }</div>
<div class="line"><a name="l18759"></a><span class="lineno">18759</span>&#160; </div>
<div class="line"><a name="l18785"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">18785</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>() const noexcept</div>
<div class="line"><a name="l18786"></a><span class="lineno">18786</span>&#160; {</div>
<div class="line"><a name="l18787"></a><span class="lineno">18787</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> result(<span class="keyword">this</span>);</div>
<div class="line"><a name="l18788"></a><span class="lineno">18788</span>&#160; result.set_end();</div>
<div class="line"><a name="l18789"></a><span class="lineno">18789</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l18790"></a><span class="lineno">18790</span>&#160; }</div>
<div class="line"><a name="l18791"></a><span class="lineno">18791</span>&#160; </div>
<div class="line"><a name="l18815"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1ef93e2006dbe52667294f5ef38b0b10">18815</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1ef93e2006dbe52667294f5ef38b0b10">rbegin</a>() noexcept</div>
<div class="line"><a name="l18816"></a><span class="lineno">18816</span>&#160; {</div>
<div class="line"><a name="l18817"></a><span class="lineno">18817</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#ac223d5560c2b05a208c88de67376c5f2">reverse_iterator</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>());</div>
<div class="line"><a name="l18818"></a><span class="lineno">18818</span>&#160; }</div>
<div class="line"><a name="l18819"></a><span class="lineno">18819</span>&#160; </div>
<div class="line"><a name="l18823"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a515e7618392317dbf4b72d3e18bf2ab2">18823</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a515e7618392317dbf4b72d3e18bf2ab2">rbegin</a>() const noexcept</div>
<div class="line"><a name="l18824"></a><span class="lineno">18824</span>&#160; {</div>
<div class="line"><a name="l18825"></a><span class="lineno">18825</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a1e0769d22d54573f294da0e5c6abc9de">crbegin</a>();</div>
<div class="line"><a name="l18826"></a><span class="lineno">18826</span>&#160; }</div>
<div class="line"><a name="l18827"></a><span class="lineno">18827</span>&#160; </div>
<div class="line"><a name="l18852"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac77aed0925d447744676725ab0b6d535">18852</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#ac77aed0925d447744676725ab0b6d535">rend</a>() noexcept</div>
<div class="line"><a name="l18853"></a><span class="lineno">18853</span>&#160; {</div>
<div class="line"><a name="l18854"></a><span class="lineno">18854</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#ac223d5560c2b05a208c88de67376c5f2">reverse_iterator</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>());</div>
<div class="line"><a name="l18855"></a><span class="lineno">18855</span>&#160; }</div>
<div class="line"><a name="l18856"></a><span class="lineno">18856</span>&#160; </div>
<div class="line"><a name="l18860"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4f73d4cee67ea328d785979c22af0ae1">18860</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a4f73d4cee67ea328d785979c22af0ae1">rend</a>() const noexcept</div>
<div class="line"><a name="l18861"></a><span class="lineno">18861</span>&#160; {</div>
<div class="line"><a name="l18862"></a><span class="lineno">18862</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5795b029dbf28e0cb2c7a439ec5d0a88">crend</a>();</div>
<div class="line"><a name="l18863"></a><span class="lineno">18863</span>&#160; }</div>
<div class="line"><a name="l18864"></a><span class="lineno">18864</span>&#160; </div>
<div class="line"><a name="l18889"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1e0769d22d54573f294da0e5c6abc9de">18889</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1e0769d22d54573f294da0e5c6abc9de">crbegin</a>() const noexcept</div>
<div class="line"><a name="l18890"></a><span class="lineno">18890</span>&#160; {</div>
<div class="line"><a name="l18891"></a><span class="lineno">18891</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a72be3c24bfa24f0993d6c11af03e7404">const_reverse_iterator</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>());</div>
<div class="line"><a name="l18892"></a><span class="lineno">18892</span>&#160; }</div>
<div class="line"><a name="l18893"></a><span class="lineno">18893</span>&#160; </div>
<div class="line"><a name="l18918"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5795b029dbf28e0cb2c7a439ec5d0a88">18918</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a5795b029dbf28e0cb2c7a439ec5d0a88">crend</a>() const noexcept</div>
<div class="line"><a name="l18919"></a><span class="lineno">18919</span>&#160; {</div>
<div class="line"><a name="l18920"></a><span class="lineno">18920</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a72be3c24bfa24f0993d6c11af03e7404">const_reverse_iterator</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">cbegin</a>());</div>
<div class="line"><a name="l18921"></a><span class="lineno">18921</span>&#160; }</div>
<div class="line"><a name="l18922"></a><span class="lineno">18922</span>&#160; </div>
<div class="line"><a name="l18923"></a><span class="lineno">18923</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l18981"></a><span class="lineno">18981</span>&#160; <a class="code" href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c">JSON_HEDLEY_DEPRECATED</a>(3.1.0)</div>
<div class="line"><a name="l18982"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5e4212986136ca1220f351c60e89906b">18982</a></span>&#160; static <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy</a>&lt;<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a>&gt; <a class="code" href="classnlohmann_1_1basic__json.html#a5e4212986136ca1220f351c60e89906b">iterator_wrapper</a>(<a class="code" href="classnlohmann_1_1basic__json.html">reference</a> ref) noexcept</div>
<div class="line"><a name="l18983"></a><span class="lineno">18983</span>&#160; {</div>
<div class="line"><a name="l18984"></a><span class="lineno">18984</span>&#160; <span class="keywordflow">return</span> ref.items();</div>
<div class="line"><a name="l18985"></a><span class="lineno">18985</span>&#160; }</div>
<div class="line"><a name="l18986"></a><span class="lineno">18986</span>&#160; </div>
<div class="line"><a name="l18990"></a><span class="lineno">18990</span>&#160; <a class="code" href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c">JSON_HEDLEY_DEPRECATED</a>(3.1.0)</div>
<div class="line"><a name="l18991"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4d8795ce15be7ce2a95260663bde640d">18991</a></span>&#160; static <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy</a>&lt;<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a>&gt; <a class="code" href="classnlohmann_1_1basic__json.html#a5e4212986136ca1220f351c60e89906b">iterator_wrapper</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> ref) noexcept</div>
<div class="line"><a name="l18992"></a><span class="lineno">18992</span>&#160; {</div>
<div class="line"><a name="l18993"></a><span class="lineno">18993</span>&#160; <span class="keywordflow">return</span> ref.items();</div>
<div class="line"><a name="l18994"></a><span class="lineno">18994</span>&#160; }</div>
<div class="line"><a name="l18995"></a><span class="lineno">18995</span>&#160; </div>
<div class="line"><a name="l19059"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#afe3e137ace692efa08590d8df40f58dd">19059</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy&lt;iterator&gt;</a> <a class="code" href="classnlohmann_1_1basic__json.html#afe3e137ace692efa08590d8df40f58dd">items</a>() noexcept</div>
<div class="line"><a name="l19060"></a><span class="lineno">19060</span>&#160; {</div>
<div class="line"><a name="l19061"></a><span class="lineno">19061</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy&lt;iterator&gt;</a>(*<span class="keyword">this</span>);</div>
<div class="line"><a name="l19062"></a><span class="lineno">19062</span>&#160; }</div>
<div class="line"><a name="l19063"></a><span class="lineno">19063</span>&#160; </div>
<div class="line"><a name="l19067"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a71dd7adfca43660c10e6624f4b5c290c">19067</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy&lt;const_iterator&gt;</a> <a class="code" href="classnlohmann_1_1basic__json.html#a71dd7adfca43660c10e6624f4b5c290c">items</a>() const noexcept</div>
<div class="line"><a name="l19068"></a><span class="lineno">19068</span>&#160; {</div>
<div class="line"><a name="l19069"></a><span class="lineno">19069</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy&lt;const_iterator&gt;</a>(*<span class="keyword">this</span>);</div>
<div class="line"><a name="l19070"></a><span class="lineno">19070</span>&#160; }</div>
<div class="line"><a name="l19071"></a><span class="lineno">19071</span>&#160; </div>
<div class="line"><a name="l19073"></a><span class="lineno">19073</span>&#160; </div>
<div class="line"><a name="l19074"></a><span class="lineno">19074</span>&#160; </div>
<div class="line"><a name="l19076"></a><span class="lineno">19076</span>&#160; <span class="comment">// capacity //</span></div>
<div class="line"><a name="l19078"></a><span class="lineno">19078</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l19081"></a><span class="lineno">19081</span>&#160; </div>
<div class="line"><a name="l19123"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1a86d444bfeaa9518d2421aedd74444a">19123</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a1a86d444bfeaa9518d2421aedd74444a">empty</a>() const noexcept</div>
<div class="line"><a name="l19124"></a><span class="lineno">19124</span>&#160; {</div>
<div class="line"><a name="l19125"></a><span class="lineno">19125</span>&#160; <span class="keywordflow">switch</span> (m_type)</div>
<div class="line"><a name="l19126"></a><span class="lineno">19126</span>&#160; {</div>
<div class="line"><a name="l19127"></a><span class="lineno">19127</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l19128"></a><span class="lineno">19128</span>&#160; {</div>
<div class="line"><a name="l19129"></a><span class="lineno">19129</span>&#160; <span class="comment">// null values are empty</span></div>
<div class="line"><a name="l19130"></a><span class="lineno">19130</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l19131"></a><span class="lineno">19131</span>&#160; }</div>
<div class="line"><a name="l19132"></a><span class="lineno">19132</span>&#160; </div>
<div class="line"><a name="l19133"></a><span class="lineno">19133</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l19134"></a><span class="lineno">19134</span>&#160; {</div>
<div class="line"><a name="l19135"></a><span class="lineno">19135</span>&#160; <span class="comment">// delegate call to array_t::empty()</span></div>
<div class="line"><a name="l19136"></a><span class="lineno">19136</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;empty();</div>
<div class="line"><a name="l19137"></a><span class="lineno">19137</span>&#160; }</div>
<div class="line"><a name="l19138"></a><span class="lineno">19138</span>&#160; </div>
<div class="line"><a name="l19139"></a><span class="lineno">19139</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l19140"></a><span class="lineno">19140</span>&#160; {</div>
<div class="line"><a name="l19141"></a><span class="lineno">19141</span>&#160; <span class="comment">// delegate call to object_t::empty()</span></div>
<div class="line"><a name="l19142"></a><span class="lineno">19142</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;empty();</div>
<div class="line"><a name="l19143"></a><span class="lineno">19143</span>&#160; }</div>
<div class="line"><a name="l19144"></a><span class="lineno">19144</span>&#160; </div>
<div class="line"><a name="l19145"></a><span class="lineno">19145</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l19146"></a><span class="lineno">19146</span>&#160; {</div>
<div class="line"><a name="l19147"></a><span class="lineno">19147</span>&#160; <span class="comment">// all other types are nonempty</span></div>
<div class="line"><a name="l19148"></a><span class="lineno">19148</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l19149"></a><span class="lineno">19149</span>&#160; }</div>
<div class="line"><a name="l19150"></a><span class="lineno">19150</span>&#160; }</div>
<div class="line"><a name="l19151"></a><span class="lineno">19151</span>&#160; }</div>
<div class="line"><a name="l19152"></a><span class="lineno">19152</span>&#160; </div>
<div class="line"><a name="l19195"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">19195</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">size</a>() const noexcept</div>
<div class="line"><a name="l19196"></a><span class="lineno">19196</span>&#160; {</div>
<div class="line"><a name="l19197"></a><span class="lineno">19197</span>&#160; <span class="keywordflow">switch</span> (m_type)</div>
<div class="line"><a name="l19198"></a><span class="lineno">19198</span>&#160; {</div>
<div class="line"><a name="l19199"></a><span class="lineno">19199</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l19200"></a><span class="lineno">19200</span>&#160; {</div>
<div class="line"><a name="l19201"></a><span class="lineno">19201</span>&#160; <span class="comment">// null values are empty</span></div>
<div class="line"><a name="l19202"></a><span class="lineno">19202</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l19203"></a><span class="lineno">19203</span>&#160; }</div>
<div class="line"><a name="l19204"></a><span class="lineno">19204</span>&#160; </div>
<div class="line"><a name="l19205"></a><span class="lineno">19205</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l19206"></a><span class="lineno">19206</span>&#160; {</div>
<div class="line"><a name="l19207"></a><span class="lineno">19207</span>&#160; <span class="comment">// delegate call to array_t::size()</span></div>
<div class="line"><a name="l19208"></a><span class="lineno">19208</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;size();</div>
<div class="line"><a name="l19209"></a><span class="lineno">19209</span>&#160; }</div>
<div class="line"><a name="l19210"></a><span class="lineno">19210</span>&#160; </div>
<div class="line"><a name="l19211"></a><span class="lineno">19211</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l19212"></a><span class="lineno">19212</span>&#160; {</div>
<div class="line"><a name="l19213"></a><span class="lineno">19213</span>&#160; <span class="comment">// delegate call to object_t::size()</span></div>
<div class="line"><a name="l19214"></a><span class="lineno">19214</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;size();</div>
<div class="line"><a name="l19215"></a><span class="lineno">19215</span>&#160; }</div>
<div class="line"><a name="l19216"></a><span class="lineno">19216</span>&#160; </div>
<div class="line"><a name="l19217"></a><span class="lineno">19217</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l19218"></a><span class="lineno">19218</span>&#160; {</div>
<div class="line"><a name="l19219"></a><span class="lineno">19219</span>&#160; <span class="comment">// all other types have size 1</span></div>
<div class="line"><a name="l19220"></a><span class="lineno">19220</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l19221"></a><span class="lineno">19221</span>&#160; }</div>
<div class="line"><a name="l19222"></a><span class="lineno">19222</span>&#160; }</div>
<div class="line"><a name="l19223"></a><span class="lineno">19223</span>&#160; }</div>
<div class="line"><a name="l19224"></a><span class="lineno">19224</span>&#160; </div>
<div class="line"><a name="l19265"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2f47d3c6a441c57dd2be00449fbb88e1">19265</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json.html#a2f47d3c6a441c57dd2be00449fbb88e1">max_size</a>() const noexcept</div>
<div class="line"><a name="l19266"></a><span class="lineno">19266</span>&#160; {</div>
<div class="line"><a name="l19267"></a><span class="lineno">19267</span>&#160; <span class="keywordflow">switch</span> (m_type)</div>
<div class="line"><a name="l19268"></a><span class="lineno">19268</span>&#160; {</div>
<div class="line"><a name="l19269"></a><span class="lineno">19269</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l19270"></a><span class="lineno">19270</span>&#160; {</div>
<div class="line"><a name="l19271"></a><span class="lineno">19271</span>&#160; <span class="comment">// delegate call to array_t::max_size()</span></div>
<div class="line"><a name="l19272"></a><span class="lineno">19272</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;max_size();</div>
<div class="line"><a name="l19273"></a><span class="lineno">19273</span>&#160; }</div>
<div class="line"><a name="l19274"></a><span class="lineno">19274</span>&#160; </div>
<div class="line"><a name="l19275"></a><span class="lineno">19275</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l19276"></a><span class="lineno">19276</span>&#160; {</div>
<div class="line"><a name="l19277"></a><span class="lineno">19277</span>&#160; <span class="comment">// delegate call to object_t::max_size()</span></div>
<div class="line"><a name="l19278"></a><span class="lineno">19278</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;max_size();</div>
<div class="line"><a name="l19279"></a><span class="lineno">19279</span>&#160; }</div>
<div class="line"><a name="l19280"></a><span class="lineno">19280</span>&#160; </div>
<div class="line"><a name="l19281"></a><span class="lineno">19281</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l19282"></a><span class="lineno">19282</span>&#160; {</div>
<div class="line"><a name="l19283"></a><span class="lineno">19283</span>&#160; <span class="comment">// all other types have max_size() == size()</span></div>
<div class="line"><a name="l19284"></a><span class="lineno">19284</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">size</a>();</div>
<div class="line"><a name="l19285"></a><span class="lineno">19285</span>&#160; }</div>
<div class="line"><a name="l19286"></a><span class="lineno">19286</span>&#160; }</div>
<div class="line"><a name="l19287"></a><span class="lineno">19287</span>&#160; }</div>
<div class="line"><a name="l19288"></a><span class="lineno">19288</span>&#160; </div>
<div class="line"><a name="l19290"></a><span class="lineno">19290</span>&#160; </div>
<div class="line"><a name="l19291"></a><span class="lineno">19291</span>&#160; </div>
<div class="line"><a name="l19293"></a><span class="lineno">19293</span>&#160; <span class="comment">// modifiers //</span></div>
<div class="line"><a name="l19295"></a><span class="lineno">19295</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l19298"></a><span class="lineno">19298</span>&#160; </div>
<div class="line"><a name="l19335"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abfeba47810ca72f2176419942c4e1952">19335</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#abfeba47810ca72f2176419942c4e1952">clear</a>() noexcept</div>
<div class="line"><a name="l19336"></a><span class="lineno">19336</span>&#160; {</div>
<div class="line"><a name="l19337"></a><span class="lineno">19337</span>&#160; <span class="keywordflow">switch</span> (m_type)</div>
<div class="line"><a name="l19338"></a><span class="lineno">19338</span>&#160; {</div>
<div class="line"><a name="l19339"></a><span class="lineno">19339</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l19340"></a><span class="lineno">19340</span>&#160; {</div>
<div class="line"><a name="l19341"></a><span class="lineno">19341</span>&#160; m_value.number_integer = 0;</div>
<div class="line"><a name="l19342"></a><span class="lineno">19342</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l19343"></a><span class="lineno">19343</span>&#160; }</div>
<div class="line"><a name="l19344"></a><span class="lineno">19344</span>&#160; </div>
<div class="line"><a name="l19345"></a><span class="lineno">19345</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l19346"></a><span class="lineno">19346</span>&#160; {</div>
<div class="line"><a name="l19347"></a><span class="lineno">19347</span>&#160; m_value.number_unsigned = 0;</div>
<div class="line"><a name="l19348"></a><span class="lineno">19348</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l19349"></a><span class="lineno">19349</span>&#160; }</div>
<div class="line"><a name="l19350"></a><span class="lineno">19350</span>&#160; </div>
<div class="line"><a name="l19351"></a><span class="lineno">19351</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l19352"></a><span class="lineno">19352</span>&#160; {</div>
<div class="line"><a name="l19353"></a><span class="lineno">19353</span>&#160; m_value.number_float = 0.0;</div>
<div class="line"><a name="l19354"></a><span class="lineno">19354</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l19355"></a><span class="lineno">19355</span>&#160; }</div>
<div class="line"><a name="l19356"></a><span class="lineno">19356</span>&#160; </div>
<div class="line"><a name="l19357"></a><span class="lineno">19357</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l19358"></a><span class="lineno">19358</span>&#160; {</div>
<div class="line"><a name="l19359"></a><span class="lineno">19359</span>&#160; m_value.boolean = <span class="keyword">false</span>;</div>
<div class="line"><a name="l19360"></a><span class="lineno">19360</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l19361"></a><span class="lineno">19361</span>&#160; }</div>
<div class="line"><a name="l19362"></a><span class="lineno">19362</span>&#160; </div>
<div class="line"><a name="l19363"></a><span class="lineno">19363</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l19364"></a><span class="lineno">19364</span>&#160; {</div>
<div class="line"><a name="l19365"></a><span class="lineno">19365</span>&#160; m_value.string-&gt;clear();</div>
<div class="line"><a name="l19366"></a><span class="lineno">19366</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l19367"></a><span class="lineno">19367</span>&#160; }</div>
<div class="line"><a name="l19368"></a><span class="lineno">19368</span>&#160; </div>
<div class="line"><a name="l19369"></a><span class="lineno">19369</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l19370"></a><span class="lineno">19370</span>&#160; {</div>
<div class="line"><a name="l19371"></a><span class="lineno">19371</span>&#160; m_value.array-&gt;clear();</div>
<div class="line"><a name="l19372"></a><span class="lineno">19372</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l19373"></a><span class="lineno">19373</span>&#160; }</div>
<div class="line"><a name="l19374"></a><span class="lineno">19374</span>&#160; </div>
<div class="line"><a name="l19375"></a><span class="lineno">19375</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l19376"></a><span class="lineno">19376</span>&#160; {</div>
<div class="line"><a name="l19377"></a><span class="lineno">19377</span>&#160; m_value.object-&gt;clear();</div>
<div class="line"><a name="l19378"></a><span class="lineno">19378</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l19379"></a><span class="lineno">19379</span>&#160; }</div>
<div class="line"><a name="l19380"></a><span class="lineno">19380</span>&#160; </div>
<div class="line"><a name="l19381"></a><span class="lineno">19381</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l19382"></a><span class="lineno">19382</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l19383"></a><span class="lineno">19383</span>&#160; }</div>
<div class="line"><a name="l19384"></a><span class="lineno">19384</span>&#160; }</div>
<div class="line"><a name="l19385"></a><span class="lineno">19385</span>&#160; </div>
<div class="line"><a name="l19406"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">19406</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(<a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp;&amp; val)</div>
<div class="line"><a name="l19407"></a><span class="lineno">19407</span>&#160; {</div>
<div class="line"><a name="l19408"></a><span class="lineno">19408</span>&#160; <span class="comment">// push_back only works for null objects or arrays</span></div>
<div class="line"><a name="l19409"></a><span class="lineno">19409</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not(<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>())))</div>
<div class="line"><a name="l19410"></a><span class="lineno">19410</span>&#160; {</div>
<div class="line"><a name="l19411"></a><span class="lineno">19411</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(308, <span class="stringliteral">&quot;cannot use push_back() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19412"></a><span class="lineno">19412</span>&#160; }</div>
<div class="line"><a name="l19413"></a><span class="lineno">19413</span>&#160; </div>
<div class="line"><a name="l19414"></a><span class="lineno">19414</span>&#160; <span class="comment">// transform null object into an array</span></div>
<div class="line"><a name="l19415"></a><span class="lineno">19415</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
<div class="line"><a name="l19416"></a><span class="lineno">19416</span>&#160; {</div>
<div class="line"><a name="l19417"></a><span class="lineno">19417</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l19418"></a><span class="lineno">19418</span>&#160; m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l19419"></a><span class="lineno">19419</span>&#160; assert_invariant();</div>
<div class="line"><a name="l19420"></a><span class="lineno">19420</span>&#160; }</div>
<div class="line"><a name="l19421"></a><span class="lineno">19421</span>&#160; </div>
<div class="line"><a name="l19422"></a><span class="lineno">19422</span>&#160; <span class="comment">// add element to array (move semantics)</span></div>
<div class="line"><a name="l19423"></a><span class="lineno">19423</span>&#160; m_value.array-&gt;push_back(std::move(val));</div>
<div class="line"><a name="l19424"></a><span class="lineno">19424</span>&#160; <span class="comment">// invalidate object: mark it null so we do not call the destructor</span></div>
<div class="line"><a name="l19425"></a><span class="lineno">19425</span>&#160; <span class="comment">// cppcheck-suppress accessMoved</span></div>
<div class="line"><a name="l19426"></a><span class="lineno">19426</span>&#160; val.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
<div class="line"><a name="l19427"></a><span class="lineno">19427</span>&#160; }</div>
<div class="line"><a name="l19428"></a><span class="lineno">19428</span>&#160; </div>
<div class="line"><a name="l19433"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aea1085f2d35cc0e1ce119cf0110119e6">19433</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#aea1085f2d35cc0e1ce119cf0110119e6">operator+=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp;&amp; val)</div>
<div class="line"><a name="l19434"></a><span class="lineno">19434</span>&#160; {</div>
<div class="line"><a name="l19435"></a><span class="lineno">19435</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(std::move(val));</div>
<div class="line"><a name="l19436"></a><span class="lineno">19436</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l19437"></a><span class="lineno">19437</span>&#160; }</div>
<div class="line"><a name="l19438"></a><span class="lineno">19438</span>&#160; </div>
<div class="line"><a name="l19443"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab4384af330b79de0e5f279576803a2c7">19443</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab4384af330b79de0e5f279576803a2c7">push_back</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; val)</div>
<div class="line"><a name="l19444"></a><span class="lineno">19444</span>&#160; {</div>
<div class="line"><a name="l19445"></a><span class="lineno">19445</span>&#160; <span class="comment">// push_back only works for null objects or arrays</span></div>
<div class="line"><a name="l19446"></a><span class="lineno">19446</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not(<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>())))</div>
<div class="line"><a name="l19447"></a><span class="lineno">19447</span>&#160; {</div>
<div class="line"><a name="l19448"></a><span class="lineno">19448</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(308, <span class="stringliteral">&quot;cannot use push_back() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19449"></a><span class="lineno">19449</span>&#160; }</div>
<div class="line"><a name="l19450"></a><span class="lineno">19450</span>&#160; </div>
<div class="line"><a name="l19451"></a><span class="lineno">19451</span>&#160; <span class="comment">// transform null object into an array</span></div>
<div class="line"><a name="l19452"></a><span class="lineno">19452</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
<div class="line"><a name="l19453"></a><span class="lineno">19453</span>&#160; {</div>
<div class="line"><a name="l19454"></a><span class="lineno">19454</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l19455"></a><span class="lineno">19455</span>&#160; m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l19456"></a><span class="lineno">19456</span>&#160; assert_invariant();</div>
<div class="line"><a name="l19457"></a><span class="lineno">19457</span>&#160; }</div>
<div class="line"><a name="l19458"></a><span class="lineno">19458</span>&#160; </div>
<div class="line"><a name="l19459"></a><span class="lineno">19459</span>&#160; <span class="comment">// add element to array</span></div>
<div class="line"><a name="l19460"></a><span class="lineno">19460</span>&#160; m_value.array-&gt;push_back(val);</div>
<div class="line"><a name="l19461"></a><span class="lineno">19461</span>&#160; }</div>
<div class="line"><a name="l19462"></a><span class="lineno">19462</span>&#160; </div>
<div class="line"><a name="l19467"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#adc29dd6358ff7a9062d7e168c24e7484">19467</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#adc29dd6358ff7a9062d7e168c24e7484">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; val)</div>
<div class="line"><a name="l19468"></a><span class="lineno">19468</span>&#160; {</div>
<div class="line"><a name="l19469"></a><span class="lineno">19469</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(val);</div>
<div class="line"><a name="l19470"></a><span class="lineno">19470</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l19471"></a><span class="lineno">19471</span>&#160; }</div>
<div class="line"><a name="l19472"></a><span class="lineno">19472</span>&#160; </div>
<div class="line"><a name="l19493"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae11a3a51782c058fff2f6550cdfb9b3c">19493</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae11a3a51782c058fff2f6550cdfb9b3c">push_back</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::value_type&amp; val)</div>
<div class="line"><a name="l19494"></a><span class="lineno">19494</span>&#160; {</div>
<div class="line"><a name="l19495"></a><span class="lineno">19495</span>&#160; <span class="comment">// push_back only works for null objects or objects</span></div>
<div class="line"><a name="l19496"></a><span class="lineno">19496</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not(<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>())))</div>
<div class="line"><a name="l19497"></a><span class="lineno">19497</span>&#160; {</div>
<div class="line"><a name="l19498"></a><span class="lineno">19498</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(308, <span class="stringliteral">&quot;cannot use push_back() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19499"></a><span class="lineno">19499</span>&#160; }</div>
<div class="line"><a name="l19500"></a><span class="lineno">19500</span>&#160; </div>
<div class="line"><a name="l19501"></a><span class="lineno">19501</span>&#160; <span class="comment">// transform null object into an object</span></div>
<div class="line"><a name="l19502"></a><span class="lineno">19502</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
<div class="line"><a name="l19503"></a><span class="lineno">19503</span>&#160; {</div>
<div class="line"><a name="l19504"></a><span class="lineno">19504</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l19505"></a><span class="lineno">19505</span>&#160; m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l19506"></a><span class="lineno">19506</span>&#160; assert_invariant();</div>
<div class="line"><a name="l19507"></a><span class="lineno">19507</span>&#160; }</div>
<div class="line"><a name="l19508"></a><span class="lineno">19508</span>&#160; </div>
<div class="line"><a name="l19509"></a><span class="lineno">19509</span>&#160; <span class="comment">// add element to array</span></div>
<div class="line"><a name="l19510"></a><span class="lineno">19510</span>&#160; m_value.object-&gt;insert(val);</div>
<div class="line"><a name="l19511"></a><span class="lineno">19511</span>&#160; }</div>
<div class="line"><a name="l19512"></a><span class="lineno">19512</span>&#160; </div>
<div class="line"><a name="l19517"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abf04978d85a2d5c4754f4806d42f46fd">19517</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#abf04978d85a2d5c4754f4806d42f46fd">operator+=</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::value_type&amp; val)</div>
<div class="line"><a name="l19518"></a><span class="lineno">19518</span>&#160; {</div>
<div class="line"><a name="l19519"></a><span class="lineno">19519</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(val);</div>
<div class="line"><a name="l19520"></a><span class="lineno">19520</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l19521"></a><span class="lineno">19521</span>&#160; }</div>
<div class="line"><a name="l19522"></a><span class="lineno">19522</span>&#160; </div>
<div class="line"><a name="l19548"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1be31ef2d2934d37a818083a4af44f99">19548</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a1be31ef2d2934d37a818083a4af44f99">push_back</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> init)</div>
<div class="line"><a name="l19549"></a><span class="lineno">19549</span>&#160; {</div>
<div class="line"><a name="l19550"></a><span class="lineno">19550</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() and init.size() == 2 and (*init.begin())-&gt;is_string())</div>
<div class="line"><a name="l19551"></a><span class="lineno">19551</span>&#160; {</div>
<div class="line"><a name="l19552"></a><span class="lineno">19552</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp;&amp; key = init.<a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>()-&gt;moved_or_copied();</div>
<div class="line"><a name="l19553"></a><span class="lineno">19553</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(<span class="keyword">typename</span> object_t::value_type(</div>
<div class="line"><a name="l19554"></a><span class="lineno">19554</span>&#160; std::move(key.get_ref&lt;<a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>&amp;&gt;()), (init.begin() + 1)-&gt;moved_or_copied()));</div>
<div class="line"><a name="l19555"></a><span class="lineno">19555</span>&#160; }</div>
<div class="line"><a name="l19556"></a><span class="lineno">19556</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l19557"></a><span class="lineno">19557</span>&#160; {</div>
<div class="line"><a name="l19558"></a><span class="lineno">19558</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(init));</div>
<div class="line"><a name="l19559"></a><span class="lineno">19559</span>&#160; }</div>
<div class="line"><a name="l19560"></a><span class="lineno">19560</span>&#160; }</div>
<div class="line"><a name="l19561"></a><span class="lineno">19561</span>&#160; </div>
<div class="line"><a name="l19566"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af245c2b6714d76ed99a2d02f2596d596">19566</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#af245c2b6714d76ed99a2d02f2596d596">operator+=</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> init)</div>
<div class="line"><a name="l19567"></a><span class="lineno">19567</span>&#160; {</div>
<div class="line"><a name="l19568"></a><span class="lineno">19568</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(init);</div>
<div class="line"><a name="l19569"></a><span class="lineno">19569</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l19570"></a><span class="lineno">19570</span>&#160; }</div>
<div class="line"><a name="l19571"></a><span class="lineno">19571</span>&#160; </div>
<div class="line"><a name="l19595"></a><span class="lineno">19595</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a name="l19596"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abf29131f898b05aad2c01a9c80e7a002">19596</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#abf29131f898b05aad2c01a9c80e7a002">emplace_back</a>(Args&amp;&amp; ... args)</div>
<div class="line"><a name="l19597"></a><span class="lineno">19597</span>&#160; {</div>
<div class="line"><a name="l19598"></a><span class="lineno">19598</span>&#160; <span class="comment">// emplace_back only works for null objects or arrays</span></div>
<div class="line"><a name="l19599"></a><span class="lineno">19599</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not(<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>())))</div>
<div class="line"><a name="l19600"></a><span class="lineno">19600</span>&#160; {</div>
<div class="line"><a name="l19601"></a><span class="lineno">19601</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(311, <span class="stringliteral">&quot;cannot use emplace_back() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19602"></a><span class="lineno">19602</span>&#160; }</div>
<div class="line"><a name="l19603"></a><span class="lineno">19603</span>&#160; </div>
<div class="line"><a name="l19604"></a><span class="lineno">19604</span>&#160; <span class="comment">// transform null object into an array</span></div>
<div class="line"><a name="l19605"></a><span class="lineno">19605</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
<div class="line"><a name="l19606"></a><span class="lineno">19606</span>&#160; {</div>
<div class="line"><a name="l19607"></a><span class="lineno">19607</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l19608"></a><span class="lineno">19608</span>&#160; m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
<div class="line"><a name="l19609"></a><span class="lineno">19609</span>&#160; assert_invariant();</div>
<div class="line"><a name="l19610"></a><span class="lineno">19610</span>&#160; }</div>
<div class="line"><a name="l19611"></a><span class="lineno">19611</span>&#160; </div>
<div class="line"><a name="l19612"></a><span class="lineno">19612</span>&#160; <span class="comment">// add element to array (perfect forwarding)</span></div>
<div class="line"><a name="l19613"></a><span class="lineno">19613</span>&#160;<span class="preprocessor">#ifdef JSON_HAS_CPP_17</span></div>
<div class="line"><a name="l19614"></a><span class="lineno">19614</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;emplace_back(std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a name="l19615"></a><span class="lineno">19615</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l19616"></a><span class="lineno">19616</span>&#160; m_value.array-&gt;emplace_back(std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a name="l19617"></a><span class="lineno">19617</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;back();</div>
<div class="line"><a name="l19618"></a><span class="lineno">19618</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l19619"></a><span class="lineno">19619</span>&#160; }</div>
<div class="line"><a name="l19620"></a><span class="lineno">19620</span>&#160; </div>
<div class="line"><a name="l19648"></a><span class="lineno">19648</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span>... Args&gt;</div>
<div class="line"><a name="l19649"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5338e282d1d02bed389d852dd670d98d">19649</a></span>&#160; std::pair&lt;iterator, bool&gt; <a class="code" href="classnlohmann_1_1basic__json.html#a5338e282d1d02bed389d852dd670d98d">emplace</a>(Args&amp;&amp; ... args)</div>
<div class="line"><a name="l19650"></a><span class="lineno">19650</span>&#160; {</div>
<div class="line"><a name="l19651"></a><span class="lineno">19651</span>&#160; <span class="comment">// emplace only works for null objects or arrays</span></div>
<div class="line"><a name="l19652"></a><span class="lineno">19652</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not(<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>())))</div>
<div class="line"><a name="l19653"></a><span class="lineno">19653</span>&#160; {</div>
<div class="line"><a name="l19654"></a><span class="lineno">19654</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(311, <span class="stringliteral">&quot;cannot use emplace() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19655"></a><span class="lineno">19655</span>&#160; }</div>
<div class="line"><a name="l19656"></a><span class="lineno">19656</span>&#160; </div>
<div class="line"><a name="l19657"></a><span class="lineno">19657</span>&#160; <span class="comment">// transform null object into an object</span></div>
<div class="line"><a name="l19658"></a><span class="lineno">19658</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
<div class="line"><a name="l19659"></a><span class="lineno">19659</span>&#160; {</div>
<div class="line"><a name="l19660"></a><span class="lineno">19660</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l19661"></a><span class="lineno">19661</span>&#160; m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l19662"></a><span class="lineno">19662</span>&#160; assert_invariant();</div>
<div class="line"><a name="l19663"></a><span class="lineno">19663</span>&#160; }</div>
<div class="line"><a name="l19664"></a><span class="lineno">19664</span>&#160; </div>
<div class="line"><a name="l19665"></a><span class="lineno">19665</span>&#160; <span class="comment">// add element to array (perfect forwarding)</span></div>
<div class="line"><a name="l19666"></a><span class="lineno">19666</span>&#160; <span class="keyword">auto</span> res = m_value.object-&gt;emplace(std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a name="l19667"></a><span class="lineno">19667</span>&#160; <span class="comment">// create result iterator and set iterator to the result of emplace</span></div>
<div class="line"><a name="l19668"></a><span class="lineno">19668</span>&#160; <span class="keyword">auto</span> it = <a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>();</div>
<div class="line"><a name="l19669"></a><span class="lineno">19669</span>&#160; it.m_it.object_iterator = res.first;</div>
<div class="line"><a name="l19670"></a><span class="lineno">19670</span>&#160; </div>
<div class="line"><a name="l19671"></a><span class="lineno">19671</span>&#160; <span class="comment">// return pair of iterator and boolean</span></div>
<div class="line"><a name="l19672"></a><span class="lineno">19672</span>&#160; <span class="keywordflow">return</span> {it, res.second};</div>
<div class="line"><a name="l19673"></a><span class="lineno">19673</span>&#160; }</div>
<div class="line"><a name="l19674"></a><span class="lineno">19674</span>&#160; </div>
<div class="line"><a name="l19678"></a><span class="lineno">19678</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l19679"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">19679</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">insert_iterator</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, Args&amp;&amp; ... args)</div>
<div class="line"><a name="l19680"></a><span class="lineno">19680</span>&#160; {</div>
<div class="line"><a name="l19681"></a><span class="lineno">19681</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> result(<span class="keyword">this</span>);</div>
<div class="line"><a name="l19682"></a><span class="lineno">19682</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div>
<div class="line"><a name="l19683"></a><span class="lineno">19683</span>&#160; </div>
<div class="line"><a name="l19684"></a><span class="lineno">19684</span>&#160; <span class="keyword">auto</span> insert_pos = std::distance(m_value.array-&gt;begin(), pos.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>);</div>
<div class="line"><a name="l19685"></a><span class="lineno">19685</span>&#160; m_value.array-&gt;insert(pos.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a name="l19686"></a><span class="lineno">19686</span>&#160; result.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> = m_value.array-&gt;begin() + insert_pos;</div>
<div class="line"><a name="l19687"></a><span class="lineno">19687</span>&#160; </div>
<div class="line"><a name="l19688"></a><span class="lineno">19688</span>&#160; <span class="comment">// This could have been written as:</span></div>
<div class="line"><a name="l19689"></a><span class="lineno">19689</span>&#160; <span class="comment">// result.m_it.array_iterator = m_value.array-&gt;insert(pos.m_it.array_iterator, cnt, val);</span></div>
<div class="line"><a name="l19690"></a><span class="lineno">19690</span>&#160; <span class="comment">// but the return value of insert is missing in GCC 4.8, so it is written this way instead.</span></div>
<div class="line"><a name="l19691"></a><span class="lineno">19691</span>&#160; </div>
<div class="line"><a name="l19692"></a><span class="lineno">19692</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l19693"></a><span class="lineno">19693</span>&#160; }</div>
<div class="line"><a name="l19694"></a><span class="lineno">19694</span>&#160; </div>
<div class="line"><a name="l19717"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a0136728f5db69d4051c77b94307abd6c">19717</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a0136728f5db69d4051c77b94307abd6c">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; val)</div>
<div class="line"><a name="l19718"></a><span class="lineno">19718</span>&#160; {</div>
<div class="line"><a name="l19719"></a><span class="lineno">19719</span>&#160; <span class="comment">// insert only works for arrays</span></div>
<div class="line"><a name="l19720"></a><span class="lineno">19720</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
<div class="line"><a name="l19721"></a><span class="lineno">19721</span>&#160; {</div>
<div class="line"><a name="l19722"></a><span class="lineno">19722</span>&#160; <span class="comment">// check if iterator pos fits to this JSON value</span></div>
<div class="line"><a name="l19723"></a><span class="lineno">19723</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(pos.m_object != <span class="keyword">this</span>))</div>
<div class="line"><a name="l19724"></a><span class="lineno">19724</span>&#160; {</div>
<div class="line"><a name="l19725"></a><span class="lineno">19725</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">&quot;iterator does not fit current value&quot;</span>));</div>
<div class="line"><a name="l19726"></a><span class="lineno">19726</span>&#160; }</div>
<div class="line"><a name="l19727"></a><span class="lineno">19727</span>&#160; </div>
<div class="line"><a name="l19728"></a><span class="lineno">19728</span>&#160; <span class="comment">// insert to array and return iterator</span></div>
<div class="line"><a name="l19729"></a><span class="lineno">19729</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">insert_iterator</a>(pos, val);</div>
<div class="line"><a name="l19730"></a><span class="lineno">19730</span>&#160; }</div>
<div class="line"><a name="l19731"></a><span class="lineno">19731</span>&#160; </div>
<div class="line"><a name="l19732"></a><span class="lineno">19732</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(309, <span class="stringliteral">&quot;cannot use insert() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19733"></a><span class="lineno">19733</span>&#160; }</div>
<div class="line"><a name="l19734"></a><span class="lineno">19734</span>&#160; </div>
<div class="line"><a name="l19739"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1ecce113ff11dd294689ee4d45cbb855">19739</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1ecce113ff11dd294689ee4d45cbb855">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp;&amp; val)</div>
<div class="line"><a name="l19740"></a><span class="lineno">19740</span>&#160; {</div>
<div class="line"><a name="l19741"></a><span class="lineno">19741</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a0136728f5db69d4051c77b94307abd6c">insert</a>(pos, val);</div>
<div class="line"><a name="l19742"></a><span class="lineno">19742</span>&#160; }</div>
<div class="line"><a name="l19743"></a><span class="lineno">19743</span>&#160; </div>
<div class="line"><a name="l19768"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a30a7cc24f2931c20ecae37ec4a5e901f">19768</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a30a7cc24f2931c20ecae37ec4a5e901f">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> cnt, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; val)</div>
<div class="line"><a name="l19769"></a><span class="lineno">19769</span>&#160; {</div>
<div class="line"><a name="l19770"></a><span class="lineno">19770</span>&#160; <span class="comment">// insert only works for arrays</span></div>
<div class="line"><a name="l19771"></a><span class="lineno">19771</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
<div class="line"><a name="l19772"></a><span class="lineno">19772</span>&#160; {</div>
<div class="line"><a name="l19773"></a><span class="lineno">19773</span>&#160; <span class="comment">// check if iterator pos fits to this JSON value</span></div>
<div class="line"><a name="l19774"></a><span class="lineno">19774</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(pos.m_object != <span class="keyword">this</span>))</div>
<div class="line"><a name="l19775"></a><span class="lineno">19775</span>&#160; {</div>
<div class="line"><a name="l19776"></a><span class="lineno">19776</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">&quot;iterator does not fit current value&quot;</span>));</div>
<div class="line"><a name="l19777"></a><span class="lineno">19777</span>&#160; }</div>
<div class="line"><a name="l19778"></a><span class="lineno">19778</span>&#160; </div>
<div class="line"><a name="l19779"></a><span class="lineno">19779</span>&#160; <span class="comment">// insert to array and return iterator</span></div>
<div class="line"><a name="l19780"></a><span class="lineno">19780</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">insert_iterator</a>(pos, cnt, val);</div>
<div class="line"><a name="l19781"></a><span class="lineno">19781</span>&#160; }</div>
<div class="line"><a name="l19782"></a><span class="lineno">19782</span>&#160; </div>
<div class="line"><a name="l19783"></a><span class="lineno">19783</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(309, <span class="stringliteral">&quot;cannot use insert() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19784"></a><span class="lineno">19784</span>&#160; }</div>
<div class="line"><a name="l19785"></a><span class="lineno">19785</span>&#160; </div>
<div class="line"><a name="l19816"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a404cfe1bdbf1dc6b229627fcf2afb95f">19816</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a404cfe1bdbf1dc6b229627fcf2afb95f">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> first, <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> last)</div>
<div class="line"><a name="l19817"></a><span class="lineno">19817</span>&#160; {</div>
<div class="line"><a name="l19818"></a><span class="lineno">19818</span>&#160; <span class="comment">// insert only works for arrays</span></div>
<div class="line"><a name="l19819"></a><span class="lineno">19819</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
<div class="line"><a name="l19820"></a><span class="lineno">19820</span>&#160; {</div>
<div class="line"><a name="l19821"></a><span class="lineno">19821</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(309, <span class="stringliteral">&quot;cannot use insert() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19822"></a><span class="lineno">19822</span>&#160; }</div>
<div class="line"><a name="l19823"></a><span class="lineno">19823</span>&#160; </div>
<div class="line"><a name="l19824"></a><span class="lineno">19824</span>&#160; <span class="comment">// check if iterator pos fits to this JSON value</span></div>
<div class="line"><a name="l19825"></a><span class="lineno">19825</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(pos.m_object != <span class="keyword">this</span>))</div>
<div class="line"><a name="l19826"></a><span class="lineno">19826</span>&#160; {</div>
<div class="line"><a name="l19827"></a><span class="lineno">19827</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">&quot;iterator does not fit current value&quot;</span>));</div>
<div class="line"><a name="l19828"></a><span class="lineno">19828</span>&#160; }</div>
<div class="line"><a name="l19829"></a><span class="lineno">19829</span>&#160; </div>
<div class="line"><a name="l19830"></a><span class="lineno">19830</span>&#160; <span class="comment">// check if range iterators belong to the same JSON object</span></div>
<div class="line"><a name="l19831"></a><span class="lineno">19831</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(first.m_object != last.m_object))</div>
<div class="line"><a name="l19832"></a><span class="lineno">19832</span>&#160; {</div>
<div class="line"><a name="l19833"></a><span class="lineno">19833</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(210, <span class="stringliteral">&quot;iterators do not fit&quot;</span>));</div>
<div class="line"><a name="l19834"></a><span class="lineno">19834</span>&#160; }</div>
<div class="line"><a name="l19835"></a><span class="lineno">19835</span>&#160; </div>
<div class="line"><a name="l19836"></a><span class="lineno">19836</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(first.m_object == <span class="keyword">this</span>))</div>
<div class="line"><a name="l19837"></a><span class="lineno">19837</span>&#160; {</div>
<div class="line"><a name="l19838"></a><span class="lineno">19838</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(211, <span class="stringliteral">&quot;passed iterators may not belong to container&quot;</span>));</div>
<div class="line"><a name="l19839"></a><span class="lineno">19839</span>&#160; }</div>
<div class="line"><a name="l19840"></a><span class="lineno">19840</span>&#160; </div>
<div class="line"><a name="l19841"></a><span class="lineno">19841</span>&#160; <span class="comment">// insert to array and return iterator</span></div>
<div class="line"><a name="l19842"></a><span class="lineno">19842</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">insert_iterator</a>(pos, first.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, last.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>);</div>
<div class="line"><a name="l19843"></a><span class="lineno">19843</span>&#160; }</div>
<div class="line"><a name="l19844"></a><span class="lineno">19844</span>&#160; </div>
<div class="line"><a name="l19869"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aa19b9b9ca6967295b102f1cc487b1ad7">19869</a></span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#aa19b9b9ca6967295b102f1cc487b1ad7">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, <a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> ilist)</div>
<div class="line"><a name="l19870"></a><span class="lineno">19870</span>&#160; {</div>
<div class="line"><a name="l19871"></a><span class="lineno">19871</span>&#160; <span class="comment">// insert only works for arrays</span></div>
<div class="line"><a name="l19872"></a><span class="lineno">19872</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
<div class="line"><a name="l19873"></a><span class="lineno">19873</span>&#160; {</div>
<div class="line"><a name="l19874"></a><span class="lineno">19874</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(309, <span class="stringliteral">&quot;cannot use insert() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19875"></a><span class="lineno">19875</span>&#160; }</div>
<div class="line"><a name="l19876"></a><span class="lineno">19876</span>&#160; </div>
<div class="line"><a name="l19877"></a><span class="lineno">19877</span>&#160; <span class="comment">// check if iterator pos fits to this JSON value</span></div>
<div class="line"><a name="l19878"></a><span class="lineno">19878</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(pos.m_object != <span class="keyword">this</span>))</div>
<div class="line"><a name="l19879"></a><span class="lineno">19879</span>&#160; {</div>
<div class="line"><a name="l19880"></a><span class="lineno">19880</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">&quot;iterator does not fit current value&quot;</span>));</div>
<div class="line"><a name="l19881"></a><span class="lineno">19881</span>&#160; }</div>
<div class="line"><a name="l19882"></a><span class="lineno">19882</span>&#160; </div>
<div class="line"><a name="l19883"></a><span class="lineno">19883</span>&#160; <span class="comment">// insert to array and return iterator</span></div>
<div class="line"><a name="l19884"></a><span class="lineno">19884</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">insert_iterator</a>(pos, ilist.begin(), ilist.end());</div>
<div class="line"><a name="l19885"></a><span class="lineno">19885</span>&#160; }</div>
<div class="line"><a name="l19886"></a><span class="lineno">19886</span>&#160; </div>
<div class="line"><a name="l19910"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1b0a4e60d56f1fe80501ed941e122892">19910</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a1b0a4e60d56f1fe80501ed941e122892">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> first, <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> last)</div>
<div class="line"><a name="l19911"></a><span class="lineno">19911</span>&#160; {</div>
<div class="line"><a name="l19912"></a><span class="lineno">19912</span>&#160; <span class="comment">// insert only works for objects</span></div>
<div class="line"><a name="l19913"></a><span class="lineno">19913</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l19914"></a><span class="lineno">19914</span>&#160; {</div>
<div class="line"><a name="l19915"></a><span class="lineno">19915</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(309, <span class="stringliteral">&quot;cannot use insert() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19916"></a><span class="lineno">19916</span>&#160; }</div>
<div class="line"><a name="l19917"></a><span class="lineno">19917</span>&#160; </div>
<div class="line"><a name="l19918"></a><span class="lineno">19918</span>&#160; <span class="comment">// check if range iterators belong to the same JSON object</span></div>
<div class="line"><a name="l19919"></a><span class="lineno">19919</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(first.m_object != last.m_object))</div>
<div class="line"><a name="l19920"></a><span class="lineno">19920</span>&#160; {</div>
<div class="line"><a name="l19921"></a><span class="lineno">19921</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(210, <span class="stringliteral">&quot;iterators do not fit&quot;</span>));</div>
<div class="line"><a name="l19922"></a><span class="lineno">19922</span>&#160; }</div>
<div class="line"><a name="l19923"></a><span class="lineno">19923</span>&#160; </div>
<div class="line"><a name="l19924"></a><span class="lineno">19924</span>&#160; <span class="comment">// passed iterators must belong to objects</span></div>
<div class="line"><a name="l19925"></a><span class="lineno">19925</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not first.m_object-&gt;is_object()))</div>
<div class="line"><a name="l19926"></a><span class="lineno">19926</span>&#160; {</div>
<div class="line"><a name="l19927"></a><span class="lineno">19927</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">&quot;iterators first and last must point to objects&quot;</span>));</div>
<div class="line"><a name="l19928"></a><span class="lineno">19928</span>&#160; }</div>
<div class="line"><a name="l19929"></a><span class="lineno">19929</span>&#160; </div>
<div class="line"><a name="l19930"></a><span class="lineno">19930</span>&#160; m_value.object-&gt;insert(first.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>, last.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>);</div>
<div class="line"><a name="l19931"></a><span class="lineno">19931</span>&#160; }</div>
<div class="line"><a name="l19932"></a><span class="lineno">19932</span>&#160; </div>
<div class="line"><a name="l19952"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1cfa9ae5e7c2434cab4cfe69bffffe11">19952</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a1cfa9ae5e7c2434cab4cfe69bffffe11">update</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> j)</div>
<div class="line"><a name="l19953"></a><span class="lineno">19953</span>&#160; {</div>
<div class="line"><a name="l19954"></a><span class="lineno">19954</span>&#160; <span class="comment">// implicitly convert null value to an empty object</span></div>
<div class="line"><a name="l19955"></a><span class="lineno">19955</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
<div class="line"><a name="l19956"></a><span class="lineno">19956</span>&#160; {</div>
<div class="line"><a name="l19957"></a><span class="lineno">19957</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l19958"></a><span class="lineno">19958</span>&#160; m_value.object = create&lt;object_t&gt;();</div>
<div class="line"><a name="l19959"></a><span class="lineno">19959</span>&#160; assert_invariant();</div>
<div class="line"><a name="l19960"></a><span class="lineno">19960</span>&#160; }</div>
<div class="line"><a name="l19961"></a><span class="lineno">19961</span>&#160; </div>
<div class="line"><a name="l19962"></a><span class="lineno">19962</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l19963"></a><span class="lineno">19963</span>&#160; {</div>
<div class="line"><a name="l19964"></a><span class="lineno">19964</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(312, <span class="stringliteral">&quot;cannot use update() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19965"></a><span class="lineno">19965</span>&#160; }</div>
<div class="line"><a name="l19966"></a><span class="lineno">19966</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l19967"></a><span class="lineno">19967</span>&#160; {</div>
<div class="line"><a name="l19968"></a><span class="lineno">19968</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(312, <span class="stringliteral">&quot;cannot use update() with &quot;</span> + std::string(j.<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l19969"></a><span class="lineno">19969</span>&#160; }</div>
<div class="line"><a name="l19970"></a><span class="lineno">19970</span>&#160; </div>
<div class="line"><a name="l19971"></a><span class="lineno">19971</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = j.<a class="code" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">cbegin</a>(); it != j.<a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>(); ++it)</div>
<div class="line"><a name="l19972"></a><span class="lineno">19972</span>&#160; {</div>
<div class="line"><a name="l19973"></a><span class="lineno">19973</span>&#160; m_value.object-&gt;operator[](it.key()) = it.value();</div>
<div class="line"><a name="l19974"></a><span class="lineno">19974</span>&#160; }</div>
<div class="line"><a name="l19975"></a><span class="lineno">19975</span>&#160; }</div>
<div class="line"><a name="l19976"></a><span class="lineno">19976</span>&#160; </div>
<div class="line"><a name="l20003"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a27921dafadb3bbefd180235ec763e3ea">20003</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a27921dafadb3bbefd180235ec763e3ea">update</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> first, <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> last)</div>
<div class="line"><a name="l20004"></a><span class="lineno">20004</span>&#160; {</div>
<div class="line"><a name="l20005"></a><span class="lineno">20005</span>&#160; <span class="comment">// implicitly convert null value to an empty object</span></div>
<div class="line"><a name="l20006"></a><span class="lineno">20006</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
<div class="line"><a name="l20007"></a><span class="lineno">20007</span>&#160; {</div>
<div class="line"><a name="l20008"></a><span class="lineno">20008</span>&#160; m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
<div class="line"><a name="l20009"></a><span class="lineno">20009</span>&#160; m_value.object = create&lt;object_t&gt;();</div>
<div class="line"><a name="l20010"></a><span class="lineno">20010</span>&#160; assert_invariant();</div>
<div class="line"><a name="l20011"></a><span class="lineno">20011</span>&#160; }</div>
<div class="line"><a name="l20012"></a><span class="lineno">20012</span>&#160; </div>
<div class="line"><a name="l20013"></a><span class="lineno">20013</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l20014"></a><span class="lineno">20014</span>&#160; {</div>
<div class="line"><a name="l20015"></a><span class="lineno">20015</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(312, <span class="stringliteral">&quot;cannot use update() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l20016"></a><span class="lineno">20016</span>&#160; }</div>
<div class="line"><a name="l20017"></a><span class="lineno">20017</span>&#160; </div>
<div class="line"><a name="l20018"></a><span class="lineno">20018</span>&#160; <span class="comment">// check if range iterators belong to the same JSON object</span></div>
<div class="line"><a name="l20019"></a><span class="lineno">20019</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(first.m_object != last.m_object))</div>
<div class="line"><a name="l20020"></a><span class="lineno">20020</span>&#160; {</div>
<div class="line"><a name="l20021"></a><span class="lineno">20021</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(210, <span class="stringliteral">&quot;iterators do not fit&quot;</span>));</div>
<div class="line"><a name="l20022"></a><span class="lineno">20022</span>&#160; }</div>
<div class="line"><a name="l20023"></a><span class="lineno">20023</span>&#160; </div>
<div class="line"><a name="l20024"></a><span class="lineno">20024</span>&#160; <span class="comment">// passed iterators must belong to objects</span></div>
<div class="line"><a name="l20025"></a><span class="lineno">20025</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not first.m_object-&gt;is_object()</div>
<div class="line"><a name="l20026"></a><span class="lineno">20026</span>&#160; or not last.m_object-&gt;is_object()))</div>
<div class="line"><a name="l20027"></a><span class="lineno">20027</span>&#160; {</div>
<div class="line"><a name="l20028"></a><span class="lineno">20028</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">&quot;iterators first and last must point to objects&quot;</span>));</div>
<div class="line"><a name="l20029"></a><span class="lineno">20029</span>&#160; }</div>
<div class="line"><a name="l20030"></a><span class="lineno">20030</span>&#160; </div>
<div class="line"><a name="l20031"></a><span class="lineno">20031</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first; it != last; ++it)</div>
<div class="line"><a name="l20032"></a><span class="lineno">20032</span>&#160; {</div>
<div class="line"><a name="l20033"></a><span class="lineno">20033</span>&#160; m_value.object-&gt;operator[](it.key()) = it.value();</div>
<div class="line"><a name="l20034"></a><span class="lineno">20034</span>&#160; }</div>
<div class="line"><a name="l20035"></a><span class="lineno">20035</span>&#160; }</div>
<div class="line"><a name="l20036"></a><span class="lineno">20036</span>&#160; </div>
<div class="line"><a name="l20054"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8c9d932353e1ab98a7dc2fc27e002031">20054</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8c9d932353e1ab98a7dc2fc27e002031">swap</a>(<a class="code" href="classnlohmann_1_1basic__json.html">reference</a> other) noexcept (</div>
<div class="line"><a name="l20055"></a><span class="lineno">20055</span>&#160; std::is_nothrow_move_constructible&lt;value_t&gt;::value and</div>
<div class="line"><a name="l20056"></a><span class="lineno">20056</span>&#160; std::is_nothrow_move_assignable&lt;value_t&gt;::value and</div>
<div class="line"><a name="l20057"></a><span class="lineno">20057</span>&#160; std::is_nothrow_move_constructible&lt;json_value&gt;::value and</div>
<div class="line"><a name="l20058"></a><span class="lineno">20058</span>&#160; std::is_nothrow_move_assignable&lt;json_value&gt;::value</div>
<div class="line"><a name="l20059"></a><span class="lineno">20059</span>&#160; )</div>
<div class="line"><a name="l20060"></a><span class="lineno">20060</span>&#160; {</div>
<div class="line"><a name="l20061"></a><span class="lineno">20061</span>&#160; std::swap(m_type, other.m_type);</div>
<div class="line"><a name="l20062"></a><span class="lineno">20062</span>&#160; std::swap(m_value, other.m_value);</div>
<div class="line"><a name="l20063"></a><span class="lineno">20063</span>&#160; assert_invariant();</div>
<div class="line"><a name="l20064"></a><span class="lineno">20064</span>&#160; }</div>
<div class="line"><a name="l20065"></a><span class="lineno">20065</span>&#160; </div>
<div class="line"><a name="l20086"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a65b0a24e1361a030ad0a661de22f6c8e">20086</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a65b0a24e1361a030ad0a661de22f6c8e">swap</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>&amp; other)</div>
<div class="line"><a name="l20087"></a><span class="lineno">20087</span>&#160; {</div>
<div class="line"><a name="l20088"></a><span class="lineno">20088</span>&#160; <span class="comment">// swap only works for arrays</span></div>
<div class="line"><a name="l20089"></a><span class="lineno">20089</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
<div class="line"><a name="l20090"></a><span class="lineno">20090</span>&#160; {</div>
<div class="line"><a name="l20091"></a><span class="lineno">20091</span>&#160; std::swap(*(m_value.array), other);</div>
<div class="line"><a name="l20092"></a><span class="lineno">20092</span>&#160; }</div>
<div class="line"><a name="l20093"></a><span class="lineno">20093</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l20094"></a><span class="lineno">20094</span>&#160; {</div>
<div class="line"><a name="l20095"></a><span class="lineno">20095</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(310, <span class="stringliteral">&quot;cannot use swap() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l20096"></a><span class="lineno">20096</span>&#160; }</div>
<div class="line"><a name="l20097"></a><span class="lineno">20097</span>&#160; }</div>
<div class="line"><a name="l20098"></a><span class="lineno">20098</span>&#160; </div>
<div class="line"><a name="l20119"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac31f12587d2f1a3be5ffc394aa9d72a4">20119</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#ac31f12587d2f1a3be5ffc394aa9d72a4">swap</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>&amp; other)</div>
<div class="line"><a name="l20120"></a><span class="lineno">20120</span>&#160; {</div>
<div class="line"><a name="l20121"></a><span class="lineno">20121</span>&#160; <span class="comment">// swap only works for objects</span></div>
<div class="line"><a name="l20122"></a><span class="lineno">20122</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
<div class="line"><a name="l20123"></a><span class="lineno">20123</span>&#160; {</div>
<div class="line"><a name="l20124"></a><span class="lineno">20124</span>&#160; std::swap(*(m_value.object), other);</div>
<div class="line"><a name="l20125"></a><span class="lineno">20125</span>&#160; }</div>
<div class="line"><a name="l20126"></a><span class="lineno">20126</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l20127"></a><span class="lineno">20127</span>&#160; {</div>
<div class="line"><a name="l20128"></a><span class="lineno">20128</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(310, <span class="stringliteral">&quot;cannot use swap() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l20129"></a><span class="lineno">20129</span>&#160; }</div>
<div class="line"><a name="l20130"></a><span class="lineno">20130</span>&#160; }</div>
<div class="line"><a name="l20131"></a><span class="lineno">20131</span>&#160; </div>
<div class="line"><a name="l20152"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#adaa1ed0a889d86c8e0216a3d66980f76">20152</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#adaa1ed0a889d86c8e0216a3d66980f76">swap</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>&amp; other)</div>
<div class="line"><a name="l20153"></a><span class="lineno">20153</span>&#160; {</div>
<div class="line"><a name="l20154"></a><span class="lineno">20154</span>&#160; <span class="comment">// swap only works for strings</span></div>
<div class="line"><a name="l20155"></a><span class="lineno">20155</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>()))</div>
<div class="line"><a name="l20156"></a><span class="lineno">20156</span>&#160; {</div>
<div class="line"><a name="l20157"></a><span class="lineno">20157</span>&#160; std::swap(*(m_value.string), other);</div>
<div class="line"><a name="l20158"></a><span class="lineno">20158</span>&#160; }</div>
<div class="line"><a name="l20159"></a><span class="lineno">20159</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l20160"></a><span class="lineno">20160</span>&#160; {</div>
<div class="line"><a name="l20161"></a><span class="lineno">20161</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(310, <span class="stringliteral">&quot;cannot use swap() with &quot;</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
<div class="line"><a name="l20162"></a><span class="lineno">20162</span>&#160; }</div>
<div class="line"><a name="l20163"></a><span class="lineno">20163</span>&#160; }</div>
<div class="line"><a name="l20164"></a><span class="lineno">20164</span>&#160; </div>
<div class="line"><a name="l20166"></a><span class="lineno">20166</span>&#160; </div>
<div class="line"><a name="l20167"></a><span class="lineno">20167</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l20169"></a><span class="lineno">20169</span>&#160; <span class="comment">// lexicographical comparison operators //</span></div>
<div class="line"><a name="l20171"></a><span class="lineno">20171</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l20174"></a><span class="lineno">20174</span>&#160; </div>
<div class="line"><a name="l20214"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a122640e7e2db1814fc7bbb3c122ec76e">20214</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a122640e7e2db1814fc7bbb3c122ec76e">operator==</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20215"></a><span class="lineno">20215</span>&#160; {</div>
<div class="line"><a name="l20216"></a><span class="lineno">20216</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> lhs_type = lhs.type();</div>
<div class="line"><a name="l20217"></a><span class="lineno">20217</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> rhs_type = rhs.type();</div>
<div class="line"><a name="l20218"></a><span class="lineno">20218</span>&#160; </div>
<div class="line"><a name="l20219"></a><span class="lineno">20219</span>&#160; <span class="keywordflow">if</span> (lhs_type == rhs_type)</div>
<div class="line"><a name="l20220"></a><span class="lineno">20220</span>&#160; {</div>
<div class="line"><a name="l20221"></a><span class="lineno">20221</span>&#160; <span class="keywordflow">switch</span> (lhs_type)</div>
<div class="line"><a name="l20222"></a><span class="lineno">20222</span>&#160; {</div>
<div class="line"><a name="l20223"></a><span class="lineno">20223</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l20224"></a><span class="lineno">20224</span>&#160; <span class="keywordflow">return</span> *lhs.m_value.array == *rhs.m_value.array;</div>
<div class="line"><a name="l20225"></a><span class="lineno">20225</span>&#160; </div>
<div class="line"><a name="l20226"></a><span class="lineno">20226</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l20227"></a><span class="lineno">20227</span>&#160; <span class="keywordflow">return</span> *lhs.m_value.object == *rhs.m_value.object;</div>
<div class="line"><a name="l20228"></a><span class="lineno">20228</span>&#160; </div>
<div class="line"><a name="l20229"></a><span class="lineno">20229</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l20230"></a><span class="lineno">20230</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l20231"></a><span class="lineno">20231</span>&#160; </div>
<div class="line"><a name="l20232"></a><span class="lineno">20232</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l20233"></a><span class="lineno">20233</span>&#160; <span class="keywordflow">return</span> *lhs.m_value.string == *rhs.m_value.string;</div>
<div class="line"><a name="l20234"></a><span class="lineno">20234</span>&#160; </div>
<div class="line"><a name="l20235"></a><span class="lineno">20235</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l20236"></a><span class="lineno">20236</span>&#160; <span class="keywordflow">return</span> lhs.m_value.boolean == rhs.m_value.boolean;</div>
<div class="line"><a name="l20237"></a><span class="lineno">20237</span>&#160; </div>
<div class="line"><a name="l20238"></a><span class="lineno">20238</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l20239"></a><span class="lineno">20239</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_integer == rhs.m_value.number_integer;</div>
<div class="line"><a name="l20240"></a><span class="lineno">20240</span>&#160; </div>
<div class="line"><a name="l20241"></a><span class="lineno">20241</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l20242"></a><span class="lineno">20242</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_unsigned == rhs.m_value.number_unsigned;</div>
<div class="line"><a name="l20243"></a><span class="lineno">20243</span>&#160; </div>
<div class="line"><a name="l20244"></a><span class="lineno">20244</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l20245"></a><span class="lineno">20245</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_float == rhs.m_value.number_float;</div>
<div class="line"><a name="l20246"></a><span class="lineno">20246</span>&#160; </div>
<div class="line"><a name="l20247"></a><span class="lineno">20247</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l20248"></a><span class="lineno">20248</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l20249"></a><span class="lineno">20249</span>&#160; }</div>
<div class="line"><a name="l20250"></a><span class="lineno">20250</span>&#160; }</div>
<div class="line"><a name="l20251"></a><span class="lineno">20251</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>)</div>
<div class="line"><a name="l20252"></a><span class="lineno">20252</span>&#160; {</div>
<div class="line"><a name="l20253"></a><span class="lineno">20253</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">&gt;</span>(lhs.m_value.number_integer) == rhs.m_value.number_float;</div>
<div class="line"><a name="l20254"></a><span class="lineno">20254</span>&#160; }</div>
<div class="line"><a name="l20255"></a><span class="lineno">20255</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>)</div>
<div class="line"><a name="l20256"></a><span class="lineno">20256</span>&#160; {</div>
<div class="line"><a name="l20257"></a><span class="lineno">20257</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_float == <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_integer);</div>
<div class="line"><a name="l20258"></a><span class="lineno">20258</span>&#160; }</div>
<div class="line"><a name="l20259"></a><span class="lineno">20259</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>)</div>
<div class="line"><a name="l20260"></a><span class="lineno">20260</span>&#160; {</div>
<div class="line"><a name="l20261"></a><span class="lineno">20261</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">&gt;</span>(lhs.m_value.number_unsigned) == rhs.m_value.number_float;</div>
<div class="line"><a name="l20262"></a><span class="lineno">20262</span>&#160; }</div>
<div class="line"><a name="l20263"></a><span class="lineno">20263</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>)</div>
<div class="line"><a name="l20264"></a><span class="lineno">20264</span>&#160; {</div>
<div class="line"><a name="l20265"></a><span class="lineno">20265</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_float == <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_unsigned);</div>
<div class="line"><a name="l20266"></a><span class="lineno">20266</span>&#160; }</div>
<div class="line"><a name="l20267"></a><span class="lineno">20267</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>)</div>
<div class="line"><a name="l20268"></a><span class="lineno">20268</span>&#160; {</div>
<div class="line"><a name="l20269"></a><span class="lineno">20269</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a><span class="keyword">&gt;</span>(lhs.m_value.number_unsigned) == rhs.m_value.number_integer;</div>
<div class="line"><a name="l20270"></a><span class="lineno">20270</span>&#160; }</div>
<div class="line"><a name="l20271"></a><span class="lineno">20271</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>)</div>
<div class="line"><a name="l20272"></a><span class="lineno">20272</span>&#160; {</div>
<div class="line"><a name="l20273"></a><span class="lineno">20273</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_integer == <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_unsigned);</div>
<div class="line"><a name="l20274"></a><span class="lineno">20274</span>&#160; }</div>
<div class="line"><a name="l20275"></a><span class="lineno">20275</span>&#160; </div>
<div class="line"><a name="l20276"></a><span class="lineno">20276</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l20277"></a><span class="lineno">20277</span>&#160; }</div>
<div class="line"><a name="l20278"></a><span class="lineno">20278</span>&#160; </div>
<div class="line"><a name="l20283"></a><span class="lineno">20283</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20284"></a><span class="lineno">20284</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20285"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aba21440ea1aff44f718285ed7d6d20d9">20285</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#aba21440ea1aff44f718285ed7d6d20d9">operator==</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
<div class="line"><a name="l20286"></a><span class="lineno">20286</span>&#160; {</div>
<div class="line"><a name="l20287"></a><span class="lineno">20287</span>&#160; <span class="keywordflow">return</span> lhs == <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
<div class="line"><a name="l20288"></a><span class="lineno">20288</span>&#160; }</div>
<div class="line"><a name="l20289"></a><span class="lineno">20289</span>&#160; </div>
<div class="line"><a name="l20294"></a><span class="lineno">20294</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20295"></a><span class="lineno">20295</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20296"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aef302e3ae215e46e5035d0e4fdf47235">20296</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#aef302e3ae215e46e5035d0e4fdf47235">operator==</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20297"></a><span class="lineno">20297</span>&#160; {</div>
<div class="line"><a name="l20298"></a><span class="lineno">20298</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) == rhs;</div>
<div class="line"><a name="l20299"></a><span class="lineno">20299</span>&#160; }</div>
<div class="line"><a name="l20300"></a><span class="lineno">20300</span>&#160; </div>
<div class="line"><a name="l20319"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6e2e21da48f5d9471716cd868a068327">20319</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a6e2e21da48f5d9471716cd868a068327">operator!=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20320"></a><span class="lineno">20320</span>&#160; {</div>
<div class="line"><a name="l20321"></a><span class="lineno">20321</span>&#160; <span class="keywordflow">return</span> not (lhs == rhs);</div>
<div class="line"><a name="l20322"></a><span class="lineno">20322</span>&#160; }</div>
<div class="line"><a name="l20323"></a><span class="lineno">20323</span>&#160; </div>
<div class="line"><a name="l20328"></a><span class="lineno">20328</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20329"></a><span class="lineno">20329</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20330"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#afefc38fc08bdb7a9a7474b5ab4a1140f">20330</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#afefc38fc08bdb7a9a7474b5ab4a1140f">operator!=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
<div class="line"><a name="l20331"></a><span class="lineno">20331</span>&#160; {</div>
<div class="line"><a name="l20332"></a><span class="lineno">20332</span>&#160; <span class="keywordflow">return</span> lhs != <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
<div class="line"><a name="l20333"></a><span class="lineno">20333</span>&#160; }</div>
<div class="line"><a name="l20334"></a><span class="lineno">20334</span>&#160; </div>
<div class="line"><a name="l20339"></a><span class="lineno">20339</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20340"></a><span class="lineno">20340</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20341"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab0e886db6e9fa91ff9fd853333fed05b">20341</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab0e886db6e9fa91ff9fd853333fed05b">operator!=</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20342"></a><span class="lineno">20342</span>&#160; {</div>
<div class="line"><a name="l20343"></a><span class="lineno">20343</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) != rhs;</div>
<div class="line"><a name="l20344"></a><span class="lineno">20344</span>&#160; }</div>
<div class="line"><a name="l20345"></a><span class="lineno">20345</span>&#160; </div>
<div class="line"><a name="l20372"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aacd442b66140c764c594ac8ad7dfd5b3">20372</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#aacd442b66140c764c594ac8ad7dfd5b3">operator&lt;</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20373"></a><span class="lineno">20373</span>&#160; {</div>
<div class="line"><a name="l20374"></a><span class="lineno">20374</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> lhs_type = lhs.type();</div>
<div class="line"><a name="l20375"></a><span class="lineno">20375</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> rhs_type = rhs.type();</div>
<div class="line"><a name="l20376"></a><span class="lineno">20376</span>&#160; </div>
<div class="line"><a name="l20377"></a><span class="lineno">20377</span>&#160; <span class="keywordflow">if</span> (lhs_type == rhs_type)</div>
<div class="line"><a name="l20378"></a><span class="lineno">20378</span>&#160; {</div>
<div class="line"><a name="l20379"></a><span class="lineno">20379</span>&#160; <span class="keywordflow">switch</span> (lhs_type)</div>
<div class="line"><a name="l20380"></a><span class="lineno">20380</span>&#160; {</div>
<div class="line"><a name="l20381"></a><span class="lineno">20381</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l20382"></a><span class="lineno">20382</span>&#160; <span class="comment">// note parentheses are necessary, see</span></div>
<div class="line"><a name="l20383"></a><span class="lineno">20383</span>&#160; <span class="comment">// https://github.com/nlohmann/json/issues/1530</span></div>
<div class="line"><a name="l20384"></a><span class="lineno">20384</span>&#160; <span class="keywordflow">return</span> (*lhs.m_value.array) &lt; (*rhs.m_value.array);</div>
<div class="line"><a name="l20385"></a><span class="lineno">20385</span>&#160; </div>
<div class="line"><a name="l20386"></a><span class="lineno">20386</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l20387"></a><span class="lineno">20387</span>&#160; <span class="keywordflow">return</span> (*lhs.m_value.object) &lt; (*rhs.m_value.object);</div>
<div class="line"><a name="l20388"></a><span class="lineno">20388</span>&#160; </div>
<div class="line"><a name="l20389"></a><span class="lineno">20389</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l20390"></a><span class="lineno">20390</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l20391"></a><span class="lineno">20391</span>&#160; </div>
<div class="line"><a name="l20392"></a><span class="lineno">20392</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l20393"></a><span class="lineno">20393</span>&#160; <span class="keywordflow">return</span> (*lhs.m_value.string) &lt; (*rhs.m_value.string);</div>
<div class="line"><a name="l20394"></a><span class="lineno">20394</span>&#160; </div>
<div class="line"><a name="l20395"></a><span class="lineno">20395</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l20396"></a><span class="lineno">20396</span>&#160; <span class="keywordflow">return</span> (lhs.m_value.boolean) &lt; (rhs.m_value.boolean);</div>
<div class="line"><a name="l20397"></a><span class="lineno">20397</span>&#160; </div>
<div class="line"><a name="l20398"></a><span class="lineno">20398</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
<div class="line"><a name="l20399"></a><span class="lineno">20399</span>&#160; <span class="keywordflow">return</span> (lhs.m_value.number_integer) &lt; (rhs.m_value.number_integer);</div>
<div class="line"><a name="l20400"></a><span class="lineno">20400</span>&#160; </div>
<div class="line"><a name="l20401"></a><span class="lineno">20401</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
<div class="line"><a name="l20402"></a><span class="lineno">20402</span>&#160; <span class="keywordflow">return</span> (lhs.m_value.number_unsigned) &lt; (rhs.m_value.number_unsigned);</div>
<div class="line"><a name="l20403"></a><span class="lineno">20403</span>&#160; </div>
<div class="line"><a name="l20404"></a><span class="lineno">20404</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
<div class="line"><a name="l20405"></a><span class="lineno">20405</span>&#160; <span class="keywordflow">return</span> (lhs.m_value.number_float) &lt; (rhs.m_value.number_float);</div>
<div class="line"><a name="l20406"></a><span class="lineno">20406</span>&#160; </div>
<div class="line"><a name="l20407"></a><span class="lineno">20407</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l20408"></a><span class="lineno">20408</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l20409"></a><span class="lineno">20409</span>&#160; }</div>
<div class="line"><a name="l20410"></a><span class="lineno">20410</span>&#160; }</div>
<div class="line"><a name="l20411"></a><span class="lineno">20411</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>)</div>
<div class="line"><a name="l20412"></a><span class="lineno">20412</span>&#160; {</div>
<div class="line"><a name="l20413"></a><span class="lineno">20413</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">&gt;</span>(lhs.m_value.number_integer) &lt; rhs.m_value.number_float;</div>
<div class="line"><a name="l20414"></a><span class="lineno">20414</span>&#160; }</div>
<div class="line"><a name="l20415"></a><span class="lineno">20415</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>)</div>
<div class="line"><a name="l20416"></a><span class="lineno">20416</span>&#160; {</div>
<div class="line"><a name="l20417"></a><span class="lineno">20417</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_float &lt; <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_integer);</div>
<div class="line"><a name="l20418"></a><span class="lineno">20418</span>&#160; }</div>
<div class="line"><a name="l20419"></a><span class="lineno">20419</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>)</div>
<div class="line"><a name="l20420"></a><span class="lineno">20420</span>&#160; {</div>
<div class="line"><a name="l20421"></a><span class="lineno">20421</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">&gt;</span>(lhs.m_value.number_unsigned) &lt; rhs.m_value.number_float;</div>
<div class="line"><a name="l20422"></a><span class="lineno">20422</span>&#160; }</div>
<div class="line"><a name="l20423"></a><span class="lineno">20423</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>)</div>
<div class="line"><a name="l20424"></a><span class="lineno">20424</span>&#160; {</div>
<div class="line"><a name="l20425"></a><span class="lineno">20425</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_float &lt; <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_unsigned);</div>
<div class="line"><a name="l20426"></a><span class="lineno">20426</span>&#160; }</div>
<div class="line"><a name="l20427"></a><span class="lineno">20427</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>)</div>
<div class="line"><a name="l20428"></a><span class="lineno">20428</span>&#160; {</div>
<div class="line"><a name="l20429"></a><span class="lineno">20429</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_integer &lt; <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_unsigned);</div>
<div class="line"><a name="l20430"></a><span class="lineno">20430</span>&#160; }</div>
<div class="line"><a name="l20431"></a><span class="lineno">20431</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>)</div>
<div class="line"><a name="l20432"></a><span class="lineno">20432</span>&#160; {</div>
<div class="line"><a name="l20433"></a><span class="lineno">20433</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a><span class="keyword">&gt;</span>(lhs.m_value.number_unsigned) &lt; rhs.m_value.number_integer;</div>
<div class="line"><a name="l20434"></a><span class="lineno">20434</span>&#160; }</div>
<div class="line"><a name="l20435"></a><span class="lineno">20435</span>&#160; </div>
<div class="line"><a name="l20436"></a><span class="lineno">20436</span>&#160; <span class="comment">// We only reach this line if we cannot compare values. In that case,</span></div>
<div class="line"><a name="l20437"></a><span class="lineno">20437</span>&#160; <span class="comment">// we compare types. Note we have to call the operator explicitly,</span></div>
<div class="line"><a name="l20438"></a><span class="lineno">20438</span>&#160; <span class="comment">// because MSVC has problems otherwise.</span></div>
<div class="line"><a name="l20439"></a><span class="lineno">20439</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aacd442b66140c764c594ac8ad7dfd5b3">operator&lt;</a>(lhs_type, rhs_type);</div>
<div class="line"><a name="l20440"></a><span class="lineno">20440</span>&#160; }</div>
<div class="line"><a name="l20441"></a><span class="lineno">20441</span>&#160; </div>
<div class="line"><a name="l20446"></a><span class="lineno">20446</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20447"></a><span class="lineno">20447</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20448"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7999ee3a69a4979d92e98ab1e88c8759">20448</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a7999ee3a69a4979d92e98ab1e88c8759">operator&lt;</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
<div class="line"><a name="l20449"></a><span class="lineno">20449</span>&#160; {</div>
<div class="line"><a name="l20450"></a><span class="lineno">20450</span>&#160; <span class="keywordflow">return</span> lhs &lt; <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
<div class="line"><a name="l20451"></a><span class="lineno">20451</span>&#160; }</div>
<div class="line"><a name="l20452"></a><span class="lineno">20452</span>&#160; </div>
<div class="line"><a name="l20457"></a><span class="lineno">20457</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20458"></a><span class="lineno">20458</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20459"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abed3e9b4ab75f5bcbd3cd20f5af5cdab">20459</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#abed3e9b4ab75f5bcbd3cd20f5af5cdab">operator&lt;</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20460"></a><span class="lineno">20460</span>&#160; {</div>
<div class="line"><a name="l20461"></a><span class="lineno">20461</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) &lt; rhs;</div>
<div class="line"><a name="l20462"></a><span class="lineno">20462</span>&#160; }</div>
<div class="line"><a name="l20463"></a><span class="lineno">20463</span>&#160; </div>
<div class="line"><a name="l20483"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5c8bb5200f5eac10d31e26be46e5b1ac">20483</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5c8bb5200f5eac10d31e26be46e5b1ac">operator&lt;=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20484"></a><span class="lineno">20484</span>&#160; {</div>
<div class="line"><a name="l20485"></a><span class="lineno">20485</span>&#160; <span class="keywordflow">return</span> not (rhs &lt; lhs);</div>
<div class="line"><a name="l20486"></a><span class="lineno">20486</span>&#160; }</div>
<div class="line"><a name="l20487"></a><span class="lineno">20487</span>&#160; </div>
<div class="line"><a name="l20492"></a><span class="lineno">20492</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20493"></a><span class="lineno">20493</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20494"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7e368211047f725f333696aefdf39ffd">20494</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a7e368211047f725f333696aefdf39ffd">operator&lt;=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
<div class="line"><a name="l20495"></a><span class="lineno">20495</span>&#160; {</div>
<div class="line"><a name="l20496"></a><span class="lineno">20496</span>&#160; <span class="keywordflow">return</span> lhs &lt;= <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
<div class="line"><a name="l20497"></a><span class="lineno">20497</span>&#160; }</div>
<div class="line"><a name="l20498"></a><span class="lineno">20498</span>&#160; </div>
<div class="line"><a name="l20503"></a><span class="lineno">20503</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20504"></a><span class="lineno">20504</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20505"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad73f88f70fe5acfa521750a8cd710026">20505</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#ad73f88f70fe5acfa521750a8cd710026">operator&lt;=</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20506"></a><span class="lineno">20506</span>&#160; {</div>
<div class="line"><a name="l20507"></a><span class="lineno">20507</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) &lt;= rhs;</div>
<div class="line"><a name="l20508"></a><span class="lineno">20508</span>&#160; }</div>
<div class="line"><a name="l20509"></a><span class="lineno">20509</span>&#160; </div>
<div class="line"><a name="l20529"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a87db51b6b936fb2ea293cdbc8702dcb8">20529</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a87db51b6b936fb2ea293cdbc8702dcb8">operator&gt;</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20530"></a><span class="lineno">20530</span>&#160; {</div>
<div class="line"><a name="l20531"></a><span class="lineno">20531</span>&#160; <span class="keywordflow">return</span> not (lhs &lt;= rhs);</div>
<div class="line"><a name="l20532"></a><span class="lineno">20532</span>&#160; }</div>
<div class="line"><a name="l20533"></a><span class="lineno">20533</span>&#160; </div>
<div class="line"><a name="l20538"></a><span class="lineno">20538</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20539"></a><span class="lineno">20539</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20540"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a412895af9a582869a4d369a64fb1b6d6">20540</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a412895af9a582869a4d369a64fb1b6d6">operator&gt;</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
<div class="line"><a name="l20541"></a><span class="lineno">20541</span>&#160; {</div>
<div class="line"><a name="l20542"></a><span class="lineno">20542</span>&#160; <span class="keywordflow">return</span> lhs &gt; <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
<div class="line"><a name="l20543"></a><span class="lineno">20543</span>&#160; }</div>
<div class="line"><a name="l20544"></a><span class="lineno">20544</span>&#160; </div>
<div class="line"><a name="l20549"></a><span class="lineno">20549</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20550"></a><span class="lineno">20550</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20551"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a124c319566198d9f092c5bebea46ce77">20551</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a124c319566198d9f092c5bebea46ce77">operator&gt;</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20552"></a><span class="lineno">20552</span>&#160; {</div>
<div class="line"><a name="l20553"></a><span class="lineno">20553</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) &gt; rhs;</div>
<div class="line"><a name="l20554"></a><span class="lineno">20554</span>&#160; }</div>
<div class="line"><a name="l20555"></a><span class="lineno">20555</span>&#160; </div>
<div class="line"><a name="l20575"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a74a943800c7f103d0990d7eef82c6453">20575</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a74a943800c7f103d0990d7eef82c6453">operator&gt;=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20576"></a><span class="lineno">20576</span>&#160; {</div>
<div class="line"><a name="l20577"></a><span class="lineno">20577</span>&#160; <span class="keywordflow">return</span> not (lhs &lt; rhs);</div>
<div class="line"><a name="l20578"></a><span class="lineno">20578</span>&#160; }</div>
<div class="line"><a name="l20579"></a><span class="lineno">20579</span>&#160; </div>
<div class="line"><a name="l20584"></a><span class="lineno">20584</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20585"></a><span class="lineno">20585</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20586"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a68e3a92b3d9be1faa05c92d096299189">20586</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a68e3a92b3d9be1faa05c92d096299189">operator&gt;=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
<div class="line"><a name="l20587"></a><span class="lineno">20587</span>&#160; {</div>
<div class="line"><a name="l20588"></a><span class="lineno">20588</span>&#160; <span class="keywordflow">return</span> lhs &gt;= <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
<div class="line"><a name="l20589"></a><span class="lineno">20589</span>&#160; }</div>
<div class="line"><a name="l20590"></a><span class="lineno">20590</span>&#160; </div>
<div class="line"><a name="l20595"></a><span class="lineno">20595</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20596"></a><span class="lineno">20596</span>&#160; std::is_scalar&lt;ScalarType&gt;::value, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20597"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5ee0e3e8afc7cbd932d6ed66418fa80a">20597</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5ee0e3e8afc7cbd932d6ed66418fa80a">operator&gt;=</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
<div class="line"><a name="l20598"></a><span class="lineno">20598</span>&#160; {</div>
<div class="line"><a name="l20599"></a><span class="lineno">20599</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) &gt;= rhs;</div>
<div class="line"><a name="l20600"></a><span class="lineno">20600</span>&#160; }</div>
<div class="line"><a name="l20601"></a><span class="lineno">20601</span>&#160; </div>
<div class="line"><a name="l20603"></a><span class="lineno">20603</span>&#160; </div>
<div class="line"><a name="l20605"></a><span class="lineno">20605</span>&#160; <span class="comment">// serialization //</span></div>
<div class="line"><a name="l20607"></a><span class="lineno">20607</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l20610"></a><span class="lineno">20610</span>&#160; </div>
<div class="line"><a name="l20642"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5e34c5435e557d0bf666bd7311211405">20642</a></span>&#160; <span class="keyword">friend</span> std::ostream&amp; <a class="code" href="classnlohmann_1_1basic__json.html#a5e34c5435e557d0bf666bd7311211405">operator&lt;&lt;</a>(std::ostream&amp; o, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j)</div>
<div class="line"><a name="l20643"></a><span class="lineno">20643</span>&#160; {</div>
<div class="line"><a name="l20644"></a><span class="lineno">20644</span>&#160; <span class="comment">// read width member and use it as indentation parameter if nonzero</span></div>
<div class="line"><a name="l20645"></a><span class="lineno">20645</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> pretty_print = o.width() &gt; 0;</div>
<div class="line"><a name="l20646"></a><span class="lineno">20646</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> indentation = pretty_print ? o.width() : 0;</div>
<div class="line"><a name="l20647"></a><span class="lineno">20647</span>&#160; </div>
<div class="line"><a name="l20648"></a><span class="lineno">20648</span>&#160; <span class="comment">// reset width to 0 for subsequent calls to this stream</span></div>
<div class="line"><a name="l20649"></a><span class="lineno">20649</span>&#160; o.width(0);</div>
<div class="line"><a name="l20650"></a><span class="lineno">20650</span>&#160; </div>
<div class="line"><a name="l20651"></a><span class="lineno">20651</span>&#160; <span class="comment">// do the actual serialization</span></div>
<div class="line"><a name="l20652"></a><span class="lineno">20652</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a> s(<a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter&lt;char&gt;</a>(o), o.fill());</div>
<div class="line"><a name="l20653"></a><span class="lineno">20653</span>&#160; s.<a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(j, pretty_print, <span class="keyword">false</span>, <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(indentation));</div>
<div class="line"><a name="l20654"></a><span class="lineno">20654</span>&#160; <span class="keywordflow">return</span> o;</div>
<div class="line"><a name="l20655"></a><span class="lineno">20655</span>&#160; }</div>
<div class="line"><a name="l20656"></a><span class="lineno">20656</span>&#160; </div>
<div class="line"><a name="l20665"></a><span class="lineno">20665</span>&#160; <a class="code" href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c">JSON_HEDLEY_DEPRECATED</a>(3.0.0)</div>
<div class="line"><a name="l20666"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a34d6a60dd99e9f33b8273a1c8db5669b">20666</a></span>&#160; friend <a class="code" href="namespacestd.html">std</a>::ostream&amp; operator&gt;&gt;(const <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j, <a class="code" href="namespacestd.html">std</a>::ostream&amp; o)</div>
<div class="line"><a name="l20667"></a><span class="lineno">20667</span>&#160; {</div>
<div class="line"><a name="l20668"></a><span class="lineno">20668</span>&#160; <span class="keywordflow">return</span> o &lt;&lt; j;</div>
<div class="line"><a name="l20669"></a><span class="lineno">20669</span>&#160; }</div>
<div class="line"><a name="l20670"></a><span class="lineno">20670</span>&#160; </div>
<div class="line"><a name="l20672"></a><span class="lineno">20672</span>&#160; </div>
<div class="line"><a name="l20673"></a><span class="lineno">20673</span>&#160; </div>
<div class="line"><a name="l20675"></a><span class="lineno">20675</span>&#160; <span class="comment">// deserialization //</span></div>
<div class="line"><a name="l20677"></a><span class="lineno">20677</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l20680"></a><span class="lineno">20680</span>&#160; </div>
<div class="line"><a name="l20744"></a><span class="lineno">20744</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l20745"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a265a473e939184aa42655c9ccdf34e58">20745</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a265a473e939184aa42655c9ccdf34e58">parse</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&amp;&amp; i,</div>
<div class="line"><a name="l20746"></a><span class="lineno">20746</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab4f78c5f9fd25172eeec84482e03f5b7">parser_callback_t</a> cb = <span class="keyword">nullptr</span>,</div>
<div class="line"><a name="l20747"></a><span class="lineno">20747</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
<div class="line"><a name="l20748"></a><span class="lineno">20748</span>&#160; {</div>
<div class="line"><a name="l20749"></a><span class="lineno">20749</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l20750"></a><span class="lineno">20750</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(i, cb, allow_exceptions).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17">parse</a>(<span class="keyword">true</span>, result);</div>
<div class="line"><a name="l20751"></a><span class="lineno">20751</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l20752"></a><span class="lineno">20752</span>&#160; }</div>
<div class="line"><a name="l20753"></a><span class="lineno">20753</span>&#160; </div>
<div class="line"><a name="l20754"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a875585b0cb6133902066daccd7c9d420">20754</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a875585b0cb6133902066daccd7c9d420">accept</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&amp;&amp; i)</div>
<div class="line"><a name="l20755"></a><span class="lineno">20755</span>&#160; {</div>
<div class="line"><a name="l20756"></a><span class="lineno">20756</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(i).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a20997b42262856935b60fc91bf05bf3f">accept</a>(<span class="keyword">true</span>);</div>
<div class="line"><a name="l20757"></a><span class="lineno">20757</span>&#160; }</div>
<div class="line"><a name="l20758"></a><span class="lineno">20758</span>&#160; </div>
<div class="line"><a name="l20812"></a><span class="lineno">20812</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SAX&gt;</div>
<div class="line"><a name="l20813"></a><span class="lineno">20813</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
<div class="line"><a name="l20814"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8a3dd150c2d1f0df3502d937de0871db">20814</a></span>&#160; static <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8a3dd150c2d1f0df3502d937de0871db">sax_parse</a>(detail::input_adapter&amp;&amp; i, SAX* sax,</div>
<div class="line"><a name="l20815"></a><span class="lineno">20815</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format = <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a>::<a class="code" href="classnlohmann_1_1basic__json.html">json</a>,</div>
<div class="line"><a name="l20816"></a><span class="lineno">20816</span>&#160; const <span class="keywordtype">bool</span> strict = true)</div>
<div class="line"><a name="l20817"></a><span class="lineno">20817</span>&#160; {</div>
<div class="line"><a name="l20818"></a><span class="lineno">20818</span>&#160; assert(sax);</div>
<div class="line"><a name="l20819"></a><span class="lineno">20819</span>&#160; <span class="keywordflow">return</span> format == <a class="code" href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc">input_format_t::json</a></div>
<div class="line"><a name="l20820"></a><span class="lineno">20820</span>&#160; ? <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(std::move(i)).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25">sax_parse</a>(sax, strict)</div>
<div class="line"><a name="l20821"></a><span class="lineno">20821</span>&#160; : <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">detail::binary_reader&lt;basic_json, SAX&gt;</a>(std::move(i)).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(format, sax, strict);</div>
<div class="line"><a name="l20822"></a><span class="lineno">20822</span>&#160; }</div>
<div class="line"><a name="l20823"></a><span class="lineno">20823</span>&#160; </div>
<div class="line"><a name="l20873"></a><span class="lineno">20873</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>IteratorType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20874"></a><span class="lineno">20874</span>&#160; std::is_base_of&lt;</div>
<div class="line"><a name="l20875"></a><span class="lineno">20875</span>&#160; std::random_access_iterator_tag,</div>
<div class="line"><a name="l20876"></a><span class="lineno">20876</span>&#160; <span class="keyword">typename</span> std::iterator_traits&lt;IteratorType&gt;::iterator_category&gt;<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20877"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab330c13ba254ea41fbc1c52c5c610f45">20877</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#ab330c13ba254ea41fbc1c52c5c610f45">parse</a>(IteratorType first, IteratorType last,</div>
<div class="line"><a name="l20878"></a><span class="lineno">20878</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab4f78c5f9fd25172eeec84482e03f5b7">parser_callback_t</a> cb = <span class="keyword">nullptr</span>,</div>
<div class="line"><a name="l20879"></a><span class="lineno">20879</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
<div class="line"><a name="l20880"></a><span class="lineno">20880</span>&#160; {</div>
<div class="line"><a name="l20881"></a><span class="lineno">20881</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l20882"></a><span class="lineno">20882</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(first, last), cb, allow_exceptions).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17">parse</a>(<span class="keyword">true</span>, result);</div>
<div class="line"><a name="l20883"></a><span class="lineno">20883</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l20884"></a><span class="lineno">20884</span>&#160; }</div>
<div class="line"><a name="l20885"></a><span class="lineno">20885</span>&#160; </div>
<div class="line"><a name="l20886"></a><span class="lineno">20886</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>IteratorType, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20887"></a><span class="lineno">20887</span>&#160; std::is_base_of&lt;</div>
<div class="line"><a name="l20888"></a><span class="lineno">20888</span>&#160; std::random_access_iterator_tag,</div>
<div class="line"><a name="l20889"></a><span class="lineno">20889</span>&#160; <span class="keyword">typename</span> std::iterator_traits&lt;IteratorType&gt;::iterator_category&gt;<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20890"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae797958b922732bf5fc01053d0659c1f">20890</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae797958b922732bf5fc01053d0659c1f">accept</a>(IteratorType first, IteratorType last)</div>
<div class="line"><a name="l20891"></a><span class="lineno">20891</span>&#160; {</div>
<div class="line"><a name="l20892"></a><span class="lineno">20892</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(first, last)).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a20997b42262856935b60fc91bf05bf3f">accept</a>(<span class="keyword">true</span>);</div>
<div class="line"><a name="l20893"></a><span class="lineno">20893</span>&#160; }</div>
<div class="line"><a name="l20894"></a><span class="lineno">20894</span>&#160; </div>
<div class="line"><a name="l20895"></a><span class="lineno">20895</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>IteratorType, <span class="keyword">class </span>SAX, <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a name="l20896"></a><span class="lineno">20896</span>&#160; std::is_base_of&lt;</div>
<div class="line"><a name="l20897"></a><span class="lineno">20897</span>&#160; std::random_access_iterator_tag,</div>
<div class="line"><a name="l20898"></a><span class="lineno">20898</span>&#160; <span class="keyword">typename</span> std::iterator_traits&lt;IteratorType&gt;::iterator_category&gt;<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>&gt;<a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0&gt;</div>
<div class="line"><a name="l20899"></a><span class="lineno">20899</span>&#160; <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
<div class="line"><a name="l20900"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aab9d7f0843a6e8f18eb2ebb944a796bd">20900</a></span>&#160; static <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8a3dd150c2d1f0df3502d937de0871db">sax_parse</a>(IteratorType first, IteratorType last, SAX* sax)</div>
<div class="line"><a name="l20901"></a><span class="lineno">20901</span>&#160; {</div>
<div class="line"><a name="l20902"></a><span class="lineno">20902</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(first, last)).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25">sax_parse</a>(sax);</div>
<div class="line"><a name="l20903"></a><span class="lineno">20903</span>&#160; }</div>
<div class="line"><a name="l20904"></a><span class="lineno">20904</span>&#160; </div>
<div class="line"><a name="l20913"></a><span class="lineno">20913</span>&#160; <a class="code" href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c">JSON_HEDLEY_DEPRECATED</a>(3.0.0)</div>
<div class="line"><a name="l20914"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a60ca396028b8d9714c6e10efbf475af6">20914</a></span>&#160; friend <a class="code" href="namespacestd.html">std</a>::istream&amp; operator&lt;&lt;(<a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j, <a class="code" href="namespacestd.html">std</a>::istream&amp; i)</div>
<div class="line"><a name="l20915"></a><span class="lineno">20915</span>&#160; {</div>
<div class="line"><a name="l20916"></a><span class="lineno">20916</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a34d6a60dd99e9f33b8273a1c8db5669b">operator&gt;&gt;</a>(i, j);</div>
<div class="line"><a name="l20917"></a><span class="lineno">20917</span>&#160; }</div>
<div class="line"><a name="l20918"></a><span class="lineno">20918</span>&#160; </div>
<div class="line"><a name="l20944"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aaf363408931d76472ded14017e59c9e8">20944</a></span>&#160; <span class="keyword">friend</span> std::istream&amp; <a class="code" href="classnlohmann_1_1basic__json.html#aaf363408931d76472ded14017e59c9e8">operator&gt;&gt;</a>(std::istream&amp; i, <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j)</div>
<div class="line"><a name="l20945"></a><span class="lineno">20945</span>&#160; {</div>
<div class="line"><a name="l20946"></a><span class="lineno">20946</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(i)).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17">parse</a>(<span class="keyword">false</span>, j);</div>
<div class="line"><a name="l20947"></a><span class="lineno">20947</span>&#160; <span class="keywordflow">return</span> i;</div>
<div class="line"><a name="l20948"></a><span class="lineno">20948</span>&#160; }</div>
<div class="line"><a name="l20949"></a><span class="lineno">20949</span>&#160; </div>
<div class="line"><a name="l20951"></a><span class="lineno">20951</span>&#160; </div>
<div class="line"><a name="l20953"></a><span class="lineno">20953</span>&#160; <span class="comment">// convenience functions //</span></div>
<div class="line"><a name="l20955"></a><span class="lineno">20955</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l20986"></a><span class="lineno">20986</span>&#160; <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
<div class="line"><a name="l20987"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">20987</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>() const noexcept</div>
<div class="line"><a name="l20988"></a><span class="lineno">20988</span>&#160; {</div>
<div class="line"><a name="l20989"></a><span class="lineno">20989</span>&#160; {</div>
<div class="line"><a name="l20990"></a><span class="lineno">20990</span>&#160; <span class="keywordflow">switch</span> (m_type)</div>
<div class="line"><a name="l20991"></a><span class="lineno">20991</span>&#160; {</div>
<div class="line"><a name="l20992"></a><span class="lineno">20992</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l20993"></a><span class="lineno">20993</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;null&quot;</span>;</div>
<div class="line"><a name="l20994"></a><span class="lineno">20994</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l20995"></a><span class="lineno">20995</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;object&quot;</span>;</div>
<div class="line"><a name="l20996"></a><span class="lineno">20996</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l20997"></a><span class="lineno">20997</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;array&quot;</span>;</div>
<div class="line"><a name="l20998"></a><span class="lineno">20998</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
<div class="line"><a name="l20999"></a><span class="lineno">20999</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;string&quot;</span>;</div>
<div class="line"><a name="l21000"></a><span class="lineno">21000</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
<div class="line"><a name="l21001"></a><span class="lineno">21001</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;boolean&quot;</span>;</div>
<div class="line"><a name="l21002"></a><span class="lineno">21002</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>:</div>
<div class="line"><a name="l21003"></a><span class="lineno">21003</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;discarded&quot;</span>;</div>
<div class="line"><a name="l21004"></a><span class="lineno">21004</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l21005"></a><span class="lineno">21005</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;number&quot;</span>;</div>
<div class="line"><a name="l21006"></a><span class="lineno">21006</span>&#160; }</div>
<div class="line"><a name="l21007"></a><span class="lineno">21007</span>&#160; }</div>
<div class="line"><a name="l21008"></a><span class="lineno">21008</span>&#160; }</div>
<div class="line"><a name="l21009"></a><span class="lineno">21009</span>&#160; </div>
<div class="line"><a name="l21010"></a><span class="lineno">21010</span>&#160; </div>
<div class="line"><a name="l21011"></a><span class="lineno">21011</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l21013"></a><span class="lineno">21013</span>&#160; <span class="comment">// member variables //</span></div>
<div class="line"><a name="l21015"></a><span class="lineno">21015</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l21017"></a><span class="lineno">21017</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">value_t</a> m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
<div class="line"><a name="l21018"></a><span class="lineno">21018</span>&#160; </div>
<div class="line"><a name="l21020"></a><span class="lineno">21020</span>&#160; json_value m_value = {};</div>
<div class="line"><a name="l21021"></a><span class="lineno">21021</span>&#160; </div>
<div class="line"><a name="l21023"></a><span class="lineno">21023</span>&#160; <span class="comment">// binary serialization/deserialization //</span></div>
<div class="line"><a name="l21025"></a><span class="lineno">21025</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l21028"></a><span class="lineno">21028</span>&#160; </div>
<div class="line"><a name="l21029"></a><span class="lineno">21029</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l21118"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2566783e190dec524bf3445b322873b8">21118</a></span>&#160; <span class="keyword">static</span> std::vector&lt;uint8_t&gt; <a class="code" href="classnlohmann_1_1basic__json.html#a2566783e190dec524bf3445b322873b8">to_cbor</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j)</div>
<div class="line"><a name="l21119"></a><span class="lineno">21119</span>&#160; {</div>
<div class="line"><a name="l21120"></a><span class="lineno">21120</span>&#160; std::vector&lt;uint8_t&gt; result;</div>
<div class="line"><a name="l21121"></a><span class="lineno">21121</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a2566783e190dec524bf3445b322873b8">to_cbor</a>(j, result);</div>
<div class="line"><a name="l21122"></a><span class="lineno">21122</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l21123"></a><span class="lineno">21123</span>&#160; }</div>
<div class="line"><a name="l21124"></a><span class="lineno">21124</span>&#160; </div>
<div class="line"><a name="l21125"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5d9a89ac7ed08171a22dc6d65d033c09">21125</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5d9a89ac7ed08171a22dc6d65d033c09">to_cbor</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter&lt;uint8_t&gt;</a> o)</div>
<div class="line"><a name="l21126"></a><span class="lineno">21126</span>&#160; {</div>
<div class="line"><a name="l21127"></a><span class="lineno">21127</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer&lt;uint8_t&gt;</a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(j);</div>
<div class="line"><a name="l21128"></a><span class="lineno">21128</span>&#160; }</div>
<div class="line"><a name="l21129"></a><span class="lineno">21129</span>&#160; </div>
<div class="line"><a name="l21130"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6defa7ec3d3ace8f713f001f720182d7">21130</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a6defa7ec3d3ace8f713f001f720182d7">to_cbor</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter&lt;char&gt;</a> o)</div>
<div class="line"><a name="l21131"></a><span class="lineno">21131</span>&#160; {</div>
<div class="line"><a name="l21132"></a><span class="lineno">21132</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer&lt;char&gt;</a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(j);</div>
<div class="line"><a name="l21133"></a><span class="lineno">21133</span>&#160; }</div>
<div class="line"><a name="l21134"></a><span class="lineno">21134</span>&#160; </div>
<div class="line"><a name="l21214"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a09ca1dc273d226afe0ca83a9d7438d9c">21214</a></span>&#160; <span class="keyword">static</span> std::vector&lt;uint8_t&gt; <a class="code" href="classnlohmann_1_1basic__json.html#a09ca1dc273d226afe0ca83a9d7438d9c">to_msgpack</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j)</div>
<div class="line"><a name="l21215"></a><span class="lineno">21215</span>&#160; {</div>
<div class="line"><a name="l21216"></a><span class="lineno">21216</span>&#160; std::vector&lt;uint8_t&gt; result;</div>
<div class="line"><a name="l21217"></a><span class="lineno">21217</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a09ca1dc273d226afe0ca83a9d7438d9c">to_msgpack</a>(j, result);</div>
<div class="line"><a name="l21218"></a><span class="lineno">21218</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l21219"></a><span class="lineno">21219</span>&#160; }</div>
<div class="line"><a name="l21220"></a><span class="lineno">21220</span>&#160; </div>
<div class="line"><a name="l21221"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4ef190107be36fea6b6c63d71d439c99">21221</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a4ef190107be36fea6b6c63d71d439c99">to_msgpack</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter&lt;uint8_t&gt;</a> o)</div>
<div class="line"><a name="l21222"></a><span class="lineno">21222</span>&#160; {</div>
<div class="line"><a name="l21223"></a><span class="lineno">21223</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer&lt;uint8_t&gt;</a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(j);</div>
<div class="line"><a name="l21224"></a><span class="lineno">21224</span>&#160; }</div>
<div class="line"><a name="l21225"></a><span class="lineno">21225</span>&#160; </div>
<div class="line"><a name="l21226"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a99efe44b502de2762a433ce3688ec2d2">21226</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a99efe44b502de2762a433ce3688ec2d2">to_msgpack</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter&lt;char&gt;</a> o)</div>
<div class="line"><a name="l21227"></a><span class="lineno">21227</span>&#160; {</div>
<div class="line"><a name="l21228"></a><span class="lineno">21228</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer&lt;char&gt;</a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(j);</div>
<div class="line"><a name="l21229"></a><span class="lineno">21229</span>&#160; }</div>
<div class="line"><a name="l21230"></a><span class="lineno">21230</span>&#160; </div>
<div class="line"><a name="l21311"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae1ece6c2059114eac10873f13ef19185">21311</a></span>&#160; <span class="keyword">static</span> std::vector&lt;uint8_t&gt; <a class="code" href="classnlohmann_1_1basic__json.html#ae1ece6c2059114eac10873f13ef19185">to_ubjson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j,</div>
<div class="line"><a name="l21312"></a><span class="lineno">21312</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> use_size = <span class="keyword">false</span>,</div>
<div class="line"><a name="l21313"></a><span class="lineno">21313</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> use_type = <span class="keyword">false</span>)</div>
<div class="line"><a name="l21314"></a><span class="lineno">21314</span>&#160; {</div>
<div class="line"><a name="l21315"></a><span class="lineno">21315</span>&#160; std::vector&lt;uint8_t&gt; result;</div>
<div class="line"><a name="l21316"></a><span class="lineno">21316</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ae1ece6c2059114eac10873f13ef19185">to_ubjson</a>(j, result, use_size, use_type);</div>
<div class="line"><a name="l21317"></a><span class="lineno">21317</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l21318"></a><span class="lineno">21318</span>&#160; }</div>
<div class="line"><a name="l21319"></a><span class="lineno">21319</span>&#160; </div>
<div class="line"><a name="l21320"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a480f6d5a30b9627b55831178266575a7">21320</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a480f6d5a30b9627b55831178266575a7">to_ubjson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter&lt;uint8_t&gt;</a> o,</div>
<div class="line"><a name="l21321"></a><span class="lineno">21321</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> use_size = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">bool</span> use_type = <span class="keyword">false</span>)</div>
<div class="line"><a name="l21322"></a><span class="lineno">21322</span>&#160; {</div>
<div class="line"><a name="l21323"></a><span class="lineno">21323</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer&lt;uint8_t&gt;</a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">write_ubjson</a>(j, use_size, use_type);</div>
<div class="line"><a name="l21324"></a><span class="lineno">21324</span>&#160; }</div>
<div class="line"><a name="l21325"></a><span class="lineno">21325</span>&#160; </div>
<div class="line"><a name="l21326"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af66db22ad819346a688042a9da68ee5f">21326</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#af66db22ad819346a688042a9da68ee5f">to_ubjson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter&lt;char&gt;</a> o,</div>
<div class="line"><a name="l21327"></a><span class="lineno">21327</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> use_size = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">bool</span> use_type = <span class="keyword">false</span>)</div>
<div class="line"><a name="l21328"></a><span class="lineno">21328</span>&#160; {</div>
<div class="line"><a name="l21329"></a><span class="lineno">21329</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer&lt;char&gt;</a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">write_ubjson</a>(j, use_size, use_type);</div>
<div class="line"><a name="l21330"></a><span class="lineno">21330</span>&#160; }</div>
<div class="line"><a name="l21331"></a><span class="lineno">21331</span>&#160; </div>
<div class="line"><a name="l21332"></a><span class="lineno">21332</span>&#160; </div>
<div class="line"><a name="l21388"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8ca5dd4f18b59e7022b04fd9bf7f5176">21388</a></span>&#160; <span class="keyword">static</span> std::vector&lt;uint8_t&gt; <a class="code" href="classnlohmann_1_1basic__json.html#a8ca5dd4f18b59e7022b04fd9bf7f5176">to_bson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j)</div>
<div class="line"><a name="l21389"></a><span class="lineno">21389</span>&#160; {</div>
<div class="line"><a name="l21390"></a><span class="lineno">21390</span>&#160; std::vector&lt;uint8_t&gt; result;</div>
<div class="line"><a name="l21391"></a><span class="lineno">21391</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a8ca5dd4f18b59e7022b04fd9bf7f5176">to_bson</a>(j, result);</div>
<div class="line"><a name="l21392"></a><span class="lineno">21392</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l21393"></a><span class="lineno">21393</span>&#160; }</div>
<div class="line"><a name="l21394"></a><span class="lineno">21394</span>&#160; </div>
<div class="line"><a name="l21403"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a51df13f73a970da95c3dcb3d47b0c2c4">21403</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a51df13f73a970da95c3dcb3d47b0c2c4">to_bson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter&lt;uint8_t&gt;</a> o)</div>
<div class="line"><a name="l21404"></a><span class="lineno">21404</span>&#160; {</div>
<div class="line"><a name="l21405"></a><span class="lineno">21405</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer&lt;uint8_t&gt;</a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a9ffc566db5219b473762462234b47db9">write_bson</a>(j);</div>
<div class="line"><a name="l21406"></a><span class="lineno">21406</span>&#160; }</div>
<div class="line"><a name="l21407"></a><span class="lineno">21407</span>&#160; </div>
<div class="line"><a name="l21411"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aeb988f5b2148875ed1c9cb32bec156c6">21411</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#aeb988f5b2148875ed1c9cb32bec156c6">to_bson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter&lt;char&gt;</a> o)</div>
<div class="line"><a name="l21412"></a><span class="lineno">21412</span>&#160; {</div>
<div class="line"><a name="l21413"></a><span class="lineno">21413</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer&lt;char&gt;</a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a9ffc566db5219b473762462234b47db9">write_bson</a>(j);</div>
<div class="line"><a name="l21414"></a><span class="lineno">21414</span>&#160; }</div>
<div class="line"><a name="l21415"></a><span class="lineno">21415</span>&#160; </div>
<div class="line"><a name="l21416"></a><span class="lineno">21416</span>&#160; </div>
<div class="line"><a name="l21516"></a><span class="lineno">21516</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l21517"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1d568ba1bd6978d80db42aa76626e2cf">21517</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1d568ba1bd6978d80db42aa76626e2cf">from_cbor</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&amp;&amp; i,</div>
<div class="line"><a name="l21518"></a><span class="lineno">21518</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
<div class="line"><a name="l21519"></a><span class="lineno">21519</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
<div class="line"><a name="l21520"></a><span class="lineno">21520</span>&#160; {</div>
<div class="line"><a name="l21521"></a><span class="lineno">21521</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l21522"></a><span class="lineno">21522</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser&lt;basic_json&gt;</a> sdp(result, allow_exceptions);</div>
<div class="line"><a name="l21523"></a><span class="lineno">21523</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(i)).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::cbor, &amp;sdp, strict);</div>
<div class="line"><a name="l21524"></a><span class="lineno">21524</span>&#160; <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
<div class="line"><a name="l21525"></a><span class="lineno">21525</span>&#160; }</div>
<div class="line"><a name="l21526"></a><span class="lineno">21526</span>&#160; </div>
<div class="line"><a name="l21530"></a><span class="lineno">21530</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2,</div>
<div class="line"><a name="l21531"></a><span class="lineno">21531</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t&lt;std::is_constructible&lt;detail::input_adapter, A1, A2&gt;::value</a>, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l21532"></a><span class="lineno">21532</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l21533"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a513d6fb63a0ea53ce6c28c05ce0f26e6">21533</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a513d6fb63a0ea53ce6c28c05ce0f26e6">from_cbor</a>(A1 &amp;&amp; a1, A2 &amp;&amp; a2,</div>
<div class="line"><a name="l21534"></a><span class="lineno">21534</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
<div class="line"><a name="l21535"></a><span class="lineno">21535</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
<div class="line"><a name="l21536"></a><span class="lineno">21536</span>&#160; {</div>
<div class="line"><a name="l21537"></a><span class="lineno">21537</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l21538"></a><span class="lineno">21538</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser&lt;basic_json&gt;</a> sdp(result, allow_exceptions);</div>
<div class="line"><a name="l21539"></a><span class="lineno">21539</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(std::forward&lt;A1&gt;(a1), std::forward&lt;A2&gt;(a2))).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::cbor, &amp;sdp, strict);</div>
<div class="line"><a name="l21540"></a><span class="lineno">21540</span>&#160; <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
<div class="line"><a name="l21541"></a><span class="lineno">21541</span>&#160; }</div>
<div class="line"><a name="l21542"></a><span class="lineno">21542</span>&#160; </div>
<div class="line"><a name="l21625"></a><span class="lineno">21625</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l21626"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a11458b7982adba51bc634f2f8c961e9b">21626</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a11458b7982adba51bc634f2f8c961e9b">from_msgpack</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&amp;&amp; i,</div>
<div class="line"><a name="l21627"></a><span class="lineno">21627</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
<div class="line"><a name="l21628"></a><span class="lineno">21628</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
<div class="line"><a name="l21629"></a><span class="lineno">21629</span>&#160; {</div>
<div class="line"><a name="l21630"></a><span class="lineno">21630</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l21631"></a><span class="lineno">21631</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser&lt;basic_json&gt;</a> sdp(result, allow_exceptions);</div>
<div class="line"><a name="l21632"></a><span class="lineno">21632</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(i)).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::msgpack, &amp;sdp, strict);</div>
<div class="line"><a name="l21633"></a><span class="lineno">21633</span>&#160; <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
<div class="line"><a name="l21634"></a><span class="lineno">21634</span>&#160; }</div>
<div class="line"><a name="l21635"></a><span class="lineno">21635</span>&#160; </div>
<div class="line"><a name="l21639"></a><span class="lineno">21639</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2,</div>
<div class="line"><a name="l21640"></a><span class="lineno">21640</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t&lt;std::is_constructible&lt;detail::input_adapter, A1, A2&gt;::value</a>, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l21641"></a><span class="lineno">21641</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l21642"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a022b65246f82c87526940248dc9df6f5">21642</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a022b65246f82c87526940248dc9df6f5">from_msgpack</a>(A1 &amp;&amp; a1, A2 &amp;&amp; a2,</div>
<div class="line"><a name="l21643"></a><span class="lineno">21643</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
<div class="line"><a name="l21644"></a><span class="lineno">21644</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
<div class="line"><a name="l21645"></a><span class="lineno">21645</span>&#160; {</div>
<div class="line"><a name="l21646"></a><span class="lineno">21646</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l21647"></a><span class="lineno">21647</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser&lt;basic_json&gt;</a> sdp(result, allow_exceptions);</div>
<div class="line"><a name="l21648"></a><span class="lineno">21648</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(std::forward&lt;A1&gt;(a1), std::forward&lt;A2&gt;(a2))).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::msgpack, &amp;sdp, strict);</div>
<div class="line"><a name="l21649"></a><span class="lineno">21649</span>&#160; <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
<div class="line"><a name="l21650"></a><span class="lineno">21650</span>&#160; }</div>
<div class="line"><a name="l21651"></a><span class="lineno">21651</span>&#160; </div>
<div class="line"><a name="l21713"></a><span class="lineno">21713</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l21714"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1ed52b463d2ef14c85ed076467168c72">21714</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1ed52b463d2ef14c85ed076467168c72">from_ubjson</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&amp;&amp; i,</div>
<div class="line"><a name="l21715"></a><span class="lineno">21715</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
<div class="line"><a name="l21716"></a><span class="lineno">21716</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
<div class="line"><a name="l21717"></a><span class="lineno">21717</span>&#160; {</div>
<div class="line"><a name="l21718"></a><span class="lineno">21718</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l21719"></a><span class="lineno">21719</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser&lt;basic_json&gt;</a> sdp(result, allow_exceptions);</div>
<div class="line"><a name="l21720"></a><span class="lineno">21720</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(i)).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::ubjson, &amp;sdp, strict);</div>
<div class="line"><a name="l21721"></a><span class="lineno">21721</span>&#160; <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
<div class="line"><a name="l21722"></a><span class="lineno">21722</span>&#160; }</div>
<div class="line"><a name="l21723"></a><span class="lineno">21723</span>&#160; </div>
<div class="line"><a name="l21727"></a><span class="lineno">21727</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2,</div>
<div class="line"><a name="l21728"></a><span class="lineno">21728</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t&lt;std::is_constructible&lt;detail::input_adapter, A1, A2&gt;::value</a>, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l21729"></a><span class="lineno">21729</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l21730"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a46afafed69ed4c8ae797afb8445fd42f">21730</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a46afafed69ed4c8ae797afb8445fd42f">from_ubjson</a>(A1 &amp;&amp; a1, A2 &amp;&amp; a2,</div>
<div class="line"><a name="l21731"></a><span class="lineno">21731</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
<div class="line"><a name="l21732"></a><span class="lineno">21732</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
<div class="line"><a name="l21733"></a><span class="lineno">21733</span>&#160; {</div>
<div class="line"><a name="l21734"></a><span class="lineno">21734</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l21735"></a><span class="lineno">21735</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser&lt;basic_json&gt;</a> sdp(result, allow_exceptions);</div>
<div class="line"><a name="l21736"></a><span class="lineno">21736</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(std::forward&lt;A1&gt;(a1), std::forward&lt;A2&gt;(a2))).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::ubjson, &amp;sdp, strict);</div>
<div class="line"><a name="l21737"></a><span class="lineno">21737</span>&#160; <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
<div class="line"><a name="l21738"></a><span class="lineno">21738</span>&#160; }</div>
<div class="line"><a name="l21739"></a><span class="lineno">21739</span>&#160; </div>
<div class="line"><a name="l21800"></a><span class="lineno">21800</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l21801"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a0524486cd0b36a47448df882ec0d5e7b">21801</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a0524486cd0b36a47448df882ec0d5e7b">from_bson</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&amp;&amp; i,</div>
<div class="line"><a name="l21802"></a><span class="lineno">21802</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
<div class="line"><a name="l21803"></a><span class="lineno">21803</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
<div class="line"><a name="l21804"></a><span class="lineno">21804</span>&#160; {</div>
<div class="line"><a name="l21805"></a><span class="lineno">21805</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l21806"></a><span class="lineno">21806</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser&lt;basic_json&gt;</a> sdp(result, allow_exceptions);</div>
<div class="line"><a name="l21807"></a><span class="lineno">21807</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(i)).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::bson, &amp;sdp, strict);</div>
<div class="line"><a name="l21808"></a><span class="lineno">21808</span>&#160; <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
<div class="line"><a name="l21809"></a><span class="lineno">21809</span>&#160; }</div>
<div class="line"><a name="l21810"></a><span class="lineno">21810</span>&#160; </div>
<div class="line"><a name="l21814"></a><span class="lineno">21814</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2,</div>
<div class="line"><a name="l21815"></a><span class="lineno">21815</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t&lt;std::is_constructible&lt;detail::input_adapter, A1, A2&gt;::value</a>, <span class="keywordtype">int</span>&gt; = 0&gt;</div>
<div class="line"><a name="l21816"></a><span class="lineno">21816</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l21817"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a000cef9f49c8f04319cf98150361d13d">21817</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a000cef9f49c8f04319cf98150361d13d">from_bson</a>(A1 &amp;&amp; a1, A2 &amp;&amp; a2,</div>
<div class="line"><a name="l21818"></a><span class="lineno">21818</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
<div class="line"><a name="l21819"></a><span class="lineno">21819</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
<div class="line"><a name="l21820"></a><span class="lineno">21820</span>&#160; {</div>
<div class="line"><a name="l21821"></a><span class="lineno">21821</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
<div class="line"><a name="l21822"></a><span class="lineno">21822</span>&#160; <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser&lt;basic_json&gt;</a> sdp(result, allow_exceptions);</div>
<div class="line"><a name="l21823"></a><span class="lineno">21823</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(std::forward&lt;A1&gt;(a1), std::forward&lt;A2&gt;(a2))).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::bson, &amp;sdp, strict);</div>
<div class="line"><a name="l21824"></a><span class="lineno">21824</span>&#160; <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
<div class="line"><a name="l21825"></a><span class="lineno">21825</span>&#160; }</div>
<div class="line"><a name="l21826"></a><span class="lineno">21826</span>&#160; </div>
<div class="line"><a name="l21827"></a><span class="lineno">21827</span>&#160; </div>
<div class="line"><a name="l21828"></a><span class="lineno">21828</span>&#160; </div>
<div class="line"><a name="l21830"></a><span class="lineno">21830</span>&#160; </div>
<div class="line"><a name="l21832"></a><span class="lineno">21832</span>&#160; <span class="comment">// JSON Pointer support //</span></div>
<div class="line"><a name="l21834"></a><span class="lineno">21834</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l21837"></a><span class="lineno">21837</span>&#160; </div>
<div class="line"><a name="l21871"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac6946dffeb3be5aa173645f0467a44b3">21871</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#ac6946dffeb3be5aa173645f0467a44b3">operator[]</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; ptr)</div>
<div class="line"><a name="l21872"></a><span class="lineno">21872</span>&#160; {</div>
<div class="line"><a name="l21873"></a><span class="lineno">21873</span>&#160; <span class="keywordflow">return</span> ptr.get_unchecked(<span class="keyword">this</span>);</div>
<div class="line"><a name="l21874"></a><span class="lineno">21874</span>&#160; }</div>
<div class="line"><a name="l21875"></a><span class="lineno">21875</span>&#160; </div>
<div class="line"><a name="l21899"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9d55e3e63b05e03a2b70cea3761f84cb">21899</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a9d55e3e63b05e03a2b70cea3761f84cb">operator[]</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; ptr)<span class="keyword"> const</span></div>
<div class="line"><a name="l21900"></a><span class="lineno">21900</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l21901"></a><span class="lineno">21901</span>&#160; <span class="keywordflow">return</span> ptr.get_unchecked(<span class="keyword">this</span>);</div>
<div class="line"><a name="l21902"></a><span class="lineno">21902</span>&#160; }</div>
<div class="line"><a name="l21903"></a><span class="lineno">21903</span>&#160; </div>
<div class="line"><a name="l21942"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8ab61397c10f18b305520da7073b2b45">21942</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a8ab61397c10f18b305520da7073b2b45">at</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; ptr)</div>
<div class="line"><a name="l21943"></a><span class="lineno">21943</span>&#160; {</div>
<div class="line"><a name="l21944"></a><span class="lineno">21944</span>&#160; <span class="keywordflow">return</span> ptr.get_checked(<span class="keyword">this</span>);</div>
<div class="line"><a name="l21945"></a><span class="lineno">21945</span>&#160; }</div>
<div class="line"><a name="l21946"></a><span class="lineno">21946</span>&#160; </div>
<div class="line"><a name="l21985"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7479d686148c26e252781bb32aa5d5c9">21985</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a7479d686148c26e252781bb32aa5d5c9">at</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>&amp; ptr)<span class="keyword"> const</span></div>
<div class="line"><a name="l21986"></a><span class="lineno">21986</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l21987"></a><span class="lineno">21987</span>&#160; <span class="keywordflow">return</span> ptr.get_checked(<span class="keyword">this</span>);</div>
<div class="line"><a name="l21988"></a><span class="lineno">21988</span>&#160; }</div>
<div class="line"><a name="l21989"></a><span class="lineno">21989</span>&#160; </div>
<div class="line"><a name="l22012"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab838f000d76662917ffd6ec529569e03">22012</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#ab838f000d76662917ffd6ec529569e03">flatten</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l22013"></a><span class="lineno">22013</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l22014"></a><span class="lineno">22014</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>);</div>
<div class="line"><a name="l22015"></a><span class="lineno">22015</span>&#160; json_pointer::flatten(<span class="stringliteral">&quot;&quot;</span>, *<span class="keyword">this</span>, result);</div>
<div class="line"><a name="l22016"></a><span class="lineno">22016</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l22017"></a><span class="lineno">22017</span>&#160; }</div>
<div class="line"><a name="l22018"></a><span class="lineno">22018</span>&#160; </div>
<div class="line"><a name="l22049"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a74fa3ab2003f2f6f2b69deaafed9126d">22049</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a74fa3ab2003f2f6f2b69deaafed9126d">unflatten</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l22050"></a><span class="lineno">22050</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l22051"></a><span class="lineno">22051</span>&#160; <span class="keywordflow">return</span> json_pointer::unflatten(*<span class="keyword">this</span>);</div>
<div class="line"><a name="l22052"></a><span class="lineno">22052</span>&#160; }</div>
<div class="line"><a name="l22053"></a><span class="lineno">22053</span>&#160; </div>
<div class="line"><a name="l22055"></a><span class="lineno">22055</span>&#160; </div>
<div class="line"><a name="l22057"></a><span class="lineno">22057</span>&#160; <span class="comment">// JSON Patch functions //</span></div>
<div class="line"><a name="l22059"></a><span class="lineno">22059</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l22062"></a><span class="lineno">22062</span>&#160; </div>
<div class="line"><a name="l22110"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a81e0c41a4a9dff4df2f6973f7f8b2a83">22110</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a81e0c41a4a9dff4df2f6973f7f8b2a83">patch</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; json_patch)<span class="keyword"> const</span></div>
<div class="line"><a name="l22111"></a><span class="lineno">22111</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l22112"></a><span class="lineno">22112</span>&#160; <span class="comment">// make a working copy to apply the patch to</span></div>
<div class="line"><a name="l22113"></a><span class="lineno">22113</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result = *<span class="keyword">this</span>;</div>
<div class="line"><a name="l22114"></a><span class="lineno">22114</span>&#160; </div>
<div class="line"><a name="l22115"></a><span class="lineno">22115</span>&#160; <span class="comment">// the valid JSON Patch operations</span></div>
<div class="line"><a name="l22116"></a><span class="lineno">22116</span>&#160; <span class="keyword">enum class</span> patch_operations {add, remove, replace, move, copy, test, invalid};</div>
<div class="line"><a name="l22117"></a><span class="lineno">22117</span>&#160; </div>
<div class="line"><a name="l22118"></a><span class="lineno">22118</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> get_op = [](<span class="keyword">const</span> std::string &amp; op)</div>
<div class="line"><a name="l22119"></a><span class="lineno">22119</span>&#160; {</div>
<div class="line"><a name="l22120"></a><span class="lineno">22120</span>&#160; <span class="keywordflow">if</span> (op == <span class="stringliteral">&quot;add&quot;</span>)</div>
<div class="line"><a name="l22121"></a><span class="lineno">22121</span>&#160; {</div>
<div class="line"><a name="l22122"></a><span class="lineno">22122</span>&#160; <span class="keywordflow">return</span> patch_operations::add;</div>
<div class="line"><a name="l22123"></a><span class="lineno">22123</span>&#160; }</div>
<div class="line"><a name="l22124"></a><span class="lineno">22124</span>&#160; <span class="keywordflow">if</span> (op == <span class="stringliteral">&quot;remove&quot;</span>)</div>
<div class="line"><a name="l22125"></a><span class="lineno">22125</span>&#160; {</div>
<div class="line"><a name="l22126"></a><span class="lineno">22126</span>&#160; <span class="keywordflow">return</span> patch_operations::remove;</div>
<div class="line"><a name="l22127"></a><span class="lineno">22127</span>&#160; }</div>
<div class="line"><a name="l22128"></a><span class="lineno">22128</span>&#160; <span class="keywordflow">if</span> (op == <span class="stringliteral">&quot;replace&quot;</span>)</div>
<div class="line"><a name="l22129"></a><span class="lineno">22129</span>&#160; {</div>
<div class="line"><a name="l22130"></a><span class="lineno">22130</span>&#160; <span class="keywordflow">return</span> patch_operations::replace;</div>
<div class="line"><a name="l22131"></a><span class="lineno">22131</span>&#160; }</div>
<div class="line"><a name="l22132"></a><span class="lineno">22132</span>&#160; <span class="keywordflow">if</span> (op == <span class="stringliteral">&quot;move&quot;</span>)</div>
<div class="line"><a name="l22133"></a><span class="lineno">22133</span>&#160; {</div>
<div class="line"><a name="l22134"></a><span class="lineno">22134</span>&#160; <span class="keywordflow">return</span> patch_operations::move;</div>
<div class="line"><a name="l22135"></a><span class="lineno">22135</span>&#160; }</div>
<div class="line"><a name="l22136"></a><span class="lineno">22136</span>&#160; <span class="keywordflow">if</span> (op == <span class="stringliteral">&quot;copy&quot;</span>)</div>
<div class="line"><a name="l22137"></a><span class="lineno">22137</span>&#160; {</div>
<div class="line"><a name="l22138"></a><span class="lineno">22138</span>&#160; <span class="keywordflow">return</span> patch_operations::copy;</div>
<div class="line"><a name="l22139"></a><span class="lineno">22139</span>&#160; }</div>
<div class="line"><a name="l22140"></a><span class="lineno">22140</span>&#160; <span class="keywordflow">if</span> (op == <span class="stringliteral">&quot;test&quot;</span>)</div>
<div class="line"><a name="l22141"></a><span class="lineno">22141</span>&#160; {</div>
<div class="line"><a name="l22142"></a><span class="lineno">22142</span>&#160; <span class="keywordflow">return</span> patch_operations::test;</div>
<div class="line"><a name="l22143"></a><span class="lineno">22143</span>&#160; }</div>
<div class="line"><a name="l22144"></a><span class="lineno">22144</span>&#160; </div>
<div class="line"><a name="l22145"></a><span class="lineno">22145</span>&#160; <span class="keywordflow">return</span> patch_operations::invalid;</div>
<div class="line"><a name="l22146"></a><span class="lineno">22146</span>&#160; };</div>
<div class="line"><a name="l22147"></a><span class="lineno">22147</span>&#160; </div>
<div class="line"><a name="l22148"></a><span class="lineno">22148</span>&#160; <span class="comment">// wrapper for &quot;add&quot; operation; add value at ptr</span></div>
<div class="line"><a name="l22149"></a><span class="lineno">22149</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> operation_add = [&amp;result](<a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> &amp; ptr, <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> val)</div>
<div class="line"><a name="l22150"></a><span class="lineno">22150</span>&#160; {</div>
<div class="line"><a name="l22151"></a><span class="lineno">22151</span>&#160; <span class="comment">// adding to the root of the target document means replacing it</span></div>
<div class="line"><a name="l22152"></a><span class="lineno">22152</span>&#160; <span class="keywordflow">if</span> (ptr.empty())</div>
<div class="line"><a name="l22153"></a><span class="lineno">22153</span>&#160; {</div>
<div class="line"><a name="l22154"></a><span class="lineno">22154</span>&#160; result = val;</div>
<div class="line"><a name="l22155"></a><span class="lineno">22155</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l22156"></a><span class="lineno">22156</span>&#160; }</div>
<div class="line"><a name="l22157"></a><span class="lineno">22157</span>&#160; </div>
<div class="line"><a name="l22158"></a><span class="lineno">22158</span>&#160; <span class="comment">// make sure the top element of the pointer exists</span></div>
<div class="line"><a name="l22159"></a><span class="lineno">22159</span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> top_pointer = ptr.top();</div>
<div class="line"><a name="l22160"></a><span class="lineno">22160</span>&#160; <span class="keywordflow">if</span> (top_pointer != ptr)</div>
<div class="line"><a name="l22161"></a><span class="lineno">22161</span>&#160; {</div>
<div class="line"><a name="l22162"></a><span class="lineno">22162</span>&#160; result.at(top_pointer);</div>
<div class="line"><a name="l22163"></a><span class="lineno">22163</span>&#160; }</div>
<div class="line"><a name="l22164"></a><span class="lineno">22164</span>&#160; </div>
<div class="line"><a name="l22165"></a><span class="lineno">22165</span>&#160; <span class="comment">// get reference to parent of JSON pointer ptr</span></div>
<div class="line"><a name="l22166"></a><span class="lineno">22166</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> last_path = ptr.back();</div>
<div class="line"><a name="l22167"></a><span class="lineno">22167</span>&#160; ptr.pop_back();</div>
<div class="line"><a name="l22168"></a><span class="lineno">22168</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; parent = result[ptr];</div>
<div class="line"><a name="l22169"></a><span class="lineno">22169</span>&#160; </div>
<div class="line"><a name="l22170"></a><span class="lineno">22170</span>&#160; <span class="keywordflow">switch</span> (parent.m_type)</div>
<div class="line"><a name="l22171"></a><span class="lineno">22171</span>&#160; {</div>
<div class="line"><a name="l22172"></a><span class="lineno">22172</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
<div class="line"><a name="l22173"></a><span class="lineno">22173</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l22174"></a><span class="lineno">22174</span>&#160; {</div>
<div class="line"><a name="l22175"></a><span class="lineno">22175</span>&#160; <span class="comment">// use operator[] to add value</span></div>
<div class="line"><a name="l22176"></a><span class="lineno">22176</span>&#160; parent[last_path] = val;</div>
<div class="line"><a name="l22177"></a><span class="lineno">22177</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22178"></a><span class="lineno">22178</span>&#160; }</div>
<div class="line"><a name="l22179"></a><span class="lineno">22179</span>&#160; </div>
<div class="line"><a name="l22180"></a><span class="lineno">22180</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l22181"></a><span class="lineno">22181</span>&#160; {</div>
<div class="line"><a name="l22182"></a><span class="lineno">22182</span>&#160; <span class="keywordflow">if</span> (last_path == <span class="stringliteral">&quot;-&quot;</span>)</div>
<div class="line"><a name="l22183"></a><span class="lineno">22183</span>&#160; {</div>
<div class="line"><a name="l22184"></a><span class="lineno">22184</span>&#160; <span class="comment">// special case: append to back</span></div>
<div class="line"><a name="l22185"></a><span class="lineno">22185</span>&#160; parent.push_back(val);</div>
<div class="line"><a name="l22186"></a><span class="lineno">22186</span>&#160; }</div>
<div class="line"><a name="l22187"></a><span class="lineno">22187</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l22188"></a><span class="lineno">22188</span>&#160; {</div>
<div class="line"><a name="l22189"></a><span class="lineno">22189</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> idx = json_pointer::array_index(last_path);</div>
<div class="line"><a name="l22190"></a><span class="lineno">22190</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a><span class="keyword">&gt;</span>(idx) &gt; parent.size()))</div>
<div class="line"><a name="l22191"></a><span class="lineno">22191</span>&#160; {</div>
<div class="line"><a name="l22192"></a><span class="lineno">22192</span>&#160; <span class="comment">// avoid undefined behavior</span></div>
<div class="line"><a name="l22193"></a><span class="lineno">22193</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(401, <span class="stringliteral">&quot;array index &quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(idx) + <span class="stringliteral">&quot; is out of range&quot;</span>));</div>
<div class="line"><a name="l22194"></a><span class="lineno">22194</span>&#160; }</div>
<div class="line"><a name="l22195"></a><span class="lineno">22195</span>&#160; </div>
<div class="line"><a name="l22196"></a><span class="lineno">22196</span>&#160; <span class="comment">// default case: insert add offset</span></div>
<div class="line"><a name="l22197"></a><span class="lineno">22197</span>&#160; parent.insert(parent.begin() + <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">difference_type</a><span class="keyword">&gt;</span>(idx), val);</div>
<div class="line"><a name="l22198"></a><span class="lineno">22198</span>&#160; }</div>
<div class="line"><a name="l22199"></a><span class="lineno">22199</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22200"></a><span class="lineno">22200</span>&#160; }</div>
<div class="line"><a name="l22201"></a><span class="lineno">22201</span>&#160; </div>
<div class="line"><a name="l22202"></a><span class="lineno">22202</span>&#160; <span class="comment">// if there exists a parent it cannot be primitive</span></div>
<div class="line"><a name="l22203"></a><span class="lineno">22203</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l22204"></a><span class="lineno">22204</span>&#160; assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
<div class="line"><a name="l22205"></a><span class="lineno">22205</span>&#160; }</div>
<div class="line"><a name="l22206"></a><span class="lineno">22206</span>&#160; };</div>
<div class="line"><a name="l22207"></a><span class="lineno">22207</span>&#160; </div>
<div class="line"><a name="l22208"></a><span class="lineno">22208</span>&#160; <span class="comment">// wrapper for &quot;remove&quot; operation; remove value at ptr</span></div>
<div class="line"><a name="l22209"></a><span class="lineno">22209</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> operation_remove = [&amp;result](<a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> &amp; ptr)</div>
<div class="line"><a name="l22210"></a><span class="lineno">22210</span>&#160; {</div>
<div class="line"><a name="l22211"></a><span class="lineno">22211</span>&#160; <span class="comment">// get reference to parent of JSON pointer ptr</span></div>
<div class="line"><a name="l22212"></a><span class="lineno">22212</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> last_path = ptr.back();</div>
<div class="line"><a name="l22213"></a><span class="lineno">22213</span>&#160; ptr.pop_back();</div>
<div class="line"><a name="l22214"></a><span class="lineno">22214</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; parent = result.at(ptr);</div>
<div class="line"><a name="l22215"></a><span class="lineno">22215</span>&#160; </div>
<div class="line"><a name="l22216"></a><span class="lineno">22216</span>&#160; <span class="comment">// remove child</span></div>
<div class="line"><a name="l22217"></a><span class="lineno">22217</span>&#160; <span class="keywordflow">if</span> (parent.is_object())</div>
<div class="line"><a name="l22218"></a><span class="lineno">22218</span>&#160; {</div>
<div class="line"><a name="l22219"></a><span class="lineno">22219</span>&#160; <span class="comment">// perform range check</span></div>
<div class="line"><a name="l22220"></a><span class="lineno">22220</span>&#160; <span class="keyword">auto</span> it = parent.find(last_path);</div>
<div class="line"><a name="l22221"></a><span class="lineno">22221</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(it != parent.end()))</div>
<div class="line"><a name="l22222"></a><span class="lineno">22222</span>&#160; {</div>
<div class="line"><a name="l22223"></a><span class="lineno">22223</span>&#160; parent.erase(it);</div>
<div class="line"><a name="l22224"></a><span class="lineno">22224</span>&#160; }</div>
<div class="line"><a name="l22225"></a><span class="lineno">22225</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l22226"></a><span class="lineno">22226</span>&#160; {</div>
<div class="line"><a name="l22227"></a><span class="lineno">22227</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(403, <span class="stringliteral">&quot;key &#39;&quot;</span> + last_path + <span class="stringliteral">&quot;&#39; not found&quot;</span>));</div>
<div class="line"><a name="l22228"></a><span class="lineno">22228</span>&#160; }</div>
<div class="line"><a name="l22229"></a><span class="lineno">22229</span>&#160; }</div>
<div class="line"><a name="l22230"></a><span class="lineno">22230</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (parent.is_array())</div>
<div class="line"><a name="l22231"></a><span class="lineno">22231</span>&#160; {</div>
<div class="line"><a name="l22232"></a><span class="lineno">22232</span>&#160; <span class="comment">// note erase performs range check</span></div>
<div class="line"><a name="l22233"></a><span class="lineno">22233</span>&#160; parent.erase(<span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a><span class="keyword">&gt;</span>(json_pointer::array_index(last_path)));</div>
<div class="line"><a name="l22234"></a><span class="lineno">22234</span>&#160; }</div>
<div class="line"><a name="l22235"></a><span class="lineno">22235</span>&#160; };</div>
<div class="line"><a name="l22236"></a><span class="lineno">22236</span>&#160; </div>
<div class="line"><a name="l22237"></a><span class="lineno">22237</span>&#160; <span class="comment">// type check: top level value must be an array</span></div>
<div class="line"><a name="l22238"></a><span class="lineno">22238</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not json_patch.is_array()))</div>
<div class="line"><a name="l22239"></a><span class="lineno">22239</span>&#160; {</div>
<div class="line"><a name="l22240"></a><span class="lineno">22240</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(104, 0, <span class="stringliteral">&quot;JSON patch must be an array of objects&quot;</span>));</div>
<div class="line"><a name="l22241"></a><span class="lineno">22241</span>&#160; }</div>
<div class="line"><a name="l22242"></a><span class="lineno">22242</span>&#160; </div>
<div class="line"><a name="l22243"></a><span class="lineno">22243</span>&#160; <span class="comment">// iterate and apply the operations</span></div>
<div class="line"><a name="l22244"></a><span class="lineno">22244</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; val : json_patch)</div>
<div class="line"><a name="l22245"></a><span class="lineno">22245</span>&#160; {</div>
<div class="line"><a name="l22246"></a><span class="lineno">22246</span>&#160; <span class="comment">// wrapper to get a value for an operation</span></div>
<div class="line"><a name="l22247"></a><span class="lineno">22247</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> get_value = [&amp;val](<span class="keyword">const</span> std::string &amp; op,</div>
<div class="line"><a name="l22248"></a><span class="lineno">22248</span>&#160; <span class="keyword">const</span> std::string &amp; member,</div>
<div class="line"><a name="l22249"></a><span class="lineno">22249</span>&#160; <span class="keywordtype">bool</span> string_type) -&gt; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> &amp;</div>
<div class="line"><a name="l22250"></a><span class="lineno">22250</span>&#160; {</div>
<div class="line"><a name="l22251"></a><span class="lineno">22251</span>&#160; <span class="comment">// find value</span></div>
<div class="line"><a name="l22252"></a><span class="lineno">22252</span>&#160; <span class="keyword">auto</span> it = val.m_value.object-&gt;find(member);</div>
<div class="line"><a name="l22253"></a><span class="lineno">22253</span>&#160; </div>
<div class="line"><a name="l22254"></a><span class="lineno">22254</span>&#160; <span class="comment">// context-sensitive error message</span></div>
<div class="line"><a name="l22255"></a><span class="lineno">22255</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> error_msg = (op == <span class="stringliteral">&quot;op&quot;</span>) ? <span class="stringliteral">&quot;operation&quot;</span> : <span class="stringliteral">&quot;operation &#39;&quot;</span> + op + <span class="stringliteral">&quot;&#39;&quot;</span>;</div>
<div class="line"><a name="l22256"></a><span class="lineno">22256</span>&#160; </div>
<div class="line"><a name="l22257"></a><span class="lineno">22257</span>&#160; <span class="comment">// check if desired value is present</span></div>
<div class="line"><a name="l22258"></a><span class="lineno">22258</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(it == val.m_value.object-&gt;end()))</div>
<div class="line"><a name="l22259"></a><span class="lineno">22259</span>&#160; {</div>
<div class="line"><a name="l22260"></a><span class="lineno">22260</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(105, 0, error_msg + <span class="stringliteral">&quot; must have member &#39;&quot;</span> + member + <span class="stringliteral">&quot;&#39;&quot;</span>));</div>
<div class="line"><a name="l22261"></a><span class="lineno">22261</span>&#160; }</div>
<div class="line"><a name="l22262"></a><span class="lineno">22262</span>&#160; </div>
<div class="line"><a name="l22263"></a><span class="lineno">22263</span>&#160; <span class="comment">// check if result is of type string</span></div>
<div class="line"><a name="l22264"></a><span class="lineno">22264</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(string_type and not it-&gt;second.is_string()))</div>
<div class="line"><a name="l22265"></a><span class="lineno">22265</span>&#160; {</div>
<div class="line"><a name="l22266"></a><span class="lineno">22266</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(105, 0, error_msg + <span class="stringliteral">&quot; must have string member &#39;&quot;</span> + member + <span class="stringliteral">&quot;&#39;&quot;</span>));</div>
<div class="line"><a name="l22267"></a><span class="lineno">22267</span>&#160; }</div>
<div class="line"><a name="l22268"></a><span class="lineno">22268</span>&#160; </div>
<div class="line"><a name="l22269"></a><span class="lineno">22269</span>&#160; <span class="comment">// no error: return value</span></div>
<div class="line"><a name="l22270"></a><span class="lineno">22270</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
<div class="line"><a name="l22271"></a><span class="lineno">22271</span>&#160; };</div>
<div class="line"><a name="l22272"></a><span class="lineno">22272</span>&#160; </div>
<div class="line"><a name="l22273"></a><span class="lineno">22273</span>&#160; <span class="comment">// type check: every element of the array must be an object</span></div>
<div class="line"><a name="l22274"></a><span class="lineno">22274</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not val.is_object()))</div>
<div class="line"><a name="l22275"></a><span class="lineno">22275</span>&#160; {</div>
<div class="line"><a name="l22276"></a><span class="lineno">22276</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(104, 0, <span class="stringliteral">&quot;JSON patch must be an array of objects&quot;</span>));</div>
<div class="line"><a name="l22277"></a><span class="lineno">22277</span>&#160; }</div>
<div class="line"><a name="l22278"></a><span class="lineno">22278</span>&#160; </div>
<div class="line"><a name="l22279"></a><span class="lineno">22279</span>&#160; <span class="comment">// collect mandatory members</span></div>
<div class="line"><a name="l22280"></a><span class="lineno">22280</span>&#160; <span class="keyword">const</span> std::string op = get_value(<span class="stringliteral">&quot;op&quot;</span>, <span class="stringliteral">&quot;op&quot;</span>, <span class="keyword">true</span>);</div>
<div class="line"><a name="l22281"></a><span class="lineno">22281</span>&#160; <span class="keyword">const</span> std::string path = get_value(op, <span class="stringliteral">&quot;path&quot;</span>, <span class="keyword">true</span>);</div>
<div class="line"><a name="l22282"></a><span class="lineno">22282</span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> ptr(path);</div>
<div class="line"><a name="l22283"></a><span class="lineno">22283</span>&#160; </div>
<div class="line"><a name="l22284"></a><span class="lineno">22284</span>&#160; <span class="keywordflow">switch</span> (get_op(op))</div>
<div class="line"><a name="l22285"></a><span class="lineno">22285</span>&#160; {</div>
<div class="line"><a name="l22286"></a><span class="lineno">22286</span>&#160; <span class="keywordflow">case</span> patch_operations::add:</div>
<div class="line"><a name="l22287"></a><span class="lineno">22287</span>&#160; {</div>
<div class="line"><a name="l22288"></a><span class="lineno">22288</span>&#160; operation_add(ptr, get_value(<span class="stringliteral">&quot;add&quot;</span>, <span class="stringliteral">&quot;value&quot;</span>, <span class="keyword">false</span>));</div>
<div class="line"><a name="l22289"></a><span class="lineno">22289</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22290"></a><span class="lineno">22290</span>&#160; }</div>
<div class="line"><a name="l22291"></a><span class="lineno">22291</span>&#160; </div>
<div class="line"><a name="l22292"></a><span class="lineno">22292</span>&#160; <span class="keywordflow">case</span> patch_operations::remove:</div>
<div class="line"><a name="l22293"></a><span class="lineno">22293</span>&#160; {</div>
<div class="line"><a name="l22294"></a><span class="lineno">22294</span>&#160; operation_remove(ptr);</div>
<div class="line"><a name="l22295"></a><span class="lineno">22295</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22296"></a><span class="lineno">22296</span>&#160; }</div>
<div class="line"><a name="l22297"></a><span class="lineno">22297</span>&#160; </div>
<div class="line"><a name="l22298"></a><span class="lineno">22298</span>&#160; <span class="keywordflow">case</span> patch_operations::replace:</div>
<div class="line"><a name="l22299"></a><span class="lineno">22299</span>&#160; {</div>
<div class="line"><a name="l22300"></a><span class="lineno">22300</span>&#160; <span class="comment">// the &quot;path&quot; location must exist - use at()</span></div>
<div class="line"><a name="l22301"></a><span class="lineno">22301</span>&#160; result.at(ptr) = get_value(<span class="stringliteral">&quot;replace&quot;</span>, <span class="stringliteral">&quot;value&quot;</span>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l22302"></a><span class="lineno">22302</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22303"></a><span class="lineno">22303</span>&#160; }</div>
<div class="line"><a name="l22304"></a><span class="lineno">22304</span>&#160; </div>
<div class="line"><a name="l22305"></a><span class="lineno">22305</span>&#160; <span class="keywordflow">case</span> patch_operations::move:</div>
<div class="line"><a name="l22306"></a><span class="lineno">22306</span>&#160; {</div>
<div class="line"><a name="l22307"></a><span class="lineno">22307</span>&#160; <span class="keyword">const</span> std::string from_path = get_value(<span class="stringliteral">&quot;move&quot;</span>, <span class="stringliteral">&quot;from&quot;</span>, <span class="keyword">true</span>);</div>
<div class="line"><a name="l22308"></a><span class="lineno">22308</span>&#160; <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> from_ptr(from_path);</div>
<div class="line"><a name="l22309"></a><span class="lineno">22309</span>&#160; </div>
<div class="line"><a name="l22310"></a><span class="lineno">22310</span>&#160; <span class="comment">// the &quot;from&quot; location must exist - use at()</span></div>
<div class="line"><a name="l22311"></a><span class="lineno">22311</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> v = result.at(from_ptr);</div>
<div class="line"><a name="l22312"></a><span class="lineno">22312</span>&#160; </div>
<div class="line"><a name="l22313"></a><span class="lineno">22313</span>&#160; <span class="comment">// The move operation is functionally identical to a</span></div>
<div class="line"><a name="l22314"></a><span class="lineno">22314</span>&#160; <span class="comment">// &quot;remove&quot; operation on the &quot;from&quot; location, followed</span></div>
<div class="line"><a name="l22315"></a><span class="lineno">22315</span>&#160; <span class="comment">// immediately by an &quot;add&quot; operation at the target</span></div>
<div class="line"><a name="l22316"></a><span class="lineno">22316</span>&#160; <span class="comment">// location with the value that was just removed.</span></div>
<div class="line"><a name="l22317"></a><span class="lineno">22317</span>&#160; operation_remove(from_ptr);</div>
<div class="line"><a name="l22318"></a><span class="lineno">22318</span>&#160; operation_add(ptr, v);</div>
<div class="line"><a name="l22319"></a><span class="lineno">22319</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22320"></a><span class="lineno">22320</span>&#160; }</div>
<div class="line"><a name="l22321"></a><span class="lineno">22321</span>&#160; </div>
<div class="line"><a name="l22322"></a><span class="lineno">22322</span>&#160; <span class="keywordflow">case</span> patch_operations::copy:</div>
<div class="line"><a name="l22323"></a><span class="lineno">22323</span>&#160; {</div>
<div class="line"><a name="l22324"></a><span class="lineno">22324</span>&#160; <span class="keyword">const</span> std::string from_path = get_value(<span class="stringliteral">&quot;copy&quot;</span>, <span class="stringliteral">&quot;from&quot;</span>, <span class="keyword">true</span>);</div>
<div class="line"><a name="l22325"></a><span class="lineno">22325</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> from_ptr(from_path);</div>
<div class="line"><a name="l22326"></a><span class="lineno">22326</span>&#160; </div>
<div class="line"><a name="l22327"></a><span class="lineno">22327</span>&#160; <span class="comment">// the &quot;from&quot; location must exist - use at()</span></div>
<div class="line"><a name="l22328"></a><span class="lineno">22328</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> v = result.at(from_ptr);</div>
<div class="line"><a name="l22329"></a><span class="lineno">22329</span>&#160; </div>
<div class="line"><a name="l22330"></a><span class="lineno">22330</span>&#160; <span class="comment">// The copy is functionally identical to an &quot;add&quot;</span></div>
<div class="line"><a name="l22331"></a><span class="lineno">22331</span>&#160; <span class="comment">// operation at the target location using the value</span></div>
<div class="line"><a name="l22332"></a><span class="lineno">22332</span>&#160; <span class="comment">// specified in the &quot;from&quot; member.</span></div>
<div class="line"><a name="l22333"></a><span class="lineno">22333</span>&#160; operation_add(ptr, v);</div>
<div class="line"><a name="l22334"></a><span class="lineno">22334</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22335"></a><span class="lineno">22335</span>&#160; }</div>
<div class="line"><a name="l22336"></a><span class="lineno">22336</span>&#160; </div>
<div class="line"><a name="l22337"></a><span class="lineno">22337</span>&#160; <span class="keywordflow">case</span> patch_operations::test:</div>
<div class="line"><a name="l22338"></a><span class="lineno">22338</span>&#160; {</div>
<div class="line"><a name="l22339"></a><span class="lineno">22339</span>&#160; <span class="keywordtype">bool</span> success = <span class="keyword">false</span>;</div>
<div class="line"><a name="l22340"></a><span class="lineno">22340</span>&#160; <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
<div class="line"><a name="l22341"></a><span class="lineno">22341</span>&#160; {</div>
<div class="line"><a name="l22342"></a><span class="lineno">22342</span>&#160; <span class="comment">// check if &quot;value&quot; matches the one at &quot;path&quot;</span></div>
<div class="line"><a name="l22343"></a><span class="lineno">22343</span>&#160; <span class="comment">// the &quot;path&quot; location must exist - use at()</span></div>
<div class="line"><a name="l22344"></a><span class="lineno">22344</span>&#160; success = (result.at(ptr) == get_value(<span class="stringliteral">&quot;test&quot;</span>, <span class="stringliteral">&quot;value&quot;</span>, <span class="keyword">false</span>));</div>
<div class="line"><a name="l22345"></a><span class="lineno">22345</span>&#160; }</div>
<div class="line"><a name="l22346"></a><span class="lineno">22346</span>&#160; <a class="code" href="json_8hpp.html#a5478b7564e65634cc69432ed3cb6490e">JSON_INTERNAL_CATCH</a> (<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a>&amp;)</div>
<div class="line"><a name="l22347"></a><span class="lineno">22347</span>&#160; {</div>
<div class="line"><a name="l22348"></a><span class="lineno">22348</span>&#160; <span class="comment">// ignore out of range errors: success remains false</span></div>
<div class="line"><a name="l22349"></a><span class="lineno">22349</span>&#160; }</div>
<div class="line"><a name="l22350"></a><span class="lineno">22350</span>&#160; </div>
<div class="line"><a name="l22351"></a><span class="lineno">22351</span>&#160; <span class="comment">// throw an exception if test fails</span></div>
<div class="line"><a name="l22352"></a><span class="lineno">22352</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not success))</div>
<div class="line"><a name="l22353"></a><span class="lineno">22353</span>&#160; {</div>
<div class="line"><a name="l22354"></a><span class="lineno">22354</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1other__error.html#a87e8ab894e8c85c0d97a0919782d3683">other_error::create</a>(501, <span class="stringliteral">&quot;unsuccessful: &quot;</span> + val.dump()));</div>
<div class="line"><a name="l22355"></a><span class="lineno">22355</span>&#160; }</div>
<div class="line"><a name="l22356"></a><span class="lineno">22356</span>&#160; </div>
<div class="line"><a name="l22357"></a><span class="lineno">22357</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22358"></a><span class="lineno">22358</span>&#160; }</div>
<div class="line"><a name="l22359"></a><span class="lineno">22359</span>&#160; </div>
<div class="line"><a name="l22360"></a><span class="lineno">22360</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l22361"></a><span class="lineno">22361</span>&#160; {</div>
<div class="line"><a name="l22362"></a><span class="lineno">22362</span>&#160; <span class="comment">// op must be &quot;add&quot;, &quot;remove&quot;, &quot;replace&quot;, &quot;move&quot;, &quot;copy&quot;, or</span></div>
<div class="line"><a name="l22363"></a><span class="lineno">22363</span>&#160; <span class="comment">// &quot;test&quot;</span></div>
<div class="line"><a name="l22364"></a><span class="lineno">22364</span>&#160; <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(105, 0, <span class="stringliteral">&quot;operation value &#39;&quot;</span> + op + <span class="stringliteral">&quot;&#39; is invalid&quot;</span>));</div>
<div class="line"><a name="l22365"></a><span class="lineno">22365</span>&#160; }</div>
<div class="line"><a name="l22366"></a><span class="lineno">22366</span>&#160; }</div>
<div class="line"><a name="l22367"></a><span class="lineno">22367</span>&#160; }</div>
<div class="line"><a name="l22368"></a><span class="lineno">22368</span>&#160; </div>
<div class="line"><a name="l22369"></a><span class="lineno">22369</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l22370"></a><span class="lineno">22370</span>&#160; }</div>
<div class="line"><a name="l22371"></a><span class="lineno">22371</span>&#160; </div>
<div class="line"><a name="l22405"></a><span class="lineno">22405</span>&#160; <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
<div class="line"><a name="l22406"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9c4f3554773649beef69461a10a3de87">22406</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a9c4f3554773649beef69461a10a3de87">diff</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; source, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; target,</div>
<div class="line"><a name="l22407"></a><span class="lineno">22407</span>&#160; <span class="keyword">const</span> std::string&amp; path = <span class="stringliteral">&quot;&quot;</span>)</div>
<div class="line"><a name="l22408"></a><span class="lineno">22408</span>&#160; {</div>
<div class="line"><a name="l22409"></a><span class="lineno">22409</span>&#160; <span class="comment">// the patch</span></div>
<div class="line"><a name="l22410"></a><span class="lineno">22410</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>);</div>
<div class="line"><a name="l22411"></a><span class="lineno">22411</span>&#160; </div>
<div class="line"><a name="l22412"></a><span class="lineno">22412</span>&#160; <span class="comment">// if the values are the same, return empty patch</span></div>
<div class="line"><a name="l22413"></a><span class="lineno">22413</span>&#160; <span class="keywordflow">if</span> (source == target)</div>
<div class="line"><a name="l22414"></a><span class="lineno">22414</span>&#160; {</div>
<div class="line"><a name="l22415"></a><span class="lineno">22415</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l22416"></a><span class="lineno">22416</span>&#160; }</div>
<div class="line"><a name="l22417"></a><span class="lineno">22417</span>&#160; </div>
<div class="line"><a name="l22418"></a><span class="lineno">22418</span>&#160; <span class="keywordflow">if</span> (source.type() != target.type())</div>
<div class="line"><a name="l22419"></a><span class="lineno">22419</span>&#160; {</div>
<div class="line"><a name="l22420"></a><span class="lineno">22420</span>&#160; <span class="comment">// different types: replace value</span></div>
<div class="line"><a name="l22421"></a><span class="lineno">22421</span>&#160; result.push_back(</div>
<div class="line"><a name="l22422"></a><span class="lineno">22422</span>&#160; {</div>
<div class="line"><a name="l22423"></a><span class="lineno">22423</span>&#160; {<span class="stringliteral">&quot;op&quot;</span>, <span class="stringliteral">&quot;replace&quot;</span>}, {<span class="stringliteral">&quot;path&quot;</span>, path}, {<span class="stringliteral">&quot;value&quot;</span>, target}</div>
<div class="line"><a name="l22424"></a><span class="lineno">22424</span>&#160; });</div>
<div class="line"><a name="l22425"></a><span class="lineno">22425</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l22426"></a><span class="lineno">22426</span>&#160; }</div>
<div class="line"><a name="l22427"></a><span class="lineno">22427</span>&#160; </div>
<div class="line"><a name="l22428"></a><span class="lineno">22428</span>&#160; <span class="keywordflow">switch</span> (source.type())</div>
<div class="line"><a name="l22429"></a><span class="lineno">22429</span>&#160; {</div>
<div class="line"><a name="l22430"></a><span class="lineno">22430</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
<div class="line"><a name="l22431"></a><span class="lineno">22431</span>&#160; {</div>
<div class="line"><a name="l22432"></a><span class="lineno">22432</span>&#160; <span class="comment">// first pass: traverse common elements</span></div>
<div class="line"><a name="l22433"></a><span class="lineno">22433</span>&#160; std::size_t i = 0;</div>
<div class="line"><a name="l22434"></a><span class="lineno">22434</span>&#160; <span class="keywordflow">while</span> (i &lt; source.size() and i &lt; target.size())</div>
<div class="line"><a name="l22435"></a><span class="lineno">22435</span>&#160; {</div>
<div class="line"><a name="l22436"></a><span class="lineno">22436</span>&#160; <span class="comment">// recursive call to compare array values at index i</span></div>
<div class="line"><a name="l22437"></a><span class="lineno">22437</span>&#160; <span class="keyword">auto</span> temp_diff = <a class="code" href="classnlohmann_1_1basic__json.html#a9c4f3554773649beef69461a10a3de87">diff</a>(source[i], target[i], path + <span class="stringliteral">&quot;/&quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(i));</div>
<div class="line"><a name="l22438"></a><span class="lineno">22438</span>&#160; result.insert(result.end(), temp_diff.begin(), temp_diff.end());</div>
<div class="line"><a name="l22439"></a><span class="lineno">22439</span>&#160; ++i;</div>
<div class="line"><a name="l22440"></a><span class="lineno">22440</span>&#160; }</div>
<div class="line"><a name="l22441"></a><span class="lineno">22441</span>&#160; </div>
<div class="line"><a name="l22442"></a><span class="lineno">22442</span>&#160; <span class="comment">// i now reached the end of at least one array</span></div>
<div class="line"><a name="l22443"></a><span class="lineno">22443</span>&#160; <span class="comment">// in a second pass, traverse the remaining elements</span></div>
<div class="line"><a name="l22444"></a><span class="lineno">22444</span>&#160; </div>
<div class="line"><a name="l22445"></a><span class="lineno">22445</span>&#160; <span class="comment">// remove my remaining elements</span></div>
<div class="line"><a name="l22446"></a><span class="lineno">22446</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> end_index = <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">difference_type</a><span class="keyword">&gt;</span>(result.size());</div>
<div class="line"><a name="l22447"></a><span class="lineno">22447</span>&#160; <span class="keywordflow">while</span> (i &lt; source.size())</div>
<div class="line"><a name="l22448"></a><span class="lineno">22448</span>&#160; {</div>
<div class="line"><a name="l22449"></a><span class="lineno">22449</span>&#160; <span class="comment">// add operations in reverse order to avoid invalid</span></div>
<div class="line"><a name="l22450"></a><span class="lineno">22450</span>&#160; <span class="comment">// indices</span></div>
<div class="line"><a name="l22451"></a><span class="lineno">22451</span>&#160; result.insert(result.begin() + end_index, <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>(</div>
<div class="line"><a name="l22452"></a><span class="lineno">22452</span>&#160; {</div>
<div class="line"><a name="l22453"></a><span class="lineno">22453</span>&#160; {<span class="stringliteral">&quot;op&quot;</span>, <span class="stringliteral">&quot;remove&quot;</span>},</div>
<div class="line"><a name="l22454"></a><span class="lineno">22454</span>&#160; {<span class="stringliteral">&quot;path&quot;</span>, path + <span class="stringliteral">&quot;/&quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(i)}</div>
<div class="line"><a name="l22455"></a><span class="lineno">22455</span>&#160; }));</div>
<div class="line"><a name="l22456"></a><span class="lineno">22456</span>&#160; ++i;</div>
<div class="line"><a name="l22457"></a><span class="lineno">22457</span>&#160; }</div>
<div class="line"><a name="l22458"></a><span class="lineno">22458</span>&#160; </div>
<div class="line"><a name="l22459"></a><span class="lineno">22459</span>&#160; <span class="comment">// add other remaining elements</span></div>
<div class="line"><a name="l22460"></a><span class="lineno">22460</span>&#160; <span class="keywordflow">while</span> (i &lt; target.size())</div>
<div class="line"><a name="l22461"></a><span class="lineno">22461</span>&#160; {</div>
<div class="line"><a name="l22462"></a><span class="lineno">22462</span>&#160; result.push_back(</div>
<div class="line"><a name="l22463"></a><span class="lineno">22463</span>&#160; {</div>
<div class="line"><a name="l22464"></a><span class="lineno">22464</span>&#160; {<span class="stringliteral">&quot;op&quot;</span>, <span class="stringliteral">&quot;add&quot;</span>},</div>
<div class="line"><a name="l22465"></a><span class="lineno">22465</span>&#160; {<span class="stringliteral">&quot;path&quot;</span>, path + <span class="stringliteral">&quot;/&quot;</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(i)},</div>
<div class="line"><a name="l22466"></a><span class="lineno">22466</span>&#160; {<span class="stringliteral">&quot;value&quot;</span>, target[i]}</div>
<div class="line"><a name="l22467"></a><span class="lineno">22467</span>&#160; });</div>
<div class="line"><a name="l22468"></a><span class="lineno">22468</span>&#160; ++i;</div>
<div class="line"><a name="l22469"></a><span class="lineno">22469</span>&#160; }</div>
<div class="line"><a name="l22470"></a><span class="lineno">22470</span>&#160; </div>
<div class="line"><a name="l22471"></a><span class="lineno">22471</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22472"></a><span class="lineno">22472</span>&#160; }</div>
<div class="line"><a name="l22473"></a><span class="lineno">22473</span>&#160; </div>
<div class="line"><a name="l22474"></a><span class="lineno">22474</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
<div class="line"><a name="l22475"></a><span class="lineno">22475</span>&#160; {</div>
<div class="line"><a name="l22476"></a><span class="lineno">22476</span>&#160; <span class="comment">// first pass: traverse this object&#39;s elements</span></div>
<div class="line"><a name="l22477"></a><span class="lineno">22477</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = source.cbegin(); it != source.cend(); ++it)</div>
<div class="line"><a name="l22478"></a><span class="lineno">22478</span>&#160; {</div>
<div class="line"><a name="l22479"></a><span class="lineno">22479</span>&#160; <span class="comment">// escape the key name to be used in a JSON patch</span></div>
<div class="line"><a name="l22480"></a><span class="lineno">22480</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> key = json_pointer::escape(it.key());</div>
<div class="line"><a name="l22481"></a><span class="lineno">22481</span>&#160; </div>
<div class="line"><a name="l22482"></a><span class="lineno">22482</span>&#160; <span class="keywordflow">if</span> (target.find(it.key()) != target.end())</div>
<div class="line"><a name="l22483"></a><span class="lineno">22483</span>&#160; {</div>
<div class="line"><a name="l22484"></a><span class="lineno">22484</span>&#160; <span class="comment">// recursive call to compare object values at key it</span></div>
<div class="line"><a name="l22485"></a><span class="lineno">22485</span>&#160; <span class="keyword">auto</span> temp_diff = <a class="code" href="classnlohmann_1_1basic__json.html#a9c4f3554773649beef69461a10a3de87">diff</a>(it.value(), target[it.key()], path + <span class="stringliteral">&quot;/&quot;</span> + key);</div>
<div class="line"><a name="l22486"></a><span class="lineno">22486</span>&#160; result.insert(result.end(), temp_diff.begin(), temp_diff.end());</div>
<div class="line"><a name="l22487"></a><span class="lineno">22487</span>&#160; }</div>
<div class="line"><a name="l22488"></a><span class="lineno">22488</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l22489"></a><span class="lineno">22489</span>&#160; {</div>
<div class="line"><a name="l22490"></a><span class="lineno">22490</span>&#160; <span class="comment">// found a key that is not in o -&gt; remove it</span></div>
<div class="line"><a name="l22491"></a><span class="lineno">22491</span>&#160; result.push_back(<span class="keywordtype">object</span>(</div>
<div class="line"><a name="l22492"></a><span class="lineno">22492</span>&#160; {</div>
<div class="line"><a name="l22493"></a><span class="lineno">22493</span>&#160; {<span class="stringliteral">&quot;op&quot;</span>, <span class="stringliteral">&quot;remove&quot;</span>}, {<span class="stringliteral">&quot;path&quot;</span>, path + <span class="stringliteral">&quot;/&quot;</span> + key}</div>
<div class="line"><a name="l22494"></a><span class="lineno">22494</span>&#160; }));</div>
<div class="line"><a name="l22495"></a><span class="lineno">22495</span>&#160; }</div>
<div class="line"><a name="l22496"></a><span class="lineno">22496</span>&#160; }</div>
<div class="line"><a name="l22497"></a><span class="lineno">22497</span>&#160; </div>
<div class="line"><a name="l22498"></a><span class="lineno">22498</span>&#160; <span class="comment">// second pass: traverse other object&#39;s elements</span></div>
<div class="line"><a name="l22499"></a><span class="lineno">22499</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = target.cbegin(); it != target.cend(); ++it)</div>
<div class="line"><a name="l22500"></a><span class="lineno">22500</span>&#160; {</div>
<div class="line"><a name="l22501"></a><span class="lineno">22501</span>&#160; <span class="keywordflow">if</span> (source.find(it.key()) == source.end())</div>
<div class="line"><a name="l22502"></a><span class="lineno">22502</span>&#160; {</div>
<div class="line"><a name="l22503"></a><span class="lineno">22503</span>&#160; <span class="comment">// found a key that is not in this -&gt; add it</span></div>
<div class="line"><a name="l22504"></a><span class="lineno">22504</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> key = json_pointer::escape(it.key());</div>
<div class="line"><a name="l22505"></a><span class="lineno">22505</span>&#160; result.push_back(</div>
<div class="line"><a name="l22506"></a><span class="lineno">22506</span>&#160; {</div>
<div class="line"><a name="l22507"></a><span class="lineno">22507</span>&#160; {<span class="stringliteral">&quot;op&quot;</span>, <span class="stringliteral">&quot;add&quot;</span>}, {<span class="stringliteral">&quot;path&quot;</span>, path + <span class="stringliteral">&quot;/&quot;</span> + key},</div>
<div class="line"><a name="l22508"></a><span class="lineno">22508</span>&#160; {<span class="stringliteral">&quot;value&quot;</span>, it.value()}</div>
<div class="line"><a name="l22509"></a><span class="lineno">22509</span>&#160; });</div>
<div class="line"><a name="l22510"></a><span class="lineno">22510</span>&#160; }</div>
<div class="line"><a name="l22511"></a><span class="lineno">22511</span>&#160; }</div>
<div class="line"><a name="l22512"></a><span class="lineno">22512</span>&#160; </div>
<div class="line"><a name="l22513"></a><span class="lineno">22513</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22514"></a><span class="lineno">22514</span>&#160; }</div>
<div class="line"><a name="l22515"></a><span class="lineno">22515</span>&#160; </div>
<div class="line"><a name="l22516"></a><span class="lineno">22516</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l22517"></a><span class="lineno">22517</span>&#160; {</div>
<div class="line"><a name="l22518"></a><span class="lineno">22518</span>&#160; <span class="comment">// both primitive type: replace value</span></div>
<div class="line"><a name="l22519"></a><span class="lineno">22519</span>&#160; result.push_back(</div>
<div class="line"><a name="l22520"></a><span class="lineno">22520</span>&#160; {</div>
<div class="line"><a name="l22521"></a><span class="lineno">22521</span>&#160; {<span class="stringliteral">&quot;op&quot;</span>, <span class="stringliteral">&quot;replace&quot;</span>}, {<span class="stringliteral">&quot;path&quot;</span>, path}, {<span class="stringliteral">&quot;value&quot;</span>, target}</div>
<div class="line"><a name="l22522"></a><span class="lineno">22522</span>&#160; });</div>
<div class="line"><a name="l22523"></a><span class="lineno">22523</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l22524"></a><span class="lineno">22524</span>&#160; }</div>
<div class="line"><a name="l22525"></a><span class="lineno">22525</span>&#160; }</div>
<div class="line"><a name="l22526"></a><span class="lineno">22526</span>&#160; </div>
<div class="line"><a name="l22527"></a><span class="lineno">22527</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l22528"></a><span class="lineno">22528</span>&#160; }</div>
<div class="line"><a name="l22529"></a><span class="lineno">22529</span>&#160; </div>
<div class="line"><a name="l22531"></a><span class="lineno">22531</span>&#160; </div>
<div class="line"><a name="l22533"></a><span class="lineno">22533</span>&#160; <span class="comment">// JSON Merge Patch functions //</span></div>
<div class="line"><a name="l22535"></a><span class="lineno">22535</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l22538"></a><span class="lineno">22538</span>&#160; </div>
<div class="line"><a name="l22581"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7c43ed2a3004c1fa9543913f37b9fca9">22581</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a7c43ed2a3004c1fa9543913f37b9fca9">merge_patch</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&amp; apply_patch)</div>
<div class="line"><a name="l22582"></a><span class="lineno">22582</span>&#160; {</div>
<div class="line"><a name="l22583"></a><span class="lineno">22583</span>&#160; <span class="keywordflow">if</span> (apply_patch.is_object())</div>
<div class="line"><a name="l22584"></a><span class="lineno">22584</span>&#160; {</div>
<div class="line"><a name="l22585"></a><span class="lineno">22585</span>&#160; <span class="keywordflow">if</span> (not <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>())</div>
<div class="line"><a name="l22586"></a><span class="lineno">22586</span>&#160; {</div>
<div class="line"><a name="l22587"></a><span class="lineno">22587</span>&#160; *<span class="keyword">this</span> = <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>();</div>
<div class="line"><a name="l22588"></a><span class="lineno">22588</span>&#160; }</div>
<div class="line"><a name="l22589"></a><span class="lineno">22589</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = apply_patch.begin(); it != apply_patch.end(); ++it)</div>
<div class="line"><a name="l22590"></a><span class="lineno">22590</span>&#160; {</div>
<div class="line"><a name="l22591"></a><span class="lineno">22591</span>&#160; <span class="keywordflow">if</span> (it.value().is_null())</div>
<div class="line"><a name="l22592"></a><span class="lineno">22592</span>&#160; {</div>
<div class="line"><a name="l22593"></a><span class="lineno">22593</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#a068a16e76be178e83da6a192916923ed">erase</a>(it.key());</div>
<div class="line"><a name="l22594"></a><span class="lineno">22594</span>&#160; }</div>
<div class="line"><a name="l22595"></a><span class="lineno">22595</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l22596"></a><span class="lineno">22596</span>&#160; {</div>
<div class="line"><a name="l22597"></a><span class="lineno">22597</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html#ac871e3b03fb2eeca9a8de4db2bea760f">operator[]</a>(it.key()).<a class="code" href="classnlohmann_1_1basic__json.html#a7c43ed2a3004c1fa9543913f37b9fca9">merge_patch</a>(it.value());</div>
<div class="line"><a name="l22598"></a><span class="lineno">22598</span>&#160; }</div>
<div class="line"><a name="l22599"></a><span class="lineno">22599</span>&#160; }</div>
<div class="line"><a name="l22600"></a><span class="lineno">22600</span>&#160; }</div>
<div class="line"><a name="l22601"></a><span class="lineno">22601</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l22602"></a><span class="lineno">22602</span>&#160; {</div>
<div class="line"><a name="l22603"></a><span class="lineno">22603</span>&#160; *<span class="keyword">this</span> = apply_patch;</div>
<div class="line"><a name="l22604"></a><span class="lineno">22604</span>&#160; }</div>
<div class="line"><a name="l22605"></a><span class="lineno">22605</span>&#160; }</div>
<div class="line"><a name="l22606"></a><span class="lineno">22606</span>&#160; </div>
<div class="line"><a name="l22608"></a><span class="lineno">22608</span>&#160;};</div>
<div class="line"><a name="l22609"></a><span class="lineno">22609</span>&#160; </div>
<div class="line"><a name="l22619"></a><span class="lineno">22619</span>&#160;<a class="code" href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f">NLOHMANN_BASIC_JSON_TPL_DECLARATION</a></div>
<div class="line"><a name="l22620"></a><span class="lineno"><a class="line" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">22620</a></span>&#160;std::string <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">to_string</a>(<span class="keyword">const</span> <a class="code" href="json_8hpp.html#a80b7254e63f199a1f656f07ae551f632">NLOHMANN_BASIC_JSON_TPL</a>&amp; j)</div>
<div class="line"><a name="l22621"></a><span class="lineno">22621</span>&#160;{</div>
<div class="line"><a name="l22622"></a><span class="lineno">22622</span>&#160; <span class="keywordflow">return</span> j.dump();</div>
<div class="line"><a name="l22623"></a><span class="lineno">22623</span>&#160;}</div>
<div class="line"><a name="l22624"></a><span class="lineno">22624</span>&#160;} <span class="comment">// namespace nlohmann</span></div>
<div class="line"><a name="l22625"></a><span class="lineno">22625</span>&#160; </div>
<div class="line"><a name="l22627"></a><span class="lineno">22627</span>&#160;<span class="comment">// nonmember support //</span></div>
<div class="line"><a name="l22629"></a><span class="lineno">22629</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l22630"></a><span class="lineno">22630</span>&#160;<span class="comment">// specialization of std::swap, and std::hash</span></div>
<div class="line"><a name="l22631"></a><span class="lineno">22631</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div>
<div class="line"><a name="l22632"></a><span class="lineno">22632</span>&#160;{</div>
<div class="line"><a name="l22633"></a><span class="lineno">22633</span>&#160; </div>
<div class="line"><a name="l22635"></a><span class="lineno">22635</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l22636"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01nlohmann_1_1json_01_4.html">22636</a></span>&#160;<span class="keyword">struct </span>hash&lt;<a class="code" href="namespacenlohmann.html">nlohmann</a>::<a class="code" href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc">json</a>&gt;</div>
<div class="line"><a name="l22637"></a><span class="lineno">22637</span>&#160;{</div>
<div class="line"><a name="l22643"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01nlohmann_1_1json_01_4.html#aec1567d1fa47dbe5b77954dce3a55b64">22643</a></span>&#160; std::size_t <a class="code" href="structstd_1_1hash_3_01nlohmann_1_1json_01_4.html#aec1567d1fa47dbe5b77954dce3a55b64">operator()</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">nlohmann::json</a>&amp; j)<span class="keyword"> const</span></div>
<div class="line"><a name="l22644"></a><span class="lineno">22644</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l22645"></a><span class="lineno">22645</span>&#160; <span class="comment">// a naive hashing via the string representation</span></div>
<div class="line"><a name="l22646"></a><span class="lineno">22646</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; h = hash&lt;nlohmann::json::string_t&gt;();</div>
<div class="line"><a name="l22647"></a><span class="lineno">22647</span>&#160; <span class="keywordflow">return</span> h(j.<a class="code" href="classnlohmann_1_1basic__json.html#a50ec80b02d0f3f51130d4abb5d1cfdc5">dump</a>());</div>
<div class="line"><a name="l22648"></a><span class="lineno">22648</span>&#160; }</div>
<div class="line"><a name="l22649"></a><span class="lineno">22649</span>&#160;};</div>
<div class="line"><a name="l22650"></a><span class="lineno">22650</span>&#160; </div>
<div class="line"><a name="l22654"></a><span class="lineno">22654</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l22655"></a><span class="lineno"><a class="line" href="structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html">22655</a></span>&#160;<span class="keyword">struct </span>less&lt;::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">nlohmann::detail::value_t</a>&gt;</div>
<div class="line"><a name="l22656"></a><span class="lineno">22656</span>&#160;{</div>
<div class="line"><a name="l22661"></a><span class="lineno"><a class="line" href="structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html#a10d3fea50edf7b15ead8f4ceeb006000">22661</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html#a10d3fea50edf7b15ead8f4ceeb006000">operator()</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">nlohmann::detail::value_t</a> lhs,</div>
<div class="line"><a name="l22662"></a><span class="lineno">22662</span>&#160; <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">nlohmann::detail::value_t</a> rhs) <span class="keyword">const</span> noexcept</div>
<div class="line"><a name="l22663"></a><span class="lineno">22663</span>&#160; {</div>
<div class="line"><a name="l22664"></a><span class="lineno">22664</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail.html#a09169efff3bd1771fff29bd92cea19e0">nlohmann::detail::operator&lt;</a>(lhs, rhs);</div>
<div class="line"><a name="l22665"></a><span class="lineno">22665</span>&#160; }</div>
<div class="line"><a name="l22666"></a><span class="lineno">22666</span>&#160;};</div>
<div class="line"><a name="l22667"></a><span class="lineno">22667</span>&#160; </div>
<div class="line"><a name="l22673"></a><span class="lineno">22673</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
<div class="line"><a name="l22674"></a><span class="lineno"><a class="line" href="namespacestd.html#ace192546038d61d9c28ddfe0c3d732de">22674</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> swap&lt;nlohmann::json&gt;(<a class="code" href="classnlohmann_1_1basic__json.html">nlohmann::json</a>&amp; j1, <a class="code" href="classnlohmann_1_1basic__json.html">nlohmann::json</a>&amp; j2) noexcept(</div>
<div class="line"><a name="l22675"></a><span class="lineno">22675</span>&#160; is_nothrow_move_constructible&lt;nlohmann::json&gt;::value and</div>
<div class="line"><a name="l22676"></a><span class="lineno">22676</span>&#160; is_nothrow_move_assignable&lt;nlohmann::json&gt;::value</div>
<div class="line"><a name="l22677"></a><span class="lineno">22677</span>&#160;)</div>
<div class="line"><a name="l22678"></a><span class="lineno">22678</span>&#160;{</div>
<div class="line"><a name="l22679"></a><span class="lineno">22679</span>&#160; j1.swap(j2);</div>
<div class="line"><a name="l22680"></a><span class="lineno">22680</span>&#160;}</div>
<div class="line"><a name="l22681"></a><span class="lineno">22681</span>&#160; </div>
<div class="line"><a name="l22682"></a><span class="lineno">22682</span>&#160;} <span class="comment">// namespace std</span></div>
<div class="line"><a name="l22683"></a><span class="lineno">22683</span>&#160; </div>
<div class="line"><a name="l22697"></a><span class="lineno">22697</span>&#160;<a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
<div class="line"><a name="l22698"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae90d59ab420a183cd5fb8588bdc95e06">22698</a></span>&#160;inline <a class="code" href="namespacenlohmann.html">nlohmann</a>::<a class="code" href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc">json</a> operator &quot;&quot; _json(const <span class="keywordtype">char</span>* s, <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> n)</div>
<div class="line"><a name="l22699"></a><span class="lineno">22699</span>&#160;{</div>
<div class="line"><a name="l22700"></a><span class="lineno">22700</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a265a473e939184aa42655c9ccdf34e58">nlohmann::json::parse</a>(s, s + n);</div>
<div class="line"><a name="l22701"></a><span class="lineno">22701</span>&#160;}</div>
<div class="line"><a name="l22702"></a><span class="lineno">22702</span>&#160; </div>
<div class="line"><a name="l22716"></a><span class="lineno">22716</span>&#160;<a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
<div class="line"><a name="l22717"></a><span class="lineno"><a class="line" href="json_8hpp.html#a3e528a99a7882f8d0b97375bb6081d10">22717</a></span>&#160;inline <a class="code" href="namespacenlohmann.html">nlohmann</a>::<a class="code" href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc">json</a>::json_pointer operator &quot;&quot; _json_pointer(const <span class="keywordtype">char</span>* s, <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> n)</div>
<div class="line"><a name="l22718"></a><span class="lineno">22718</span>&#160;{</div>
<div class="line"><a name="l22719"></a><span class="lineno">22719</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a6886a5001f5b449ad316101a311ce536">nlohmann::json::json_pointer</a>(std::string(s, n));</div>
<div class="line"><a name="l22720"></a><span class="lineno">22720</span>&#160;}</div>
<div class="line"><a name="l22721"></a><span class="lineno">22721</span>&#160; </div>
<div class="line"><a name="l22722"></a><span class="lineno">22722</span>&#160;<span class="comment">// #include &lt;nlohmann/detail/macro_unscope.hpp&gt;</span></div>
<div class="line"><a name="l22723"></a><span class="lineno">22723</span>&#160; </div>
<div class="line"><a name="l22724"></a><span class="lineno">22724</span>&#160; </div>
<div class="line"><a name="l22725"></a><span class="lineno">22725</span>&#160;<span class="comment">// restore GCC/clang diagnostic settings</span></div>
<div class="line"><a name="l22726"></a><span class="lineno">22726</span>&#160;<span class="preprocessor">#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)</span></div>
<div class="line"><a name="l22727"></a><span class="lineno">22727</span>&#160;<span class="preprocessor"> #pragma GCC diagnostic pop</span></div>
<div class="line"><a name="l22728"></a><span class="lineno">22728</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l22729"></a><span class="lineno">22729</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
<div class="line"><a name="l22730"></a><span class="lineno">22730</span>&#160;<span class="preprocessor"> #pragma GCC diagnostic pop</span></div>
<div class="line"><a name="l22731"></a><span class="lineno">22731</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l22732"></a><span class="lineno">22732</span>&#160; </div>
<div class="line"><a name="l22733"></a><span class="lineno">22733</span>&#160;<span class="comment">// clean up</span></div>
<div class="line"><a name="l22734"></a><span class="lineno">22734</span>&#160;<span class="preprocessor">#undef JSON_INTERNAL_CATCH</span></div>
<div class="line"><a name="l22735"></a><span class="lineno">22735</span>&#160;<span class="preprocessor">#undef JSON_CATCH</span></div>
<div class="line"><a name="l22736"></a><span class="lineno">22736</span>&#160;<span class="preprocessor">#undef JSON_THROW</span></div>
<div class="line"><a name="l22737"></a><span class="lineno">22737</span>&#160;<span class="preprocessor">#undef JSON_TRY</span></div>
<div class="line"><a name="l22738"></a><span class="lineno">22738</span>&#160;<span class="preprocessor">#undef JSON_HAS_CPP_14</span></div>
<div class="line"><a name="l22739"></a><span class="lineno">22739</span>&#160;<span class="preprocessor">#undef JSON_HAS_CPP_17</span></div>
<div class="line"><a name="l22740"></a><span class="lineno">22740</span>&#160;<span class="preprocessor">#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION</span></div>
<div class="line"><a name="l22741"></a><span class="lineno">22741</span>&#160;<span class="preprocessor">#undef NLOHMANN_BASIC_JSON_TPL</span></div>
<div class="line"><a name="l22742"></a><span class="lineno">22742</span>&#160; </div>
<div class="line"><a name="l22743"></a><span class="lineno">22743</span>&#160;<span class="comment">// #include &lt;nlohmann/thirdparty/hedley/hedley_undef.hpp&gt;</span></div>
<div class="line"><a name="l22744"></a><span class="lineno">22744</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_ALWAYS_INLINE</span></div>
<div class="line"><a name="l22745"></a><span class="lineno">22745</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_ARM_VERSION</span></div>
<div class="line"><a name="l22746"></a><span class="lineno">22746</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_ARM_VERSION_CHECK</span></div>
<div class="line"><a name="l22747"></a><span class="lineno">22747</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_ARRAY_PARAM</span></div>
<div class="line"><a name="l22748"></a><span class="lineno">22748</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_ASSUME</span></div>
<div class="line"><a name="l22749"></a><span class="lineno">22749</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_BEGIN_C_DECLS</span></div>
<div class="line"><a name="l22750"></a><span class="lineno">22750</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_C_DECL</span></div>
<div class="line"><a name="l22751"></a><span class="lineno">22751</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE</span></div>
<div class="line"><a name="l22752"></a><span class="lineno">22752</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_BUILTIN</span></div>
<div class="line"><a name="l22753"></a><span class="lineno">22753</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE</span></div>
<div class="line"><a name="l22754"></a><span class="lineno">22754</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE</span></div>
<div class="line"><a name="l22755"></a><span class="lineno">22755</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_EXTENSION</span></div>
<div class="line"><a name="l22756"></a><span class="lineno">22756</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_FEATURE</span></div>
<div class="line"><a name="l22757"></a><span class="lineno">22757</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_WARNING</span></div>
<div class="line"><a name="l22758"></a><span class="lineno">22758</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_COMPCERT_VERSION</span></div>
<div class="line"><a name="l22759"></a><span class="lineno">22759</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_COMPCERT_VERSION_CHECK</span></div>
<div class="line"><a name="l22760"></a><span class="lineno">22760</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CONCAT</span></div>
<div class="line"><a name="l22761"></a><span class="lineno">22761</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CONCAT_EX</span></div>
<div class="line"><a name="l22762"></a><span class="lineno">22762</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CONST</span></div>
<div class="line"><a name="l22763"></a><span class="lineno">22763</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CONST_CAST</span></div>
<div class="line"><a name="l22764"></a><span class="lineno">22764</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CONSTEXPR</span></div>
<div class="line"><a name="l22765"></a><span class="lineno">22765</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CPP_CAST</span></div>
<div class="line"><a name="l22766"></a><span class="lineno">22766</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CRAY_VERSION</span></div>
<div class="line"><a name="l22767"></a><span class="lineno">22767</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_CRAY_VERSION_CHECK</span></div>
<div class="line"><a name="l22768"></a><span class="lineno">22768</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DEPRECATED</span></div>
<div class="line"><a name="l22769"></a><span class="lineno">22769</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DEPRECATED_FOR</span></div>
<div class="line"><a name="l22770"></a><span class="lineno">22770</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL</span></div>
<div class="line"><a name="l22771"></a><span class="lineno">22771</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_</span></div>
<div class="line"><a name="l22772"></a><span class="lineno">22772</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED</span></div>
<div class="line"><a name="l22773"></a><span class="lineno">22773</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES</span></div>
<div class="line"><a name="l22774"></a><span class="lineno">22774</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS</span></div>
<div class="line"><a name="l22775"></a><span class="lineno">22775</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
<div class="line"><a name="l22776"></a><span class="lineno">22776</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_PUSH</span></div>
<div class="line"><a name="l22777"></a><span class="lineno">22777</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DMC_VERSION</span></div>
<div class="line"><a name="l22778"></a><span class="lineno">22778</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_DMC_VERSION_CHECK</span></div>
<div class="line"><a name="l22779"></a><span class="lineno">22779</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_EMPTY_BASES</span></div>
<div class="line"><a name="l22780"></a><span class="lineno">22780</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_EMSCRIPTEN_VERSION</span></div>
<div class="line"><a name="l22781"></a><span class="lineno">22781</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK</span></div>
<div class="line"><a name="l22782"></a><span class="lineno">22782</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_END_C_DECLS</span></div>
<div class="line"><a name="l22783"></a><span class="lineno">22783</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_FALL_THROUGH</span></div>
<div class="line"><a name="l22784"></a><span class="lineno">22784</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_FLAGS</span></div>
<div class="line"><a name="l22785"></a><span class="lineno">22785</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_FLAGS_CAST</span></div>
<div class="line"><a name="l22786"></a><span class="lineno">22786</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE</span></div>
<div class="line"><a name="l22787"></a><span class="lineno">22787</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_BUILTIN</span></div>
<div class="line"><a name="l22788"></a><span class="lineno">22788</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE</span></div>
<div class="line"><a name="l22789"></a><span class="lineno">22789</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE</span></div>
<div class="line"><a name="l22790"></a><span class="lineno">22790</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_EXTENSION</span></div>
<div class="line"><a name="l22791"></a><span class="lineno">22791</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_FEATURE</span></div>
<div class="line"><a name="l22792"></a><span class="lineno">22792</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_WARNING</span></div>
<div class="line"><a name="l22793"></a><span class="lineno">22793</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK</span></div>
<div class="line"><a name="l22794"></a><span class="lineno">22794</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GCC_VERSION</span></div>
<div class="line"><a name="l22795"></a><span class="lineno">22795</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GCC_VERSION_CHECK</span></div>
<div class="line"><a name="l22796"></a><span class="lineno">22796</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE</span></div>
<div class="line"><a name="l22797"></a><span class="lineno">22797</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_BUILTIN</span></div>
<div class="line"><a name="l22798"></a><span class="lineno">22798</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE</span></div>
<div class="line"><a name="l22799"></a><span class="lineno">22799</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE</span></div>
<div class="line"><a name="l22800"></a><span class="lineno">22800</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_EXTENSION</span></div>
<div class="line"><a name="l22801"></a><span class="lineno">22801</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_FEATURE</span></div>
<div class="line"><a name="l22802"></a><span class="lineno">22802</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_WARNING</span></div>
<div class="line"><a name="l22803"></a><span class="lineno">22803</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GNUC_VERSION</span></div>
<div class="line"><a name="l22804"></a><span class="lineno">22804</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_GNUC_VERSION_CHECK</span></div>
<div class="line"><a name="l22805"></a><span class="lineno">22805</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_HAS_ATTRIBUTE</span></div>
<div class="line"><a name="l22806"></a><span class="lineno">22806</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_HAS_BUILTIN</span></div>
<div class="line"><a name="l22807"></a><span class="lineno">22807</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE</span></div>
<div class="line"><a name="l22808"></a><span class="lineno">22808</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS</span></div>
<div class="line"><a name="l22809"></a><span class="lineno">22809</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE</span></div>
<div class="line"><a name="l22810"></a><span class="lineno">22810</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_HAS_EXTENSION</span></div>
<div class="line"><a name="l22811"></a><span class="lineno">22811</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_HAS_FEATURE</span></div>
<div class="line"><a name="l22812"></a><span class="lineno">22812</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_HAS_WARNING</span></div>
<div class="line"><a name="l22813"></a><span class="lineno">22813</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_IAR_VERSION</span></div>
<div class="line"><a name="l22814"></a><span class="lineno">22814</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_IAR_VERSION_CHECK</span></div>
<div class="line"><a name="l22815"></a><span class="lineno">22815</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_IBM_VERSION</span></div>
<div class="line"><a name="l22816"></a><span class="lineno">22816</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_IBM_VERSION_CHECK</span></div>
<div class="line"><a name="l22817"></a><span class="lineno">22817</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_IMPORT</span></div>
<div class="line"><a name="l22818"></a><span class="lineno">22818</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_INLINE</span></div>
<div class="line"><a name="l22819"></a><span class="lineno">22819</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_INTEL_VERSION</span></div>
<div class="line"><a name="l22820"></a><span class="lineno">22820</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_INTEL_VERSION_CHECK</span></div>
<div class="line"><a name="l22821"></a><span class="lineno">22821</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_IS_CONSTANT</span></div>
<div class="line"><a name="l22822"></a><span class="lineno">22822</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_IS_CONSTEXPR_</span></div>
<div class="line"><a name="l22823"></a><span class="lineno">22823</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_LIKELY</span></div>
<div class="line"><a name="l22824"></a><span class="lineno">22824</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_MALLOC</span></div>
<div class="line"><a name="l22825"></a><span class="lineno">22825</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_MESSAGE</span></div>
<div class="line"><a name="l22826"></a><span class="lineno">22826</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_MSVC_VERSION</span></div>
<div class="line"><a name="l22827"></a><span class="lineno">22827</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_MSVC_VERSION_CHECK</span></div>
<div class="line"><a name="l22828"></a><span class="lineno">22828</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_NEVER_INLINE</span></div>
<div class="line"><a name="l22829"></a><span class="lineno">22829</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_NO_ESCAPE</span></div>
<div class="line"><a name="l22830"></a><span class="lineno">22830</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_NON_NULL</span></div>
<div class="line"><a name="l22831"></a><span class="lineno">22831</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_NO_RETURN</span></div>
<div class="line"><a name="l22832"></a><span class="lineno">22832</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_NO_THROW</span></div>
<div class="line"><a name="l22833"></a><span class="lineno">22833</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_NULL</span></div>
<div class="line"><a name="l22834"></a><span class="lineno">22834</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_PELLES_VERSION</span></div>
<div class="line"><a name="l22835"></a><span class="lineno">22835</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_PELLES_VERSION_CHECK</span></div>
<div class="line"><a name="l22836"></a><span class="lineno">22836</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_PGI_VERSION</span></div>
<div class="line"><a name="l22837"></a><span class="lineno">22837</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_PGI_VERSION_CHECK</span></div>
<div class="line"><a name="l22838"></a><span class="lineno">22838</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_PREDICT</span></div>
<div class="line"><a name="l22839"></a><span class="lineno">22839</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_PRINTF_FORMAT</span></div>
<div class="line"><a name="l22840"></a><span class="lineno">22840</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_PRIVATE</span></div>
<div class="line"><a name="l22841"></a><span class="lineno">22841</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_PUBLIC</span></div>
<div class="line"><a name="l22842"></a><span class="lineno">22842</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_PURE</span></div>
<div class="line"><a name="l22843"></a><span class="lineno">22843</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_REINTERPRET_CAST</span></div>
<div class="line"><a name="l22844"></a><span class="lineno">22844</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_REQUIRE</span></div>
<div class="line"><a name="l22845"></a><span class="lineno">22845</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_REQUIRE_CONSTEXPR</span></div>
<div class="line"><a name="l22846"></a><span class="lineno">22846</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_REQUIRE_MSG</span></div>
<div class="line"><a name="l22847"></a><span class="lineno">22847</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_RESTRICT</span></div>
<div class="line"><a name="l22848"></a><span class="lineno">22848</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_RETURNS_NON_NULL</span></div>
<div class="line"><a name="l22849"></a><span class="lineno">22849</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_SENTINEL</span></div>
<div class="line"><a name="l22850"></a><span class="lineno">22850</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_STATIC_ASSERT</span></div>
<div class="line"><a name="l22851"></a><span class="lineno">22851</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_STATIC_CAST</span></div>
<div class="line"><a name="l22852"></a><span class="lineno">22852</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_STRINGIFY</span></div>
<div class="line"><a name="l22853"></a><span class="lineno">22853</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_STRINGIFY_EX</span></div>
<div class="line"><a name="l22854"></a><span class="lineno">22854</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_SUNPRO_VERSION</span></div>
<div class="line"><a name="l22855"></a><span class="lineno">22855</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_SUNPRO_VERSION_CHECK</span></div>
<div class="line"><a name="l22856"></a><span class="lineno">22856</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_TINYC_VERSION</span></div>
<div class="line"><a name="l22857"></a><span class="lineno">22857</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_TINYC_VERSION_CHECK</span></div>
<div class="line"><a name="l22858"></a><span class="lineno">22858</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_TI_VERSION</span></div>
<div class="line"><a name="l22859"></a><span class="lineno">22859</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_TI_VERSION_CHECK</span></div>
<div class="line"><a name="l22860"></a><span class="lineno">22860</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_UNAVAILABLE</span></div>
<div class="line"><a name="l22861"></a><span class="lineno">22861</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_UNLIKELY</span></div>
<div class="line"><a name="l22862"></a><span class="lineno">22862</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_UNPREDICTABLE</span></div>
<div class="line"><a name="l22863"></a><span class="lineno">22863</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_UNREACHABLE</span></div>
<div class="line"><a name="l22864"></a><span class="lineno">22864</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_UNREACHABLE_RETURN</span></div>
<div class="line"><a name="l22865"></a><span class="lineno">22865</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_VERSION</span></div>
<div class="line"><a name="l22866"></a><span class="lineno">22866</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_VERSION_DECODE_MAJOR</span></div>
<div class="line"><a name="l22867"></a><span class="lineno">22867</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_VERSION_DECODE_MINOR</span></div>
<div class="line"><a name="l22868"></a><span class="lineno">22868</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_VERSION_DECODE_REVISION</span></div>
<div class="line"><a name="l22869"></a><span class="lineno">22869</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_VERSION_ENCODE</span></div>
<div class="line"><a name="l22870"></a><span class="lineno">22870</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_WARNING</span></div>
<div class="line"><a name="l22871"></a><span class="lineno">22871</span>&#160;<span class="preprocessor">#undef JSON_HEDLEY_WARN_UNUSED_RESULT</span></div>
<div class="line"><a name="l22872"></a><span class="lineno">22872</span>&#160; </div>
<div class="line"><a name="l22873"></a><span class="lineno">22873</span>&#160; </div>
<div class="line"><a name="l22874"></a><span class="lineno">22874</span>&#160; </div>
<div class="line"><a name="l22875"></a><span class="lineno">22875</span>&#160;<span class="preprocessor">#endif // INCLUDE_NLOHMANN_JSON_HPP_</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">nlohmann::detail::json_reverse_iterator</a></div><div class="ttdoc">a template for a reverse iterator class</div><div class="ttdef"><b>Definition:</b> json.hpp:9982</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a49bf3e708a9c1c88c415011735962d06"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a49bf3e708a9c1c88c415011735962d06">nlohmann::detail::iter_impl::operator-</a></div><div class="ttdeci">difference_type operator-(const iter_impl &amp;other) const</div><div class="ttdoc">return difference</div><div class="ttdef"><b>Definition:</b> json.hpp:9864</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a3c45286b0a2f15ea0a756cb87a76cf9b"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a3c45286b0a2f15ea0a756cb87a76cf9b">nlohmann::detail::int_to_string</a></div><div class="ttdeci">void int_to_string(string_type &amp;target, std::size_t value)</div><div class="ttdef"><b>Definition:</b> json.hpp:3293</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy_html_a379f86709d340c4ab1995539b8af623d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy.html#a379f86709d340c4ab1995539b8af623d">nlohmann::detail::iteration_proxy::begin</a></div><div class="ttdeci">iteration_proxy_value&lt; IteratorType &gt; begin() noexcept</div><div class="ttdoc">return iterator begin (needed for range-based for)</div><div class="ttdef"><b>Definition:</b> json.hpp:3397</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_aee01535df0b3b40137d9241029a9a203"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#aee01535df0b3b40137d9241029a9a203">nlohmann::detail::primitive_iterator_t::operator+=</a></div><div class="ttdeci">primitive_iterator_t &amp; operator+=(difference_type n) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9261</div></div>
<div class="ttc" id="astructnlohmann_1_1adl__serializer_html_a01b867bd5dce5249d4f7433b8f27def6"><div class="ttname"><a href="structnlohmann_1_1adl__serializer.html#a01b867bd5dce5249d4f7433b8f27def6">nlohmann::adl_serializer::to_json</a></div><div class="ttdeci">static auto to_json(BasicJsonType &amp;j, ValueType &amp;&amp;val) noexcept(noexcept(::nlohmann::to_json(j, std::forward&lt; ValueType &gt;(val)))) -&gt; decltype(::nlohmann::to_json(j, std::forward&lt; ValueType &gt;(val)), void())</div><div class="ttdoc">convert any value type to a JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:3827</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1b0a4e60d56f1fe80501ed941e122892"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1b0a4e60d56f1fe80501ed941e122892">nlohmann::basic_json::insert</a></div><div class="ttdeci">void insert(const_iterator first, const_iterator last)</div><div class="ttdoc">inserts elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19910</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_aac6d706967b2ecc2510e172577d8550b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6d706967b2ecc2510e172577d8550b">nlohmann::detail::json_sax_dom_callback_parser::parse_event_t</a></div><div class="ttdeci">typename BasicJsonType::parse_event_t parse_event_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4644</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a068a16e76be178e83da6a192916923ed"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a068a16e76be178e83da6a192916923ed">nlohmann::basic_json::erase</a></div><div class="ttdeci">IteratorType erase(IteratorType pos)</div><div class="ttdoc">remove element given an iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:18240</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab9d91cc9c3b62782b38d8f2158269937"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab9d91cc9c3b62782b38d8f2158269937">nlohmann::basic_json::get_to</a></div><div class="ttdeci">Array get_to(T(&amp;v)[N]) const noexcept(noexcept(JSONSerializer&lt; Array &gt;::from_json(std::declval&lt; const basic_json_t &amp; &gt;(), v)))</div><div class="ttdef"><b>Definition:</b> json.hpp:17283</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a88d6103cb3620410b35200ee8e313d97"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">nlohmann::basic_json::number_float_t</a></div><div class="ttdeci">NumberFloatType number_float_t</div><div class="ttdoc">a type for a number (floating-point)</div><div class="ttdef"><b>Definition:</b> json.hpp:15362</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__buffer__adapter_html_ae9e195b04f3551fafb0925aafba00124"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ae9e195b04f3551fafb0925aafba00124">nlohmann::detail::input_buffer_adapter::get_character</a></div><div class="ttdeci">std::char_traits&lt; char &gt;::int_type get_character() noexcept override</div><div class="ttdoc">get a character [0,255] or std::char_traits&lt;char&gt;::eof().</div><div class="ttdef"><b>Definition:</b> json.hpp:4008</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1type__error_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1type__error.html">nlohmann::detail::type_error</a></div><div class="ttdoc">exception indicating executing a member function with a wrong type</div><div class="ttdef"><b>Definition:</b> json.hpp:2075</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9d55e3e63b05e03a2b70cea3761f84cb"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9d55e3e63b05e03a2b70cea3761f84cb">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">const_reference operator[](const json_pointer &amp;ptr) const</div><div class="ttdoc">access specified element via JSON Pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:21899</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_ad26511012fc88f3ec5d9e1cb708732fd"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26511012fc88f3ec5d9e1cb708732fd">nlohmann::detail::primitive_iterator_t::operator++</a></div><div class="ttdeci">primitive_iterator_t &amp; operator++() noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9235</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a3603b59a17d1c5e15050743b847992f2"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a3603b59a17d1c5e15050743b847992f2">nlohmann::detail::difference_type_t</a></div><div class="ttdeci">typename T::difference_type difference_type_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2495</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_a03682754b06ed4f30b263119eecc2d52"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a03682754b06ed4f30b263119eecc2d52">nlohmann::detail::dtoa_impl::diyfp::kPrecision</a></div><div class="ttdeci">static constexpr int kPrecision</div><div class="ttdef"><b>Definition:</b> json.hpp:12701</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_ada6b4e6d55d8ed7ac79e49a03e9d1fe2"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ada6b4e6d55d8ed7ac79e49a03e9d1fe2">nlohmann::detail::iteration_proxy_value::difference_type</a></div><div class="ttdeci">std::ptrdiff_t difference_type</div><div class="ttdef"><b>Definition:</b> json.hpp:3300</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__stream__adapter_html_ae0760af923583de6354725e901d1869d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__stream__adapter.html#ae0760af923583de6354725e901d1869d">nlohmann::detail::input_stream_adapter::get_character</a></div><div class="ttdeci">std::char_traits&lt; char &gt;::int_type get_character() override</div><div class="ttdoc">get a character [0,255] or std::char_traits&lt;char&gt;::eof().</div><div class="ttdef"><b>Definition:</b> json.hpp:3976</div></div>
<div class="ttc" id="ajson_8hpp_html_a0643bd74c2dc6f0e4e420b8190ea8f0f"><div class="ttname"><a href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f">NLOHMANN_BASIC_JSON_TPL_DECLARATION</a></div><div class="ttdeci">#define NLOHMANN_BASIC_JSON_TPL_DECLARATION</div><div class="ttdef"><b>Definition:</b> json.hpp:1814</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_aa0ab8d27fd88a33a2f801413ac4c7fbc"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">nlohmann::detail::binary_writer::write_cbor</a></div><div class="ttdeci">void write_cbor(const BasicJsonType &amp;j)</div><div class="ttdef"><b>Definition:</b> json.hpp:11357</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_ae1adf5bcee8b6fa0c358710604fb1938"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#ae1adf5bcee8b6fa0c358710604fb1938">nlohmann::detail::json_ref::json_ref</a></div><div class="ttdeci">json_ref(value_type &amp;&amp;value)</div><div class="ttdef"><b>Definition:</b> json.hpp:11106</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b_html_aaaafbcd0573ec9cfc5d19411950dc1ac"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aaaafbcd0573ec9cfc5d19411950dc1ac">nlohmann::detail::iterator_types&lt; It, void_t&lt; typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category &gt; &gt;::iterator_category</a></div><div class="ttdeci">typename It::iterator_category iterator_category</div><div class="ttdef"><b>Definition:</b> json.hpp:2291</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae797958b922732bf5fc01053d0659c1f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae797958b922732bf5fc01053d0659c1f">nlohmann::basic_json::accept</a></div><div class="ttdeci">static bool accept(IteratorType first, IteratorType last)</div><div class="ttdef"><b>Definition:</b> json.hpp:20890</div></div>
<div class="ttc" id="ajson_8hpp_html_aeedd50a52e1ea565ceab84bb596ec07f"><div class="ttname"><a href="json_8hpp.html#aeedd50a52e1ea565ceab84bb596ec07f">JSON_HEDLEY_DIAGNOSTIC_POP</a></div><div class="ttdeci">#define JSON_HEDLEY_DIAGNOSTIC_POP</div><div class="ttdef"><b>Definition:</b> json.hpp:736</div></div>
<div class="ttc" id="astructnlohmann_1_1adl__serializer_html_a2c544585b8b1828a0f1eecd831d0496e"><div class="ttname"><a href="structnlohmann_1_1adl__serializer.html#a2c544585b8b1828a0f1eecd831d0496e">nlohmann::adl_serializer::from_json</a></div><div class="ttdeci">static auto from_json(BasicJsonType &amp;&amp;j, ValueType &amp;val) noexcept(noexcept(::nlohmann::from_json(std::forward&lt; BasicJsonType &gt;(j), val))) -&gt; decltype(::nlohmann::from_json(std::forward&lt; BasicJsonType &gt;(j), val), void())</div><div class="ttdoc">convert a JSON value to any value type</div><div class="ttdef"><b>Definition:</b> json.hpp:3810</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a22b6e37654ac93c6d0d9c06ec1bf5ded"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded">nlohmann::detail::dtoa_impl::compute_boundaries</a></div><div class="ttdeci">boundaries compute_boundaries(FloatType value)</div><div class="ttdef"><b>Definition:</b> json.hpp:12831</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a6da3d2b34528aff328f3dcb513076dec"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a6da3d2b34528aff328f3dcb513076dec">nlohmann::detail::iter_impl::operator-&gt;</a></div><div class="ttdeci">pointer operator-&gt;() const</div><div class="ttdoc">dereference the iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9583</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a80273cecc45765d7b2826ec931fbffdd"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a80273cecc45765d7b2826ec931fbffdd">nlohmann::detail::start_array_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().start_array(std::declval&lt; std::size_t &gt;())) start_array_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5066</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_ad94e912a67c7b96158937236805b8b47"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ad94e912a67c7b96158937236805b8b47">nlohmann::detail::json_sax_dom_callback_parser::string</a></div><div class="ttdeci">bool string(string_t &amp;val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4691</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_a2c2b2132ce56b3b45593374b622baa67"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#a2c2b2132ce56b3b45593374b622baa67">nlohmann::detail::binary_writer::to_char_type</a></div><div class="ttdeci">static constexpr CharType to_char_type(InputCharType x) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:12614</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_a98956ba676b1ae16b62346f9c4fb752e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#a98956ba676b1ae16b62346f9c4fb752e">nlohmann::detail::json_ref::operator=</a></div><div class="ttdeci">json_ref &amp; operator=(const json_ref &amp;)=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_ab8e33bd01c285a1a80b737a1905ceb97"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ab8e33bd01c285a1a80b737a1905ceb97">nlohmann::detail::iteration_proxy_value::value</a></div><div class="ttdeci">IteratorType::reference value() const</div><div class="ttdoc">return value of the iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:3378</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a9a9ffd53b6869d4eca271b1ed5b57fe8"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a9a9ffd53b6869d4eca271b1ed5b57fe8">nlohmann::detail::lexer::token_type::begin_object</a></div><div class="ttdeci">@ begin_object</div><div class="ttdoc">the character for object begin {</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a30a7cc24f2931c20ecae37ec4a5e901f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a30a7cc24f2931c20ecae37ec4a5e901f">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, size_type cnt, const basic_json &amp;val)</div><div class="ttdoc">inserts elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19768</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a85955b9c6dd31846e4b8e891f78614b6"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">nlohmann::detail::get_arithmetic_value</a></div><div class="ttdeci">void get_arithmetic_value(const BasicJsonType &amp;j, ArithmeticType &amp;val)</div><div class="ttdef"><b>Definition:</b> json.hpp:2912</div></div>
<div class="ttc" id="anamespacenlohmann_html_a6ce645a0b8717757e096a5b5773b7a16"><div class="ttname"><a href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">nlohmann::to_string</a></div><div class="ttdeci">NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &amp;j)</div><div class="ttdoc">user-defined to_string function for JSON values</div><div class="ttdef"><b>Definition:</b> json.hpp:22620</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a851d965082d20a726138f5d0330dc7d8"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a851d965082d20a726138f5d0330dc7d8">nlohmann::detail::json_sax_dom_parser::string</a></div><div class="ttdeci">bool string(string_t &amp;val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4508</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_ae39e523218bf05cac3fb5b5b1cd5efb6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#ae39e523218bf05cac3fb5b5b1cd5efb6">nlohmann::detail::json_ref::moved_or_copied</a></div><div class="ttdeci">value_type moved_or_copied() const</div><div class="ttdef"><b>Definition:</b> json.hpp:11132</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1exception_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1exception.html">nlohmann::detail::exception</a></div><div class="ttdoc">general exception of the basic_json class</div><div class="ttdef"><b>Definition:</b> json.hpp:1864</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__sax__static__asserts_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__sax__static__asserts.html">nlohmann::detail::is_sax_static_asserts</a></div><div class="ttdef"><b>Definition:</b> json.hpp:5109</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a649252bda4a2e75a0915b11a25d8bcc3"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">nlohmann::json_pointer::empty</a></div><div class="ttdeci">bool empty() const noexcept</div><div class="ttdoc">return whether pointer points to the root document</div><div class="ttdef"><b>Definition:</b> json.hpp:10391</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__from__json_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__from__json.html">nlohmann::detail::has_from_json</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2520</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">nlohmann::detail::value_t</a></div><div class="ttdeci">value_t</div><div class="ttdoc">the JSON type enumeration</div><div class="ttdef"><b>Definition:</b> json.hpp:2854</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebea2063c1608d6e0baf80249c42e2be5804"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea2063c1608d6e0baf80249c42e2be5804">nlohmann::detail::parser::parse_event_t::value</a></div><div class="ttdeci">@ value</div><div class="ttdoc">the parser finished reading a JSON value</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab157adb4de8475b452da9ebf04f2de15"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab157adb4de8475b452da9ebf04f2de15">nlohmann::basic_json::at</a></div><div class="ttdeci">const_reference at(size_type idx) const</div><div class="ttdoc">access specified array element with bounds checking</div><div class="ttdef"><b>Definition:</b> json.hpp:17566</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abac8af76067f1e8fdca9052882c74428"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">nlohmann::basic_json::is_number_integer</a></div><div class="ttdeci">constexpr bool is_number_integer() const noexcept</div><div class="ttdoc">return whether value is an integer number</div><div class="ttdef"><b>Definition:</b> json.hpp:16772</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a867f7eb55091be31b013adb3e46816d3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a867f7eb55091be31b013adb3e46816d3">nlohmann::detail::iter_impl::iter_impl</a></div><div class="ttdeci">iter_impl(const iter_impl&lt; typename std::remove_const&lt; BasicJsonType &gt;::type &gt; &amp;other) noexcept</div><div class="ttdoc">converting constructor</div><div class="ttdef"><b>Definition:</b> json.hpp:9456</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a84e689fb581d651d130039f7cb81494a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a84e689fb581d651d130039f7cb81494a">nlohmann::detail::iter_impl::operator--</a></div><div class="ttdeci">iter_impl &amp; operator--()</div><div class="ttdoc">pre-decrement (it)</div><div class="ttdef"><b>Definition:</b> json.hpp:9671</div></div>
<div class="ttc" id="aclassstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4_html_ace1dfdb74841c2f58c064a50598188fd"><div class="ttname"><a href="classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html#ace1dfdb74841c2f58c064a50598188fd">std::tuple_element&lt; N, ::nlohmann::detail::iteration_proxy_value&lt; IteratorType &gt; &gt;::type</a></div><div class="ttdeci">decltype(get&lt; N &gt;(std::declval&lt; ::nlohmann::detail::iteration_proxy_value&lt; IteratorType &gt; &gt;())) type</div><div class="ttdef"><b>Definition:</b> json.hpp:3448</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5fff1e6dcaabd367d9b1109a5682f9d4"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5fff1e6dcaabd367d9b1109a5682f9d4">nlohmann::detail::start_object_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().start_object(std::declval&lt; std::size_t &gt;())) start_object_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5055</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a3acba9c6ceb7214e565fe08c3ba5b352"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a3acba9c6ceb7214e565fe08c3ba5b352">nlohmann::basic_json::front</a></div><div class="ttdeci">reference front()</div><div class="ttdoc">access the first element</div><div class="ttdef"><b>Definition:</b> json.hpp:18129</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a60f3b0a96cc0bff9a7e6ab84ca538a45"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a60f3b0a96cc0bff9a7e6ab84ca538a45">nlohmann::detail::iter_impl::operator++</a></div><div class="ttdeci">const iter_impl operator++(int)</div><div class="ttdoc">post-increment (it++)</div><div class="ttdef"><b>Definition:</b> json.hpp:9617</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a9a5cd7864a8f848ef107d3f5a330f5e7"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a9a5cd7864a8f848ef107d3f5a330f5e7">nlohmann::detail::iter_impl::operator=</a></div><div class="ttdeci">iter_impl &amp; operator=(const iter_impl&lt; const BasicJsonType &gt; &amp;other) noexcept</div><div class="ttdoc">converting assignment</div><div class="ttdef"><b>Definition:</b> json.hpp:9444</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4_html_a33ee9a1beb8ee099f989fd4af15178a5"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a33ee9a1beb8ee099f989fd4af15178a5">nlohmann::detail::iterator_traits&lt; T *, enable_if_t&lt; std::is_object&lt; T &gt;::value &gt; &gt;::pointer</a></div><div class="ttdeci">T * pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:2313</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aeb988f5b2148875ed1c9cb32bec156c6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aeb988f5b2148875ed1c9cb32bec156c6">nlohmann::basic_json::to_bson</a></div><div class="ttdeci">static void to_bson(const basic_json &amp;j, detail::output_adapter&lt; char &gt; o)</div><div class="ttdoc">Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the ...</div><div class="ttdef"><b>Definition:</b> json.hpp:21411</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3">nlohmann::detail::error_handler_t::ignore</a></div><div class="ttdeci">@ ignore</div><div class="ttdoc">ignore invalid UTF-8 sequences</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a45ec87326503b8884b664a9ef23a6c99"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a45ec87326503b8884b664a9ef23a6c99">nlohmann::detail::boolean_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().boolean(std::declval&lt; bool &gt;())) boolean_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5035</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4_html_a110f50fd5378da876d9a6d6a8d945e37"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a110f50fd5378da876d9a6d6a8d945e37">nlohmann::detail::external_constructor&lt; value_t::array &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, const CompatibleArrayType &amp;arr)</div><div class="ttdef"><b>Definition:</b> json.hpp:3572</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a5bc841e0bee12fd6489d49cf7bd07bb4"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a5bc841e0bee12fd6489d49cf7bd07bb4">nlohmann::detail::dtoa_impl::grisu2_round</a></div><div class="ttdeci">void grisu2_round(char *buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k)</div><div class="ttdef"><b>Definition:</b> json.hpp:13190</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae095578e03df97c5b3991787f1056374"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">nlohmann::basic_json::array_t</a></div><div class="ttdeci">ArrayType&lt; basic_json, AllocatorType&lt; basic_json &gt; &gt; array_t</div><div class="ttdoc">a type for an array</div><div class="ttdef"><b>Definition:</b> json.hpp:15072</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a0cc4a5192fe9b803276edb831b6099fa"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a0cc4a5192fe9b803276edb831b6099fa">nlohmann::detail::json_sax_dom_callback_parser::key</a></div><div class="ttdeci">bool key(string_t &amp;val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4715</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab5dfd9a2b2663b219641cb7fe59b6da2"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab5dfd9a2b2663b219641cb7fe59b6da2">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array)</div><div class="ttdoc">create a container (array or object) from an initializer list</div><div class="ttdef"><b>Definition:</b> json.hpp:15999</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__string__adapter_html_a2d76cc6c88ddbc196a63fcfcac9ee7d1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__string__adapter.html#a2d76cc6c88ddbc196a63fcfcac9ee7d1">nlohmann::detail::output_string_adapter::write_character</a></div><div class="ttdeci">void write_character(CharType c) override</div><div class="ttdef"><b>Definition:</b> json.hpp:11266</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4_html_a5afd6a40e94dde21d120ac646468c495"><div class="ttname"><a href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#a5afd6a40e94dde21d120ac646468c495">nlohmann::detail::detector&lt; Default, void_t&lt; Op&lt; Args... &gt; &gt;, Op, Args... &gt;::type</a></div><div class="ttdeci">Op&lt; Args... &gt; type</div><div class="ttdef"><b>Definition:</b> json.hpp:2360</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab0e886db6e9fa91ff9fd853333fed05b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab0e886db6e9fa91ff9fd853333fed05b">nlohmann::basic_json::operator!=</a></div><div class="ttdeci">friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: not equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20341</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__stream__adapter_html_a2d71eb469267abd864f765481d1e823f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__stream__adapter.html#a2d71eb469267abd864f765481d1e823f">nlohmann::detail::input_stream_adapter::~input_stream_adapter</a></div><div class="ttdeci">~input_stream_adapter() override</div><div class="ttdef"><b>Definition:</b> json.hpp:3956</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a919645fd1827a561a994d70a435e3f19"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a919645fd1827a561a994d70a435e3f19">nlohmann::detail::json_sax_acceptor::end_object</a></div><div class="ttdeci">bool end_object()</div><div class="ttdef"><b>Definition:</b> json.hpp:4988</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a6cca370ac6c99294dbe4fe24716a57dd"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a6cca370ac6c99294dbe4fe24716a57dd">nlohmann::detail::to_chars</a></div><div class="ttdeci">JSON_HEDLEY_RETURNS_NON_NULL char * to_chars(char *first, const char *last, FloatType value)</div><div class="ttdoc">generates a decimal representation of the floating-point number value in [first, last).</div><div class="ttdef"><b>Definition:</b> json.hpp:13709</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a32028cc056ae0f43aaae331cdbbbf856"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a32028cc056ae0f43aaae331cdbbbf856">nlohmann::json_sax::number_unsigned_t</a></div><div class="ttdeci">typename BasicJsonType::number_unsigned_t number_unsigned_t</div><div class="ttdoc">type for unsigned integers</div><div class="ttdef"><b>Definition:</b> json.hpp:4338</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a5255b98ba8282e3625968f91cff9d3d0"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5255b98ba8282e3625968f91cff9d3d0">nlohmann::detail::json_sax_dom_callback_parser::start_array</a></div><div class="ttdeci">bool start_array(std::size_t len)</div><div class="ttdef"><b>Definition:</b> json.hpp:4761</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7999ee3a69a4979d92e98ab1e88c8759"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7999ee3a69a4979d92e98ab1e88c8759">nlohmann::basic_json::operator&lt;</a></div><div class="ttdeci">friend bool operator&lt;(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: less than</div><div class="ttdef"><b>Definition:</b> json.hpp:20448</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1conjunction_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1conjunction.html">nlohmann::detail::conjunction</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2799</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c">nlohmann::detail::error_handler_t::replace</a></div><div class="ttdeci">@ replace</div><div class="ttdoc">replace invalid UTF-8 sequences with U+FFFD</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a85cc1a37b0aaa52de40e72f0ed4e0c0d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a85cc1a37b0aaa52de40e72f0ed4e0c0d">nlohmann::detail::lexer::token_type::literal_true</a></div><div class="ttdeci">@ literal_true</div><div class="ttdoc">the true literal</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a2b592605b63ae7f5401996ffa3b14393"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a2b592605b63ae7f5401996ffa3b14393">nlohmann::detail::iter_impl::operator==</a></div><div class="ttdeci">bool operator==(const iter_impl &amp;other) const</div><div class="ttdoc">comparison: equal</div><div class="ttdef"><b>Definition:</b> json.hpp:9703</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640_html_ab17cea1be422b8985fc19942809560ed"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#ab17cea1be422b8985fc19942809560ed">nlohmann::detail::has_from_json&lt; BasicJsonType, T, enable_if_t&lt; not is_basic_json&lt; T &gt;::value &gt; &gt;::serializer</a></div><div class="ttdeci">typename BasicJsonType::template json_serializer&lt; T, void &gt; serializer</div><div class="ttdef"><b>Definition:</b> json.hpp:2526</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a9c1795c148875722f8482d39e0eb9364"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364">nlohmann::detail::mapped_type_t</a></div><div class="ttdeci">typename T::mapped_type mapped_type_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2486</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1make__void_html_a8961e24ae3b2cb65ec47d1ce805d94e4"><div class="ttname"><a href="structnlohmann_1_1detail_1_1make__void.html#a8961e24ae3b2cb65ec47d1ce805d94e4">nlohmann::detail::make_void::type</a></div><div class="ttdeci">void type</div><div class="ttdef"><b>Definition:</b> json.hpp:2265</div></div>
<div class="ttc" id="ajson_8hpp_html_af5c84b7d1a43361bdc14cc6941078000"><div class="ttname"><a href="json_8hpp.html#af5c84b7d1a43361bdc14cc6941078000">JSON_HEDLEY_PURE</a></div><div class="ttdeci">#define JSON_HEDLEY_PURE</div><div class="ttdef"><b>Definition:</b> json.hpp:1170</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a822bbca11a9fea0aa337018e351755f5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a822bbca11a9fea0aa337018e351755f5">nlohmann::detail::json_sax_acceptor::start_object</a></div><div class="ttdeci">bool start_object(std::size_t=std::size_t(-1))</div><div class="ttdef"><b>Definition:</b> json.hpp:4978</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_aa3100e41472dba02ab78ccc1607e44ab"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#aa3100e41472dba02ab78ccc1607e44ab">nlohmann::detail::json_ref::operator*</a></div><div class="ttdeci">value_type const &amp; operator*() const</div><div class="ttdef"><b>Definition:</b> json.hpp:11141</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a60287e3bd85f489e04c83f7e3b76e613"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a60287e3bd85f489e04c83f7e3b76e613">nlohmann::json_sax::parse_error</a></div><div class="ttdeci">virtual bool parse_error(std::size_t position, const std::string &amp;last_token, const detail::exception &amp;ex)=0</div><div class="ttdoc">a parse error occurred</div></div>
<div class="ttc" id="ajson_8hpp_html_a8df7de76ab3c9445f46f6994ec205bcd"><div class="ttname"><a href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a></div><div class="ttdeci">#define JSON_HEDLEY_UNLIKELY(expr)</div><div class="ttdef"><b>Definition:</b> json.hpp:1124</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">nlohmann::detail::value_t::null</a></div><div class="ttdeci">@ null</div><div class="ttdoc">null value</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4_html_a1e044961affbd6417386d6e9f1d545e9"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a1e044961affbd6417386d6e9f1d545e9">nlohmann::detail::external_constructor&lt; value_t::object &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, typename BasicJsonType::object_t &amp;&amp;obj)</div><div class="ttdef"><b>Definition:</b> json.hpp:3621</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_ad9b253083e0509923ba195136f49face"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#ad9b253083e0509923ba195136f49face">nlohmann::json_sax::number_unsigned</a></div><div class="ttdeci">virtual bool number_unsigned(number_unsigned_t val)=0</div><div class="ttdoc">an unsigned integer number was read</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_ab441f2761e33839ca48bc2225e14a2a9"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ab441f2761e33839ca48bc2225e14a2a9">nlohmann::detail::dtoa_impl::format_buffer</a></div><div class="ttdeci">JSON_HEDLEY_RETURNS_NON_NULL char * format_buffer(char *buf, int len, int decimal_exponent, int min_exp, int max_exp)</div><div class="ttdoc">prettify v = buf * 10^decimal_exponent</div><div class="ttdef"><b>Definition:</b> json.hpp:13624</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a9b899c72b0e1e3dd46d75c2b4e6bcdfb"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a9b899c72b0e1e3dd46d75c2b4e6bcdfb">nlohmann::detail::dtoa_impl::grisu2_digit_gen</a></div><div class="ttdeci">void grisu2_digit_gen(char *buffer, int &amp;length, int &amp;decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)</div><div class="ttdef"><b>Definition:</b> json.hpp:13231</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">nlohmann::detail::dtoa_impl::diyfp</a></div><div class="ttdef"><b>Definition:</b> json.hpp:12699</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1wide__string__input__adapter_html_abb62b34cf77e557ce5321b7f2490c3b0"><div class="ttname"><a href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#abb62b34cf77e557ce5321b7f2490c3b0">nlohmann::detail::wide_string_input_adapter::get_character</a></div><div class="ttdeci">std::char_traits&lt; char &gt;::int_type get_character() noexcept override</div><div class="ttdoc">get a character [0,255] or std::char_traits&lt;char&gt;::eof().</div><div class="ttdef"><b>Definition:</b> json.hpp:4158</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_aabf172b436988e2edde22f13f27caaed"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aabf172b436988e2edde22f13f27caaed">nlohmann::detail::json_reverse_iterator::operator+</a></div><div class="ttdeci">json_reverse_iterator operator+(difference_type i) const</div><div class="ttdoc">add to iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:10029</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d">nlohmann::detail::lexer::token_type::parse_error</a></div><div class="ttdeci">@ parse_error</div><div class="ttdoc">indicating a parse error</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">nlohmann::detail::value_t::object</a></div><div class="ttdeci">@ object</div><div class="ttdoc">object (unordered set of name/value pairs)</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_afc50fee0a92ce84afb84041ebbdfba80"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afc50fee0a92ce84afb84041ebbdfba80">nlohmann::detail::json_sax_dom_parser::json_sax_dom_parser</a></div><div class="ttdeci">json_sax_dom_parser(BasicJsonType &amp;r, const bool allow_exceptions_=true)</div><div class="ttdef"><b>Definition:</b> json.hpp:4467</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_ad8da3aad0147b18b3cb76868480300fe"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad8da3aad0147b18b3cb76868480300fe">nlohmann::detail::json_sax_dom_parser::number_float_t</a></div><div class="ttdeci">typename BasicJsonType::number_float_t number_float_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4459</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">nlohmann::detail::input_format_t::bson</a></div><div class="ttdeci">@ bson</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a4aef7e72e539be04e139c34872421f2a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">nlohmann::detail::lexer::get_token_string</a></div><div class="ttdeci">std::string get_token_string() const</div><div class="ttdef"><b>Definition:</b> json.hpp:8488</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a31f84ee15c4690ff705bed74736d04c6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">nlohmann::basic_json::object</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json object(initializer_list_t init={})</div><div class="ttdoc">explicitly create an object from an initializer list</div><div class="ttdef"><b>Definition:</b> json.hpp:16133</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_afd4d961ab2a6b01cbe6e840f7fb90cdc"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc">nlohmann::detail::json_sax_dom_parser::string_t</a></div><div class="ttdeci">typename BasicJsonType::string_t string_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4460</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1file__input__adapter_html_af96552e4560be08b201e62a36e6b6189"><div class="ttname"><a href="classnlohmann_1_1detail_1_1file__input__adapter.html#af96552e4560be08b201e62a36e6b6189">nlohmann::detail::file_input_adapter::~file_input_adapter</a></div><div class="ttdeci">~file_input_adapter() override=default</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4_html_ab748f9f00bb31bee4978a033589f8c85"><div class="ttname"><a href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#ab748f9f00bb31bee4978a033589f8c85">nlohmann::detail::detector&lt; Default, void_t&lt; Op&lt; Args... &gt; &gt;, Op, Args... &gt;::value_t</a></div><div class="ttdeci">std::true_type value_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2359</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1position__t_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1position__t.html">nlohmann::detail::position_t</a></div><div class="ttdoc">struct to capture the start position of the current token</div><div class="ttdef"><b>Definition:</b> json.hpp:89</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1serializer_html_a95460ebd1a535a543e5a0ec52e00f48b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">nlohmann::detail::serializer::dump</a></div><div class="ttdeci">void dump(const BasicJsonType &amp;val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigned int current_indent=0)</div><div class="ttdoc">internal implementation of the serialization function</div><div class="ttdef"><b>Definition:</b> json.hpp:13837</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries_html_ad1668c60aeade5f2557fafed8b8aee1a"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#ad1668c60aeade5f2557fafed8b8aee1a">nlohmann::detail::dtoa_impl::boundaries::w</a></div><div class="ttdeci">diyfp w</div><div class="ttdef"><b>Definition:</b> json.hpp:12819</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__complete__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__complete__type.html">nlohmann::detail::is_complete_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2589</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_ab77aa48692bd4e64e4f051ce6aeb6d2d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">nlohmann::detail::binary_writer::to_char_type</a></div><div class="ttdeci">static constexpr CharType to_char_type(std::uint8_t x) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:12585</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1priority__tag_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1priority__tag.html">nlohmann::detail::priority_tag</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2228</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a09ca1dc273d226afe0ca83a9d7438d9c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a09ca1dc273d226afe0ca83a9d7438d9c">nlohmann::basic_json::to_msgpack</a></div><div class="ttdeci">static std::vector&lt; uint8_t &gt; to_msgpack(const basic_json &amp;j)</div><div class="ttdoc">create a MessagePack serialization of a given JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:21214</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac6946dffeb3be5aa173645f0467a44b3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac6946dffeb3be5aa173645f0467a44b3">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">reference operator[](const json_pointer &amp;ptr)</div><div class="ttdoc">access specified element via JSON Pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:21871</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae625a0647486edf2bb38c849ca67f934"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae625a0647486edf2bb38c849ca67f934">nlohmann::basic_json::find</a></div><div class="ttdeci">const_iterator find(KeyT &amp;&amp;key) const</div><div class="ttdoc">find an element in a JSON object</div><div class="ttdef"><b>Definition:</b> json.hpp:18537</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1other__error_html_a87e8ab894e8c85c0d97a0919782d3683"><div class="ttname"><a href="classnlohmann_1_1detail_1_1other__error.html#a87e8ab894e8c85c0d97a0919782d3683">nlohmann::detail::other_error::create</a></div><div class="ttdeci">static other_error create(int id_, const std::string &amp;what_arg)</div><div class="ttdef"><b>Definition:</b> json.hpp:2163</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a7f32d7c62841f0c4a6784cf741a6e4f8"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">nlohmann::json_pointer::json_pointer</a></div><div class="ttdeci">json_pointer(const std::string &amp;s=&quot;&quot;)</div><div class="ttdoc">create JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10120</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9a06d1efd50a00f4889f831f851ce124"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9a06d1efd50a00f4889f831f851ce124">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(basic_json &amp;&amp;other) noexcept</div><div class="ttdoc">move constructor</div><div class="ttdef"><b>Definition:</b> json.hpp:16432</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__buffer__adapter_html_a0871125057d993684ba8e45fb2b8a76b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#a0871125057d993684ba8e45fb2b8a76b">nlohmann::detail::input_buffer_adapter::operator=</a></div><div class="ttdeci">input_buffer_adapter &amp; operator=(input_buffer_adapter &amp;)=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a0d74bfcf65662f1d66d14c34b0027098"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a0d74bfcf65662f1d66d14c34b0027098">nlohmann::basic_json::count</a></div><div class="ttdeci">size_type count(KeyT &amp;&amp;key) const</div><div class="ttdoc">returns the number of occurrences of a key in a JSON object</div><div class="ttdef"><b>Definition:</b> json.hpp:18571</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8dba7b7d2f38e6b0c614030aa43983f6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">nlohmann::basic_json::cend</a></div><div class="ttdeci">const_iterator cend() const noexcept</div><div class="ttdoc">returns a const iterator to one past the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18785</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_af245c2b6714d76ed99a2d02f2596d596"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#af245c2b6714d76ed99a2d02f2596d596">nlohmann::basic_json::operator+=</a></div><div class="ttdeci">reference operator+=(initializer_list_t init)</div><div class="ttdoc">add an object to an object</div><div class="ttdef"><b>Definition:</b> json.hpp:19566</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4f0f5dd42b2987ff20306ed78bd31d1d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4f0f5dd42b2987ff20306ed78bd31d1d">nlohmann::basic_json::begin</a></div><div class="ttdeci">const_iterator begin() const noexcept</div><div class="ttdoc">returns a const iterator to the first element</div><div class="ttdef"><b>Definition:</b> json.hpp:18684</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8faa039ca82427ed29c486ffd00600c3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">nlohmann::basic_json::is_null</a></div><div class="ttdeci">constexpr bool is_null() const noexcept</div><div class="ttdoc">return whether value is null</div><div class="ttdef"><b>Definition:</b> json.hpp:16691</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_abf5143501435f9f79898c1ff238c2622"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">nlohmann::detail::lexer::get_position</a></div><div class="ttdeci">constexpr position_t get_position() const noexcept</div><div class="ttdoc">return position of last read token</div><div class="ttdef"><b>Definition:</b> json.hpp:8480</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a41876b17c0e8bdb55580eaf5e4e2ded8"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a41876b17c0e8bdb55580eaf5e4e2ded8">nlohmann::detail::json_sax_acceptor::number_integer_t</a></div><div class="ttdeci">typename BasicJsonType::number_integer_t number_integer_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4943</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1out__of__range_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1out__of__range.html">nlohmann::detail::out_of_range</a></div><div class="ttdoc">exception indicating access out of the defined range</div><div class="ttdef"><b>Definition:</b> json.hpp:2122</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a7ac5b8ef0363101275a2827b3b117dcf"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a7ac5b8ef0363101275a2827b3b117dcf">nlohmann::detail::detected_or_t</a></div><div class="ttdeci">typename detected_or&lt; Default, Op, Args... &gt;::type detected_or_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2373</div></div>
<div class="ttc" id="ajson_8hpp_html_a6954bec49ed2a2dfb938c1131c82740a"><div class="ttname"><a href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a></div><div class="ttdeci">#define JSON_CATCH(exception)</div><div class="ttdef"><b>Definition:</b> json.hpp:1756</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7479d686148c26e252781bb32aa5d5c9"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7479d686148c26e252781bb32aa5d5c9">nlohmann::basic_json::at</a></div><div class="ttdeci">const_reference at(const json_pointer &amp;ptr) const</div><div class="ttdoc">access specified element via JSON Pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:21985</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1detector_html_a5a132aab543d1706e2439268faf8d487"><div class="ttname"><a href="structnlohmann_1_1detail_1_1detector.html#a5a132aab543d1706e2439268faf8d487">nlohmann::detail::detector::value_t</a></div><div class="ttdeci">std::false_type value_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2352</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4_html_a50474d6624957a630a1d398cac1e7bfa"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a50474d6624957a630a1d398cac1e7bfa">nlohmann::detail::external_constructor&lt; value_t::array &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, typename BasicJsonType::array_t &amp;&amp;arr)</div><div class="ttdef"><b>Definition:</b> json.hpp:3562</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a7d3bf1f361ebb817c694ba45b3814fa6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a7d3bf1f361ebb817c694ba45b3814fa6">nlohmann::detail::json_sax_dom_parser::parse_error</a></div><div class="ttdeci">bool parse_error(std::size_t, const std::string &amp;, const detail::exception &amp;ex)</div><div class="ttdef"><b>Definition:</b> json.hpp:4559</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1invalid__iterator_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1invalid__iterator.html">nlohmann::detail::invalid_iterator</a></div><div class="ttdoc">exception indicating errors with iterators</div><div class="ttdef"><b>Definition:</b> json.hpp:2021</div></div>
<div class="ttc" id="ajson_8hpp_html_a5478b7564e65634cc69432ed3cb6490e"><div class="ttname"><a href="json_8hpp.html#a5478b7564e65634cc69432ed3cb6490e">JSON_INTERNAL_CATCH</a></div><div class="ttdeci">#define JSON_INTERNAL_CATCH(exception)</div><div class="ttdef"><b>Definition:</b> json.hpp:1757</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8c9d932353e1ab98a7dc2fc27e002031"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8c9d932353e1ab98a7dc2fc27e002031">nlohmann::basic_json::swap</a></div><div class="ttdeci">void swap(reference other) noexcept(std::is_nothrow_move_constructible&lt; value_t &gt;::value and std::is_nothrow_move_assignable&lt; value_t &gt;::value and std::is_nothrow_move_constructible&lt; json_value &gt;::value and std::is_nothrow_move_assignable&lt; json_value &gt;::value)</div><div class="ttdoc">exchanges the values</div><div class="ttdef"><b>Definition:</b> json.hpp:20054</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a00e7d95d82d5d8a43421526a42a8eabc"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc">nlohmann::detail::json_sax_dom_callback_parser::string_t</a></div><div class="ttdeci">typename BasicJsonType::string_t string_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4642</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac223d5560c2b05a208c88de67376c5f2"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac223d5560c2b05a208c88de67376c5f2">nlohmann::basic_json::reverse_iterator</a></div><div class="ttdeci">json_reverse_iterator&lt; typename basic_json::iterator &gt; reverse_iterator</div><div class="ttdoc">a reverse iterator for a basic_json container</div><div class="ttdef"><b>Definition:</b> json.hpp:14824</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1input__adapter__protocol_html_a92dac74def4ac5adacd0684088bd4082"><div class="ttname"><a href="structnlohmann_1_1detail_1_1input__adapter__protocol.html#a92dac74def4ac5adacd0684088bd4082">nlohmann::detail::input_adapter_protocol::~input_adapter_protocol</a></div><div class="ttdeci">virtual ~input_adapter_protocol()=default</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__stream__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__stream__adapter.html">nlohmann::detail::input_stream_adapter</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3953</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a2f8484d69c55d8f2a9697a7bec29362a"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a2f8484d69c55d8f2a9697a7bec29362a">nlohmann::basic_json::erase</a></div><div class="ttdeci">size_type erase(const typename object_t::key_type &amp;key)</div><div class="ttdoc">remove element from a JSON object given a key</div><div class="ttdef"><b>Definition:</b> json.hpp:18432</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1exception_html_abf41a7e9178356314082284e6cfea278"><div class="ttname"><a href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">nlohmann::detail::exception::name</a></div><div class="ttdeci">static std::string name(const std::string &amp;ename, int id_)</div><div class="ttdef"><b>Definition:</b> json.hpp:1881</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1out__of__range_html_a3f6d82a6f967c4728a1ec735a7867073"><div class="ttname"><a href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">nlohmann::detail::out_of_range::create</a></div><div class="ttdeci">static out_of_range create(int id_, const std::string &amp;what_arg)</div><div class="ttdef"><b>Definition:</b> json.hpp:2125</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">nlohmann::detail::input_format_t::cbor</a></div><div class="ttdeci">@ cbor</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__string__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html">nlohmann::detail::is_constructible_string_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2672</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1ed52b463d2ef14c85ed076467168c72"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1ed52b463d2ef14c85ed076467168c72">nlohmann::basic_json::from_ubjson</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(detail::input_adapter &amp;&amp;i, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in UBJSON format</div><div class="ttdef"><b>Definition:</b> json.hpp:21714</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1position__t_html_a74df94563dd32102152ceb8c6d9041d8"><div class="ttname"><a href="structnlohmann_1_1detail_1_1position__t.html#a74df94563dd32102152ceb8c6d9041d8">nlohmann::detail::position_t::chars_read_current_line</a></div><div class="ttdeci">std::size_t chars_read_current_line</div><div class="ttdoc">the number of characters read in the current line</div><div class="ttdef"><b>Definition:</b> json.hpp:94</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__buffer__adapter_html_ad9b912fabdcb53de255e8c444d625ac3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ad9b912fabdcb53de255e8c444d625ac3">nlohmann::detail::input_buffer_adapter::input_buffer_adapter</a></div><div class="ttdeci">input_buffer_adapter(const char *b, const std::size_t l) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3997</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1file__input__adapter_html_a0d4ff48617c8f63c30babdfd09482329"><div class="ttname"><a href="classnlohmann_1_1detail_1_1file__input__adapter.html#a0d4ff48617c8f63c30babdfd09482329">nlohmann::detail::file_input_adapter::get_character</a></div><div class="ttdeci">std::char_traits&lt; char &gt;::int_type get_character() noexcept override</div><div class="ttdoc">get a character [0,255] or std::char_traits&lt;char&gt;::eof().</div><div class="ttdef"><b>Definition:</b> json.hpp:3933</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036_html_a6f458a63276ef62d60f4b93de03aa020"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html#a6f458a63276ef62d60f4b93de03aa020">nlohmann::detail::is_constructible_object_type_impl&lt; BasicJsonType, ConstructibleObjectType, enable_if_t&lt; is_detected&lt; mapped_type_t, ConstructibleObjectType &gt;::value and is_detected&lt; key_type_t, ConstructibleObjectType &gt;::value &gt; &gt;::object_t</a></div><div class="ttdeci">typename BasicJsonType::object_t object_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2629</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6defa7ec3d3ace8f713f001f720182d7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6defa7ec3d3ace8f713f001f720182d7">nlohmann::basic_json::to_cbor</a></div><div class="ttdeci">static void to_cbor(const basic_json &amp;j, detail::output_adapter&lt; char &gt; o)</div><div class="ttdef"><b>Definition:</b> json.hpp:21130</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a90a11fe6c7f37b1746a3ff9cb24b0d53"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a90a11fe6c7f37b1746a3ff9cb24b0d53">nlohmann::json_pointer::operator/</a></div><div class="ttdeci">friend json_pointer operator/(const json_pointer &amp;lhs, const json_pointer &amp;rhs)</div><div class="ttdoc">create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10236</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a98448bf2cbc15d15e2eddc5a09a40a42"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a98448bf2cbc15d15e2eddc5a09a40a42">nlohmann::detail::json_sax_dom_parser::operator=</a></div><div class="ttdeci">json_sax_dom_parser &amp; operator=(const json_sax_dom_parser &amp;)=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a65753c68f06639eda0d355f919564e01"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a65753c68f06639eda0d355f919564e01">nlohmann::basic_json::get_to</a></div><div class="ttdeci">ValueType &amp; get_to(ValueType &amp;v) const noexcept(noexcept(JSONSerializer&lt; ValueType &gt;::from_json(std::declval&lt; const basic_json_t &amp; &gt;(), v)))</div><div class="ttdoc">get a value (explicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17271</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1priority__tag_3_010_01_4_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1priority__tag_3_010_01_4.html">nlohmann::detail::priority_tag&lt; 0 &gt;</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2229</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1internal__iterator_html_a8cb0af3498061426c1d0a65ad6220408"><div class="ttname"><a href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">nlohmann::detail::internal_iterator::object_iterator</a></div><div class="ttdeci">BasicJsonType::object_t::iterator object_iterator</div><div class="ttdoc">iterator for JSON objects</div><div class="ttdef"><b>Definition:</b> json.hpp:9290</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1make__void_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1make__void.html">nlohmann::detail::make_void</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2263</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac871e3b03fb2eeca9a8de4db2bea760f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac871e3b03fb2eeca9a8de4db2bea760f">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">reference operator[](size_type idx)</div><div class="ttdoc">access specified array element</div><div class="ttdef"><b>Definition:</b> json.hpp:17714</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a02bcbc878bee413f25b985ada771aa9c"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">nlohmann::detail::enable_if_t</a></div><div class="ttdeci">typename std::enable_if&lt; B, T &gt;::type enable_if_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2191</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_ae4e0852b64102ce4b07d99f08f828b7c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">nlohmann::detail::binary_writer::write_msgpack</a></div><div class="ttdeci">void write_msgpack(const BasicJsonType &amp;j)</div><div class="ttdef"><b>Definition:</b> json.hpp:11601</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1f0395aad0fe853a4539288749d3a603"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">nlohmann::detail::from_json</a></div><div class="ttdeci">void from_json(const BasicJsonType &amp;j, typename std::nullptr_t &amp;n)</div><div class="ttdef"><b>Definition:</b> json.hpp:2898</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a39f2cd0b58106097e0e67bf185cc519b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">nlohmann::basic_json::size_type</a></div><div class="ttdeci">std::size_t size_type</div><div class="ttdoc">a type to represent container sizes</div><div class="ttdef"><b>Definition:</b> json.hpp:14809</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1nonesuch_html_a6fe87da966856c6cb06617940d90f010"><div class="ttname"><a href="structnlohmann_1_1detail_1_1nonesuch.html#a6fe87da966856c6cb06617940d90f010">nlohmann::detail::nonesuch::nonesuch</a></div><div class="ttdeci">nonesuch()=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_a0f6c65053d859269f88eb4ebb0cd7060"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">nlohmann::detail::binary_writer::write_ubjson</a></div><div class="ttdeci">void write_ubjson(const BasicJsonType &amp;j, const bool use_count, const bool use_type, const bool add_prefix=true)</div><div class="ttdef"><b>Definition:</b> json.hpp:11843</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1to__json__fn_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1to__json__fn.html">nlohmann::detail::to_json_fn</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3775</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aa6602bb24022183ab989439e19345d08"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aa6602bb24022183ab989439e19345d08">nlohmann::basic_json::get</a></div><div class="ttdeci">ValueType get() const noexcept(noexcept(JSONSerializer&lt; ValueType &gt;::from_json(std::declval&lt; const basic_json_t &amp; &gt;(), std::declval&lt; ValueType &amp; &gt;())))</div><div class="ttdoc">get a value (explicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17174</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a9929b4cc92d471c49bd0a92802629f90"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a9929b4cc92d471c49bd0a92802629f90">nlohmann::detail::json_sax_dom_parser::start_object</a></div><div class="ttdeci">bool start_object(std::size_t len)</div><div class="ttdef"><b>Definition:</b> json.hpp:4514</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a5c9603e79a71713f5e8cf12cba837dbb"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5c9603e79a71713f5e8cf12cba837dbb">nlohmann::detail::json_sax_dom_callback_parser::operator=</a></div><div class="ttdeci">json_sax_dom_callback_parser &amp; operator=(const json_sax_dom_callback_parser &amp;)=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_adc648a641e8e9a1072c5abd56ad06401"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#adc648a641e8e9a1072c5abd56ad06401">nlohmann::detail::json_reverse_iterator::key</a></div><div class="ttdeci">auto key() const -&gt; decltype(std::declval&lt; Base &gt;().key())</div><div class="ttdoc">return the key of an object iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:10053</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abe197e9f3184487805cfb5bba6fd5938"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abe197e9f3184487805cfb5bba6fd5938">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(InputIT first, InputIT last)</div><div class="ttdoc">construct a JSON container given an iterator range</div><div class="ttdef"><b>Definition:</b> json.hpp:16225</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1wide__string__input__adapter_html_a85c8bddae20bc00d64dd7a2c87109357"><div class="ttname"><a href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#a85c8bddae20bc00d64dd7a2c87109357">nlohmann::detail::wide_string_input_adapter::wide_string_input_adapter</a></div><div class="ttdeci">wide_string_input_adapter(const WideStringType &amp;w) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:4154</div></div>
<div class="ttc" id="anamespacenlohmann_html"><div class="ttname"><a href="namespacenlohmann.html">nlohmann</a></div><div class="ttdoc">namespace for Niels Lohmann</div><div class="ttdef"><b>Definition:</b> json.hpp:84</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html">nlohmann::detail::binary_writer</a></div><div class="ttdoc">serialization to CBOR and MessagePack values</div><div class="ttdef"><b>Definition:</b> json.hpp:11318</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8a7d537fc297bbc5b845f92fe0445e3b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">nlohmann::basic_json::array</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json array(initializer_list_t init={})</div><div class="ttdoc">explicitly create an array from an initializer list</div><div class="ttdef"><b>Definition:</b> json.hpp:16089</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a3d5cd67d179aa7422ce90e54984a441e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a3d5cd67d179aa7422ce90e54984a441e">nlohmann::detail::json_sax_dom_parser::number_integer_t</a></div><div class="ttdeci">typename BasicJsonType::number_integer_t number_integer_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4457</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6c829df57e924f88cecb702a60af8f17"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6c829df57e924f88cecb702a60af8f17">nlohmann::basic_json::get</a></div><div class="ttdeci">ValueType get() const noexcept(noexcept(JSONSerializer&lt; ValueType &gt;::from_json(std::declval&lt; const basic_json_t &amp; &gt;())))</div><div class="ttdoc">get a value (explicit); special case</div><div class="ttdef"><b>Definition:</b> json.hpp:17225</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_ad26a823483846a12d890c3feed3097eb"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26a823483846a12d890c3feed3097eb">nlohmann::detail::primitive_iterator_t::set_end</a></div><div class="ttdeci">void set_end() noexcept</div><div class="ttdoc">set iterator to a defined past the end</div><div class="ttdef"><b>Definition:</b> json.hpp:9196</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_a6b6665e467ebabe0c0f7418d3fe4b118"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a6b6665e467ebabe0c0f7418d3fe4b118">nlohmann::detail::dtoa_impl::diyfp::normalize_to</a></div><div class="ttdeci">static diyfp normalize_to(const diyfp &amp;x, const int target_exponent) noexcept</div><div class="ttdoc">normalize x such that the result has the exponent E</div><div class="ttdef"><b>Definition:</b> json.hpp:12806</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__string__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__string__type.html">nlohmann::detail::is_compatible_string_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2667</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac31f12587d2f1a3be5ffc394aa9d72a4"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac31f12587d2f1a3be5ffc394aa9d72a4">nlohmann::basic_json::swap</a></div><div class="ttdeci">void swap(object_t &amp;other)</div><div class="ttdoc">exchanges the values</div><div class="ttdef"><b>Definition:</b> json.hpp:20119</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a849368ca71af3a93d576939d486f61c7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a849368ca71af3a93d576939d486f61c7">nlohmann::basic_json::operator=</a></div><div class="ttdeci">basic_json &amp; operator=(basic_json other) noexcept(std::is_nothrow_move_constructible&lt; value_t &gt;::value and std::is_nothrow_move_assignable&lt; value_t &gt;::value and std::is_nothrow_move_constructible&lt; json_value &gt;::value and std::is_nothrow_move_assignable&lt; json_value &gt;::value)</div><div class="ttdoc">copy assignment</div><div class="ttdef"><b>Definition:</b> json.hpp:16469</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a0246de16ece16293f2917dfa5d96e278"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a0246de16ece16293f2917dfa5d96e278">nlohmann::detail::json_reverse_iterator::json_reverse_iterator</a></div><div class="ttdeci">json_reverse_iterator(const typename base_iterator::iterator_type &amp;it) noexcept</div><div class="ttdoc">create reverse iterator from iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9992</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_ae21f7872c334c77d03ae033cb0749b1c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae21f7872c334c77d03ae033cb0749b1c">nlohmann::detail::json_sax_dom_callback_parser::number_float</a></div><div class="ttdeci">bool number_float(number_float_t val, const string_t &amp;)</div><div class="ttdef"><b>Definition:</b> json.hpp:4685</div></div>
<div class="ttc" id="ajson_8hpp_html_a1850f57fcda72becebc7033a2e10e77b"><div class="ttname"><a href="json_8hpp.html#a1850f57fcda72becebc7033a2e10e77b">JSON_HEDLEY_DIAGNOSTIC_PUSH</a></div><div class="ttdeci">#define JSON_HEDLEY_DIAGNOSTIC_PUSH</div><div class="ttdef"><b>Definition:</b> json.hpp:735</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6362b88718eb5c6d4fed6a61eed44b95"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6362b88718eb5c6d4fed6a61eed44b95">nlohmann::basic_json::is_primitive</a></div><div class="ttdeci">constexpr bool is_primitive() const noexcept</div><div class="ttdoc">return whether type is primitive</div><div class="ttdef"><b>Definition:</b> json.hpp:16642</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_ae952990886ca1756229f916661a8af81"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae952990886ca1756229f916661a8af81">nlohmann::detail::primitive_iterator_t::get_value</a></div><div class="ttdeci">constexpr difference_type get_value() const noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9184</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4_html_a7c3949672ddb45095cc2527635feef0b"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html#a7c3949672ddb45095cc2527635feef0b">nlohmann::detail::external_constructor&lt; value_t::number_integer &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, typename BasicJsonType::number_integer_t val) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3542</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a45a7e301c23b5b90417baf2277f40b1d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a45a7e301c23b5b90417baf2277f40b1d">nlohmann::detail::primitive_iterator_t::is_end</a></div><div class="ttdeci">constexpr bool is_end() const noexcept</div><div class="ttdoc">return whether the iterator is at end</div><div class="ttdef"><b>Definition:</b> json.hpp:9208</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098aaf1f040fcd2f674d2e5893d7a731078f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aaf1f040fcd2f674d2e5893d7a731078f">nlohmann::detail::lexer::token_type::value_unsigned</a></div><div class="ttdeci">@ value_unsigned</div><div class="ttdoc">an unsigned integer use get_number_unsigned() for actual value</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7c43ed2a3004c1fa9543913f37b9fca9"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7c43ed2a3004c1fa9543913f37b9fca9">nlohmann::basic_json::merge_patch</a></div><div class="ttdeci">void merge_patch(const basic_json &amp;apply_patch)</div><div class="ttdoc">applies a JSON Merge Patch</div><div class="ttdef"><b>Definition:</b> json.hpp:22581</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">nlohmann::detail::json_sax_dom_parser</a></div><div class="ttdoc">SAX implementation to create a JSON value from SAX events.</div><div class="ttdef"><b>Definition:</b> json.hpp:4454</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1index__sequence_html_a2eca43d08fc1eb68bd5fa75b6714d21d"><div class="ttname"><a href="structnlohmann_1_1detail_1_1index__sequence.html#a2eca43d08fc1eb68bd5fa75b6714d21d">nlohmann::detail::index_sequence&lt; I1...,(sizeof...(I1)+I2)... &gt;::value_type</a></div><div class="ttdeci">std::size_t value_type</div><div class="ttdef"><b>Definition:</b> json.hpp:2202</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">nlohmann::detail::value_t::number_float</a></div><div class="ttdeci">@ number_float</div><div class="ttdoc">number value (floating-point)</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a89eb3928f57903677051c80534be9cb1"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a89eb3928f57903677051c80534be9cb1">nlohmann::basic_json::find</a></div><div class="ttdeci">iterator find(KeyT &amp;&amp;key)</div><div class="ttdoc">find an element in a JSON object</div><div class="ttdef"><b>Definition:</b> json.hpp:18520</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_abecbf0c73c7fe963a699738065177bc3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#abecbf0c73c7fe963a699738065177bc3">nlohmann::detail::primitive_iterator_t::operator--</a></div><div class="ttdeci">primitive_iterator_t &amp; operator--() noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9248</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1index__sequence_html_a7ac529419787d775f52408135304b337"><div class="ttname"><a href="structnlohmann_1_1detail_1_1index__sequence.html#a7ac529419787d775f52408135304b337">nlohmann::detail::index_sequence::size</a></div><div class="ttdeci">static constexpr std::size_t size() noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:2203</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html">nlohmann::json_pointer</a></div><div class="ttdoc">JSON Pointer.</div><div class="ttdef"><b>Definition:</b> json.hpp:2435</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_afdaacce1edb7145e0434e014f0e8685a"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#afdaacce1edb7145e0434e014f0e8685a">nlohmann::json_pointer::parent_pointer</a></div><div class="ttdeci">json_pointer parent_pointer() const</div><div class="ttdoc">returns the parent of this JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10295</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">nlohmann::detail::lexer::token_type</a></div><div class="ttdeci">token_type</div><div class="ttdoc">token types for the parser</div><div class="ttdef"><b>Definition:</b> json.hpp:7170</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_aff77f861ba336df48c9786a993941397"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aff77f861ba336df48c9786a993941397">nlohmann::detail::json_sax_dom_parser::number_integer</a></div><div class="ttdeci">bool number_integer(number_integer_t val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4490</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1other__error_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1other__error.html">nlohmann::detail::other_error</a></div><div class="ttdoc">exception indicating other library errors</div><div class="ttdef"><b>Definition:</b> json.hpp:2160</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a14e34931965064b26e118eb72cbd5e25"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25">nlohmann::detail::parser::sax_parse</a></div><div class="ttdeci">bool sax_parse(SAX *sax, const bool strict=true)</div><div class="ttdef"><b>Definition:</b> json.hpp:8802</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__buffer__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">nlohmann::detail::input_buffer_adapter</a></div><div class="ttdoc">input adapter for buffer input</div><div class="ttdef"><b>Definition:</b> json.hpp:3994</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_a10accadf05a172fdc69a016bec201e81"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a10accadf05a172fdc69a016bec201e81">nlohmann::detail::iteration_proxy_value::operator*</a></div><div class="ttdeci">iteration_proxy_value &amp; operator*()</div><div class="ttdoc">dereference operator (needed for range-based for)</div><div class="ttdef"><b>Definition:</b> json.hpp:3323</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a4e5d0a3bee433104ef87366e00536e01"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a4e5d0a3bee433104ef87366e00536e01">nlohmann::detail::json_reverse_iterator::operator+=</a></div><div class="ttdeci">json_reverse_iterator &amp; operator+=(difference_type i)</div><div class="ttdoc">add to iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:10023</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_aa2392138bf8307df1994dc7eb22d51ce"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#aa2392138bf8307df1994dc7eb22d51ce">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(T(&amp;array)[N])</div><div class="ttdoc">input adapter for array</div><div class="ttdef"><b>Definition:</b> json.hpp:4284</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebeaf63e2a2468a37aa4f394fcc3bcb8249c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeaf63e2a2468a37aa4f394fcc3bcb8249c">nlohmann::detail::parser::parse_event_t::object_end</a></div><div class="ttdeci">@ object_end</div><div class="ttdoc">the parser read } and finished processing a JSON object</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types.html">nlohmann::detail::iterator_types</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2279</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a59e1ea5e9c8d25346a564bf9287a5c2a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a59e1ea5e9c8d25346a564bf9287a5c2a">nlohmann::detail::json_sax_acceptor::key</a></div><div class="ttdeci">bool key(string_t &amp;)</div><div class="ttdef"><b>Definition:</b> json.hpp:4983</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aef5c8ea108f4d2b03fb4a635617510de"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">nlohmann::detail::from_json</a></div><div class="ttdeci">void from_json(const BasicJsonType &amp;j, std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; &amp;m)</div><div class="ttdef"><b>Definition:</b> json.hpp:3224</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4c919102a9b4fe0d588af64801436082"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">nlohmann::basic_json::boolean_t</a></div><div class="ttdeci">BooleanType boolean_t</div><div class="ttdoc">a type for a boolean</div><div class="ttdef"><b>Definition:</b> json.hpp:15151</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_adbf329a18c5cf854a3477327afd2200b"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#adbf329a18c5cf854a3477327afd2200b">nlohmann::detail::dtoa_impl::get_cached_power_for_binary_exponent</a></div><div class="ttdeci">cached_power get_cached_power_for_binary_exponent(int e)</div><div class="ttdef"><b>Definition:</b> json.hpp:12970</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a07eab82f6c82d606787eee9ad73d2bda"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a07eab82f6c82d606787eee9ad73d2bda">nlohmann::json_sax::string</a></div><div class="ttdeci">virtual bool string(string_t &amp;val)=0</div><div class="ttdoc">a string was read</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a022b65246f82c87526940248dc9df6f5"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a022b65246f82c87526940248dc9df6f5">nlohmann::basic_json::from_msgpack</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(A1 &amp;&amp;a1, A2 &amp;&amp;a2, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in MessagePack format</div><div class="ttdef"><b>Definition:</b> json.hpp:21642</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">nlohmann::detail::value_t::number_integer</a></div><div class="ttdeci">@ number_integer</div><div class="ttdoc">number value (signed integer)</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1cfa9ae5e7c2434cab4cfe69bffffe11"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1cfa9ae5e7c2434cab4cfe69bffffe11">nlohmann::basic_json::update</a></div><div class="ttdeci">void update(const_reference j)</div><div class="ttdoc">updates a JSON object from another object, overwriting existing keys</div><div class="ttdef"><b>Definition:</b> json.hpp:19952</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1detector_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1detector.html">nlohmann::detail::detector</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2350</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a4f636086fa8e7cf26c35c8afd50903ce"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce">nlohmann::detail::json_sax_dom_callback_parser::parser_callback_t</a></div><div class="ttdeci">typename BasicJsonType::parser_callback_t parser_callback_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4643</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a32f5ddd06562edce43ee86f5b5c2031b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a32f5ddd06562edce43ee86f5b5c2031b">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(const std::wstring &amp;ws)</div><div class="ttdef"><b>Definition:</b> json.hpp:4212</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__tuple_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__tuple.html">nlohmann::detail::is_constructible_tuple</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2806</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_afec9434e54590f10df51b062973d4daf"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#afec9434e54590f10df51b062973d4daf">nlohmann::detail::json_sax_dom_callback_parser::json_sax_dom_callback_parser</a></div><div class="ttdeci">json_sax_dom_callback_parser(BasicJsonType &amp;r, const parser_callback_t cb, const bool allow_exceptions_=true)</div><div class="ttdef"><b>Definition:</b> json.hpp:4646</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__vector__adapter_html_a9c4fbf88fda356837038ec30a264cd3e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__vector__adapter.html#a9c4fbf88fda356837038ec30a264cd3e">nlohmann::detail::output_vector_adapter::output_vector_adapter</a></div><div class="ttdeci">output_vector_adapter(std::vector&lt; CharType &gt; &amp;vec) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:11214</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a0dd9c415b94a02ff2aa25da75e52da30"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a0dd9c415b94a02ff2aa25da75e52da30">nlohmann::detail::iter_impl::operator-</a></div><div class="ttdeci">iter_impl operator-(difference_type i) const</div><div class="ttdoc">subtract from iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9853</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_a1ab8c44e3772c03651b5ad07216043cf"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1ab8c44e3772c03651b5ad07216043cf">nlohmann::detail::iteration_proxy_value::iterator_category</a></div><div class="ttdeci">std::input_iterator_tag iterator_category</div><div class="ttdef"><b>Definition:</b> json.hpp:3304</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5c8bb5200f5eac10d31e26be46e5b1ac"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5c8bb5200f5eac10d31e26be46e5b1ac">nlohmann::basic_json::operator&lt;=</a></div><div class="ttdeci">friend bool operator&lt;=(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: less than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20483</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a27921dafadb3bbefd180235ec763e3ea"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a27921dafadb3bbefd180235ec763e3ea">nlohmann::basic_json::update</a></div><div class="ttdeci">void update(const_iterator first, const_iterator last)</div><div class="ttdoc">updates a JSON object from another object, overwriting existing keys</div><div class="ttdef"><b>Definition:</b> json.hpp:20003</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a943e8cb182d0f2365c76d64b42eaa6fd"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">nlohmann::basic_json::is_boolean</a></div><div class="ttdeci">constexpr bool is_boolean() const noexcept</div><div class="ttdoc">return whether value is a boolean</div><div class="ttdef"><b>Definition:</b> json.hpp:16713</div></div>
<div class="ttc" id="ajson_8hpp_html_a28d7e3b2d26bd5b8a3806da3db7dea03"><div class="ttname"><a href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div><div class="ttdeci">#define JSON_HEDLEY_WARN_UNUSED_RESULT</div><div class="ttdef"><b>Definition:</b> json.hpp:893</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a3d4b15d32d096e3776c5d2c773b524f5"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a3d4b15d32d096e3776c5d2c773b524f5">nlohmann::json_pointer::to_string</a></div><div class="ttdeci">std::string to_string() const</div><div class="ttdoc">return a string representation of the JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10138</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_aaa69255e757a6ecc4403a2aa4931fc60"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aaa69255e757a6ecc4403a2aa4931fc60">nlohmann::detail::json_sax_acceptor::string</a></div><div class="ttdeci">bool string(string_t &amp;)</div><div class="ttdef"><b>Definition:</b> json.hpp:4973</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_ad250ad4f2b4af4a497e727c963162ff1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1">nlohmann::detail::parser::parser_callback_t</a></div><div class="ttdeci">std::function&lt; bool(int depth, parse_event_t event, BasicJsonType &amp;parsed)&gt; parser_callback_t</div><div class="ttdef"><b>Definition:</b> json.hpp:8711</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a71dd7adfca43660c10e6624f4b5c290c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a71dd7adfca43660c10e6624f4b5c290c">nlohmann::basic_json::items</a></div><div class="ttdeci">iteration_proxy&lt; const_iterator &gt; items() const noexcept</div><div class="ttdoc">helper to access iterator member functions in range-based for</div><div class="ttdef"><b>Definition:</b> json.hpp:19067</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a0ff28dac23f2bdecee9564d07f51dcdc"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">nlohmann::basic_json::begin</a></div><div class="ttdeci">iterator begin() noexcept</div><div class="ttdoc">returns an iterator to the first element</div><div class="ttdef"><b>Definition:</b> json.hpp:18674</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_a1fc63b88a585fa39942007aab69a74e6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6">nlohmann::detail::iteration_proxy_value::string_type</a></div><div class="ttdeci">typename std::remove_cv&lt; typename std::remove_reference&lt; decltype(std::declval&lt; IteratorType &gt;().key()) &gt;::type &gt;::type string_type</div><div class="ttdef"><b>Definition:</b> json.hpp:3305</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_af7cb5e5fe06ea908b0ce4ed762919759"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#af7cb5e5fe06ea908b0ce4ed762919759">nlohmann::detail::json_sax_dom_parser::end_array</a></div><div class="ttdeci">bool end_array()</div><div class="ttdef"><b>Definition:</b> json.hpp:4553</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab4384af330b79de0e5f279576803a2c7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab4384af330b79de0e5f279576803a2c7">nlohmann::basic_json::push_back</a></div><div class="ttdeci">void push_back(const basic_json &amp;val)</div><div class="ttdoc">add an object to an array</div><div class="ttdef"><b>Definition:</b> json.hpp:19443</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4_html_a7ede7749f186f1a6a46c08abb607fd5c"><div class="ttname"><a href="structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html#a7ede7749f186f1a6a46c08abb607fd5c">nlohmann::detail::wide_string_input_helper&lt; WideStringType, 2 &gt;::fill_buffer</a></div><div class="ttdeci">static void fill_buffer(const WideStringType &amp;str, size_t &amp;current_wchar, std::array&lt; std::char_traits&lt; char &gt;::int_type, 4 &gt; &amp;utf8_bytes, size_t &amp;utf8_bytes_index, size_t &amp;utf8_bytes_filled)</div><div class="ttdef"><b>Definition:</b> json.hpp:4089</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__string__adapter_html_af3a49ecd0d23fe56ac21e13d8752abc7"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__string__adapter.html#af3a49ecd0d23fe56ac21e13d8752abc7">nlohmann::detail::output_string_adapter::output_string_adapter</a></div><div class="ttdeci">output_string_adapter(StringType &amp;s) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:11262</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__type__impl.html">nlohmann::detail::is_compatible_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2783</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5d9a89ac7ed08171a22dc6d65d033c09"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5d9a89ac7ed08171a22dc6d65d033c09">nlohmann::basic_json::to_cbor</a></div><div class="ttdeci">static void to_cbor(const basic_json &amp;j, detail::output_adapter&lt; uint8_t &gt; o)</div><div class="ttdef"><b>Definition:</b> json.hpp:21125</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__array__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__array__type.html">nlohmann::detail::is_constructible_array_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2752</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4_html_a0809c5949d22f08a993231d2fdf285f0"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a0809c5949d22f08a993231d2fdf285f0">nlohmann::detail::iterator_traits&lt; T *, enable_if_t&lt; std::is_object&lt; T &gt;::value &gt; &gt;::reference</a></div><div class="ttdeci">T &amp; reference</div><div class="ttdef"><b>Definition:</b> json.hpp:2314</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a88e38c8e60ba9769b334c192b830047b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a88e38c8e60ba9769b334c192b830047b">nlohmann::detail::primitive_iterator_t::operator++</a></div><div class="ttdeci">const primitive_iterator_t operator++(int) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9241</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebea3c6e0b8a9c15224a8228b9a98ca1531d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea3c6e0b8a9c15224a8228b9a98ca1531d">nlohmann::detail::parser::parse_event_t::key</a></div><div class="ttdeci">@ key</div><div class="ttdoc">the parser read a key of a value in an object</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_afe7c1303357e19cea9527af4e9a31d8f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">nlohmann::basic_json::difference_type</a></div><div class="ttdeci">std::ptrdiff_t difference_type</div><div class="ttdoc">a type to represent differences between iterators</div><div class="ttdef"><b>Definition:</b> json.hpp:14807</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_ad9e091f5c70b34b5b1abc1ab15fd9106"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#ad9e091f5c70b34b5b1abc1ab15fd9106">nlohmann::detail::iter_impl::iterator_category</a></div><div class="ttdeci">std::bidirectional_iterator_tag iterator_category</div><div class="ttdef"><b>Definition:</b> json.hpp:9367</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_aa64e7a650952174037d32028de582c12"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aa64e7a650952174037d32028de582c12">nlohmann::detail::json_sax_dom_callback_parser::end_array</a></div><div class="ttdeci">bool end_array()</div><div class="ttdef"><b>Definition:</b> json.hpp:4778</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_ac1b4e524746bf8b790b2b776048b93c4"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#ac1b4e524746bf8b790b2b776048b93c4">nlohmann::detail::null_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().null()) null_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5031</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4f73d4cee67ea328d785979c22af0ae1"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4f73d4cee67ea328d785979c22af0ae1">nlohmann::basic_json::rend</a></div><div class="ttdeci">const_reverse_iterator rend() const noexcept</div><div class="ttdoc">returns a const reverse iterator to one before the first</div><div class="ttdef"><b>Definition:</b> json.hpp:18860</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1a86d444bfeaa9518d2421aedd74444a"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1a86d444bfeaa9518d2421aedd74444a">nlohmann::basic_json::empty</a></div><div class="ttdeci">bool empty() const noexcept</div><div class="ttdoc">checks whether the container is empty.</div><div class="ttdef"><b>Definition:</b> json.hpp:19123</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a926c9065dbed1bedc17857a813f7a46f"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a926c9065dbed1bedc17857a813f7a46f">nlohmann::json_pointer::operator/</a></div><div class="ttdeci">friend json_pointer operator/(const json_pointer &amp;ptr, std::string token)</div><div class="ttdoc">create a new JSON pointer by appending the unescaped token at the end of the JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10257</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a></div><div class="ttdoc">lexical analysis</div><div class="ttdef"><b>Definition:</b> json.hpp:7161</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_adfba2db547283a7c6a5df9a32e72efc5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#adfba2db547283a7c6a5df9a32e72efc5">nlohmann::detail::json_ref::json_ref</a></div><div class="ttdeci">json_ref(std::initializer_list&lt; json_ref &gt; init)</div><div class="ttdef"><b>Definition:</b> json.hpp:11114</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4_html_a9b043cfe0fdfb3e9665428fb2be9cea1"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a9b043cfe0fdfb3e9665428fb2be9cea1">nlohmann::detail::iterator_traits&lt; T *, enable_if_t&lt; std::is_object&lt; T &gt;::value &gt; &gt;::iterator_category</a></div><div class="ttdeci">std::random_access_iterator_tag iterator_category</div><div class="ttdef"><b>Definition:</b> json.hpp:2310</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a510dfa15b01e9a8afe31600a27b28199"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a510dfa15b01e9a8afe31600a27b28199">nlohmann::detail::to_json_tuple_impl</a></div><div class="ttdeci">void to_json_tuple_impl(BasicJsonType &amp;j, const Tuple &amp;t, index_sequence&lt; Idx... &gt;)</div><div class="ttdef"><b>Definition:</b> json.hpp:3764</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_ad427febda4997cbd8345a2596af66649"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad427febda4997cbd8345a2596af66649">nlohmann::detail::json_sax_dom_parser::key</a></div><div class="ttdeci">bool key(string_t &amp;val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4527</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a82ed080814fa656191a537284bb0c575"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a82ed080814fa656191a537284bb0c575">nlohmann::json_sax::boolean</a></div><div class="ttdeci">virtual bool boolean(bool val)=0</div><div class="ttdoc">a boolean value was read</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4_html_abfb2a6eec0bc21e8a7438546aebc55d8"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#abfb2a6eec0bc21e8a7438546aebc55d8">nlohmann::detail::external_constructor&lt; value_t::array &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, const typename BasicJsonType::array_t &amp;arr)</div><div class="ttdef"><b>Definition:</b> json.hpp:3554</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_ae22803d442d483041d17239615f83b58"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#ae22803d442d483041d17239615f83b58">nlohmann::detail::json_reverse_iterator::value</a></div><div class="ttdeci">reference value() const</div><div class="ttdoc">return the value of an iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:10060</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a00ce828d0fe58046c10e0445504df7bf"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a00ce828d0fe58046c10e0445504df7bf">nlohmann::detail::primitive_iterator_t::operator+</a></div><div class="ttdeci">primitive_iterator_t operator+(difference_type n) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9223</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a476c4634b93546a1a555725e551c2b33"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a476c4634b93546a1a555725e551c2b33">nlohmann::detail::json_sax_dom_parser::boolean</a></div><div class="ttdeci">bool boolean(bool val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4484</div></div>
<div class="ttc" id="ajson_8hpp_html_a80b7254e63f199a1f656f07ae551f632"><div class="ttname"><a href="json_8hpp.html#a80b7254e63f199a1f656f07ae551f632">NLOHMANN_BASIC_JSON_TPL</a></div><div class="ttdeci">#define NLOHMANN_BASIC_JSON_TPL</div><div class="ttdef"><b>Definition:</b> json.hpp:1822</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parse__error_html_a9505aaa1ca943be927eec7cc579592ff"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parse__error.html#a9505aaa1ca943be927eec7cc579592ff">nlohmann::detail::parse_error::byte</a></div><div class="ttdeci">const std::size_t byte</div><div class="ttdoc">byte index of the parse error</div><div class="ttdef"><b>Definition:</b> json.hpp:1971</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a5064b6655d88a50ae16665cf7751c0ee"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a5064b6655d88a50ae16665cf7751c0ee">nlohmann::detail::lexer::token_type::value_integer</a></div><div class="ttdeci">@ value_integer</div><div class="ttdoc">a signed integer use get_number_integer() for actual value</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a30ff63a4d671eb14f652356cd934320c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a30ff63a4d671eb14f652356cd934320c">nlohmann::basic_json::get</a></div><div class="ttdeci">BasicJsonType get() const</div><div class="ttdoc">get special-case overload</div><div class="ttdef"><b>Definition:</b> json.hpp:17124</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a2b4ff5146ed46993527e4a67d99c1355"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a2b4ff5146ed46993527e4a67d99c1355">nlohmann::detail::json_sax_dom_parser::number_unsigned</a></div><div class="ttdeci">bool number_unsigned(number_unsigned_t val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4496</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2_html_a551e9ee372c1b24b632e6b668c231a62"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html#a551e9ee372c1b24b632e6b668c231a62">nlohmann::detail::is_compatible_object_type_impl&lt; BasicJsonType, CompatibleObjectType, enable_if_t&lt; is_detected&lt; mapped_type_t, CompatibleObjectType &gt;::value and is_detected&lt; key_type_t, CompatibleObjectType &gt;::value &gt; &gt;::object_t</a></div><div class="ttdeci">typename BasicJsonType::object_t object_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2605</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__stream__adapter_html_ae44ed343cb1a716248547f48dd045b6a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__stream__adapter.html#ae44ed343cb1a716248547f48dd045b6a">nlohmann::detail::output_stream_adapter::output_stream_adapter</a></div><div class="ttdeci">output_stream_adapter(std::basic_ostream&lt; CharType &gt; &amp;s) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:11238</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_aeab0e2b5da70b3bdebecd5b1a6ee66a6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#aeab0e2b5da70b3bdebecd5b1a6ee66a6">nlohmann::detail::iter_impl::operator!=</a></div><div class="ttdeci">bool operator!=(const iter_impl &amp;other) const</div><div class="ttdoc">comparison: not equal</div><div class="ttdef"><b>Definition:</b> json.hpp:9730</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__string__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__string__type.html">nlohmann::detail::is_constructible_string_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2686</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a9d9b005906106e12aed738f97d7fee42"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a9d9b005906106e12aed738f97d7fee42">nlohmann::detail::primitive_iterator_t::set_begin</a></div><div class="ttdeci">void set_begin() noexcept</div><div class="ttdoc">set iterator to a defined beginning</div><div class="ttdef"><b>Definition:</b> json.hpp:9190</div></div>
<div class="ttc" id="ajson_8hpp_html_a307e0238ebc35e99ea45c68823eb83eb"><div class="ttname"><a href="json_8hpp.html#a307e0238ebc35e99ea45c68823eb83eb">NLOHMANN_JSON_VERSION_PATCH</a></div><div class="ttdeci">#define NLOHMANN_JSON_VERSION_PATCH</div><div class="ttdef"><b>Definition:</b> json.hpp:35</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_aeb26771af54ad73598c1a0430d65d884"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aeb26771af54ad73598c1a0430d65d884">nlohmann::detail::dtoa_impl::diyfp::sub</a></div><div class="ttdeci">static diyfp sub(const diyfp &amp;x, const diyfp &amp;y) noexcept</div><div class="ttdoc">returns x - y</div><div class="ttdef"><b>Definition:</b> json.hpp:12712</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_a8a31d6c588d6c3c06b62008fd5d36c6c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#a8a31d6c588d6c3c06b62008fd5d36c6c">nlohmann::detail::json_ref::json_ref</a></div><div class="ttdeci">json_ref(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> json.hpp:11121</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5e48a7893520e1314bf0c9723e26ea2a"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">nlohmann::basic_json::object_t</a></div><div class="ttdeci">ObjectType&lt; StringType, basic_json, object_comparator_t, AllocatorType&lt; std::pair&lt; const StringType, basic_json &gt; &gt;&gt; object_t</div><div class="ttdoc">a type for an object</div><div class="ttdef"><b>Definition:</b> json.hpp:15026</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__adapter_html_a43b3ba852e6a2c3f4d312543bb04c00d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__adapter.html#a43b3ba852e6a2c3f4d312543bb04c00d">nlohmann::detail::output_adapter::output_adapter</a></div><div class="ttdeci">output_adapter(std::basic_ostream&lt; CharType &gt; &amp;s)</div><div class="ttdef"><b>Definition:</b> json.hpp:11288</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a213bc67c32a30c68ac6bf06f5195d482"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a213bc67c32a30c68ac6bf06f5195d482">nlohmann::json_pointer::back</a></div><div class="ttdeci">const std::string &amp; back() const</div><div class="ttdoc">return last reference token</div><div class="ttdef"><b>Definition:</b> json.hpp:10344</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_aac3041cd2b9291e64fee38db422863c9"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#aac3041cd2b9291e64fee38db422863c9">nlohmann::detail::lexer::scan</a></div><div class="ttdeci">token_type scan()</div><div class="ttdef"><b>Definition:</b> json.hpp:8540</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html">nlohmann::detail::json_ref</a></div><div class="ttdef"><b>Definition:</b> json.hpp:11101</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a8238e8090cbb4ed8a22cbc97bfb833a5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a8238e8090cbb4ed8a22cbc97bfb833a5">nlohmann::detail::json_sax_acceptor::start_array</a></div><div class="ttdeci">bool start_array(std::size_t=std::size_t(-1))</div><div class="ttdef"><b>Definition:</b> json.hpp:4993</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_ab4d22cdb6521ee3508db496dea66711e"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#ab4d22cdb6521ee3508db496dea66711e">nlohmann::detail::get_template_function</a></div><div class="ttdeci">decltype(std::declval&lt; T &gt;().template get&lt; U &gt;()) get_template_function</div><div class="ttdef"><b>Definition:</b> json.hpp:2516</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7639e0834df2bc719a04ffea89b31abc"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7639e0834df2bc719a04ffea89b31abc">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(CompatibleType &amp;&amp;val) noexcept(noexcept(JSONSerializer&lt; U &gt;::to_json(std::declval&lt; basic_json_t &amp; &gt;(), std::forward&lt; CompatibleType &gt;(val))))</div><div class="ttdoc">create a JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:15843</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__non__default__from__json_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__non__default__from__json.html">nlohmann::detail::has_non_default_from_json</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2536</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_ad1b9f3681fadbbb2e0127f5c8a99c662"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad1b9f3681fadbbb2e0127f5c8a99c662">nlohmann::detail::json_sax_dom_parser::is_errored</a></div><div class="ttdeci">constexpr bool is_errored() const</div><div class="ttdef"><b>Definition:</b> json.hpp:4587</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__stream__adapter_html_af487152e4606d013eb4ec6a90eaf82ea"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__stream__adapter.html#af487152e4606d013eb4ec6a90eaf82ea">nlohmann::detail::input_stream_adapter::input_stream_adapter</a></div><div class="ttdeci">input_stream_adapter(std::istream &amp;i)</div><div class="ttdef"><b>Definition:</b> json.hpp:3963</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parse__error_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parse__error.html">nlohmann::detail::parse_error</a></div><div class="ttdoc">exception indicating a parse error</div><div class="ttdef"><b>Definition:</b> json.hpp:1935</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1wide__string__input__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html">nlohmann::detail::wide_string_input_adapter</a></div><div class="ttdef"><b>Definition:</b> json.hpp:4151</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a8d1a7d46b3fcd06edd034f04ededb5e4"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a8d1a7d46b3fcd06edd034f04ededb5e4">nlohmann::detail::primitive_iterator_t::is_begin</a></div><div class="ttdeci">constexpr bool is_begin() const noexcept</div><div class="ttdoc">return whether the iterator can be dereferenced</div><div class="ttdef"><b>Definition:</b> json.hpp:9202</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aec53c029383b34a72182210e58fadb79"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aec53c029383b34a72182210e58fadb79">nlohmann::detail::end_array_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().end_array()) end_array_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5069</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a122640e7e2db1814fc7bbb3c122ec76e"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a122640e7e2db1814fc7bbb3c122ec76e">nlohmann::basic_json::operator==</a></div><div class="ttdeci">friend bool operator==(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20214</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_ae132f8cd5bb24c5e9b40ad0eafedf1c2"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">nlohmann::detail::input_adapter_t</a></div><div class="ttdeci">std::shared_ptr&lt; input_adapter_protocol &gt; input_adapter_t</div><div class="ttdoc">a type to simplify interfaces</div><div class="ttdef"><b>Definition:</b> json.hpp:3912</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a124c319566198d9f092c5bebea46ce77"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a124c319566198d9f092c5bebea46ce77">nlohmann::basic_json::operator&gt;</a></div><div class="ttdeci">friend bool operator&gt;(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: greater than</div><div class="ttdef"><b>Definition:</b> json.hpp:20551</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__vector__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__vector__adapter.html">nlohmann::detail::output_vector_adapter</a></div><div class="ttdoc">output adapter for byte vectors</div><div class="ttdef"><b>Definition:</b> json.hpp:11211</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4_html_a443e6a62f5fb2c545fc71c751b98ca8d"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a443e6a62f5fb2c545fc71c751b98ca8d">nlohmann::detail::iterator_traits&lt; T *, enable_if_t&lt; std::is_object&lt; T &gt;::value &gt; &gt;::value_type</a></div><div class="ttdeci">T value_type</div><div class="ttdef"><b>Definition:</b> json.hpp:2311</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html">nlohmann::detail::iter_impl</a></div><div class="ttdoc">a template for a bidirectional iterator for the basic_json class This class implements a both iterato...</div><div class="ttdef"><b>Definition:</b> json.hpp:9346</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1internal__iterator_html_a8294a6e6f01b58e1cce8fbae66a50b5d"><div class="ttname"><a href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">nlohmann::detail::internal_iterator::array_iterator</a></div><div class="ttdeci">BasicJsonType::array_t::iterator array_iterator</div><div class="ttdoc">iterator for JSON arrays</div><div class="ttdef"><b>Definition:</b> json.hpp:9292</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4_html_a8822d43f0e20c5a28be329f9ca7de6c4"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a8822d43f0e20c5a28be329f9ca7de6c4">nlohmann::detail::external_constructor&lt; value_t::string &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, const CompatibleStringType &amp;str)</div><div class="ttdef"><b>Definition:</b> json.hpp:3506</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">nlohmann::detail::value_t::string</a></div><div class="ttdeci">@ string</div><div class="ttdoc">string value</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a5be8001be099c6b82310f4d387b953ce"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce">nlohmann::detail::iter_impl::reference</a></div><div class="ttdeci">typename std::conditional&lt; std::is_const&lt; BasicJsonType &gt;::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference &gt;::type reference</div><div class="ttdoc">defines a reference to the type iterated over (value_type)</div><div class="ttdef"><b>Definition:</b> json.hpp:9381</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a20997b42262856935b60fc91bf05bf3f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a20997b42262856935b60fc91bf05bf3f">nlohmann::detail::parser::accept</a></div><div class="ttdeci">bool accept(const bool strict=true)</div><div class="ttdoc">public accept interface</div><div class="ttdef"><b>Definition:</b> json.hpp:8794</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8a3dd150c2d1f0df3502d937de0871db"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8a3dd150c2d1f0df3502d937de0871db">nlohmann::basic_json::sax_parse</a></div><div class="ttdeci">static bool sax_parse(detail::input_adapter &amp;&amp;i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true)</div><div class="ttdoc">generate SAX events</div><div class="ttdef"><b>Definition:</b> json.hpp:20814</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a69b596a4a6683b362095c9a139637396"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">nlohmann::basic_json::is_string</a></div><div class="ttdeci">constexpr bool is_string() const noexcept</div><div class="ttdoc">return whether value is a string</div><div class="ttdef"><b>Definition:</b> json.hpp:16894</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parse__error_html_a9fd60ad6bce80fd99686ad332faefd37"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parse__error.html#a9fd60ad6bce80fd99686ad332faefd37">nlohmann::detail::parse_error::create</a></div><div class="ttdeci">static parse_error create(int id_, std::size_t byte_, const std::string &amp;what_arg)</div><div class="ttdef"><b>Definition:</b> json.hpp:1954</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_aa5f250d12ce89c81fdb08900c6a823e8"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">nlohmann::detail::dtoa_impl::diyfp::mul</a></div><div class="ttdeci">static diyfp mul(const diyfp &amp;x, const diyfp &amp;y) noexcept</div><div class="ttdoc">returns x * y</div><div class="ttdef"><b>Definition:</b> json.hpp:12724</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a8ed9e445e03c49c46612eb7f7d55bb61"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a8ed9e445e03c49c46612eb7f7d55bb61">nlohmann::detail::json_reverse_iterator::operator[]</a></div><div class="ttdeci">reference operator[](difference_type n) const</div><div class="ttdoc">access to successor</div><div class="ttdef"><b>Definition:</b> json.hpp:10047</div></div>
<div class="ttc" id="astructnlohmann_1_1adl__serializer_html"><div class="ttname"><a href="structnlohmann_1_1adl__serializer.html">nlohmann::adl_serializer</a></div><div class="ttdoc">default JSONSerializer template argument</div><div class="ttdef"><b>Definition:</b> json.hpp:2409</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__object__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__object__type.html">nlohmann::detail::is_constructible_object_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2648</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a92a167c49c6697b6ffe4f79492c705e5"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5">nlohmann::detail::void_t</a></div><div class="ttdeci">typename make_void&lt; Ts... &gt;::type void_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2267</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4ef190107be36fea6b6c63d71d439c99"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4ef190107be36fea6b6c63d71d439c99">nlohmann::basic_json::to_msgpack</a></div><div class="ttdeci">static void to_msgpack(const basic_json &amp;j, detail::output_adapter&lt; uint8_t &gt; o)</div><div class="ttdef"><b>Definition:</b> json.hpp:21221</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1merge__and__renumber_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1merge__and__renumber.html">nlohmann::detail::merge_and_renumber</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2210</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a0cef30121f02b7fee85e9708148ea0aa"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a0cef30121f02b7fee85e9708148ea0aa">nlohmann::json_sax::number_integer_t</a></div><div class="ttdeci">typename BasicJsonType::number_integer_t number_integer_t</div><div class="ttdoc">type for (signed) integers</div><div class="ttdef"><b>Definition:</b> json.hpp:4336</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5a76b60b26dc8c47256a996d18d967df"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">nlohmann::detail::error_handler_t</a></div><div class="ttdeci">error_handler_t</div><div class="ttdoc">how to treat decoding errors</div><div class="ttdef"><b>Definition:</b> json.hpp:13779</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6b187a22994c12c8cae0dd5ee99dc85e"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6b187a22994c12c8cae0dd5ee99dc85e">nlohmann::basic_json::get</a></div><div class="ttdeci">basic_json get() const</div><div class="ttdoc">get special-case overload</div><div class="ttdef"><b>Definition:</b> json.hpp:17101</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power_html_a21ae81f515f5b08d5bf423775ee56074"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a21ae81f515f5b08d5bf423775ee56074">nlohmann::detail::dtoa_impl::cached_power::f</a></div><div class="ttdeci">std::uint64_t f</div><div class="ttdef"><b>Definition:</b> json.hpp:12958</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aabe623bc8304c2ba92d96d91f390fab4"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aabe623bc8304c2ba92d96d91f390fab4">nlohmann::basic_json::is_discarded</a></div><div class="ttdeci">constexpr bool is_discarded() const noexcept</div><div class="ttdoc">return whether value is discarded</div><div class="ttdef"><b>Definition:</b> json.hpp:16921</div></div>
<div class="ttc" id="ajson_8hpp_html_a0d17bf1a54fc45a04ced6d3aa86a96e3"><div class="ttname"><a href="json_8hpp.html#a0d17bf1a54fc45a04ced6d3aa86a96e3">JSON_HEDLEY_CONST</a></div><div class="ttdeci">#define JSON_HEDLEY_CONST</div><div class="ttdef"><b>Definition:</b> json.hpp:1191</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a9ff93db146174305bce1bc4c54703e11"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a9ff93db146174305bce1bc4c54703e11">nlohmann::detail::iterator_t</a></div><div class="ttdeci">typename T::iterator iterator_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2507</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1wide__string__input__helper_html_ae82d79118fa319a97e4a40568186a922"><div class="ttname"><a href="structnlohmann_1_1detail_1_1wide__string__input__helper.html#ae82d79118fa319a97e4a40568186a922">nlohmann::detail::wide_string_input_helper::fill_buffer</a></div><div class="ttdeci">static void fill_buffer(const WideStringType &amp;str, size_t &amp;current_wchar, std::array&lt; std::char_traits&lt; char &gt;::int_type, 4 &gt; &amp;utf8_bytes, size_t &amp;utf8_bytes_index, size_t &amp;utf8_bytes_filled)</div><div class="ttdef"><b>Definition:</b> json.hpp:4030</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a1c5d30eb51e5e994a3f48bde104d2ce8"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a1c5d30eb51e5e994a3f48bde104d2ce8">nlohmann::detail::dtoa_impl::reinterpret_bits</a></div><div class="ttdeci">Target reinterpret_bits(const Source source)</div><div class="ttdef"><b>Definition:</b> json.hpp:12690</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_af5de621bcf646c332343f9c1e011126c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#af5de621bcf646c332343f9c1e011126c">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const basic_json &amp;other)</div><div class="ttdoc">copy constructor</div><div class="ttdef"><b>Definition:</b> json.hpp:16349</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a33b4bf898b857c962e798fc7f6e86e70"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">nlohmann::basic_json::is_number_float</a></div><div class="ttdeci">constexpr bool is_number_float() const noexcept</div><div class="ttdoc">return whether value is a floating-point number</div><div class="ttdef"><b>Definition:</b> json.hpp:16828</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a9f6bc6f4d4668b4e9a19d8b8ac29da4f"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a9f6bc6f4d4668b4e9a19d8b8ac29da4f">nlohmann::json_pointer::operator/</a></div><div class="ttdeci">friend json_pointer operator/(const json_pointer &amp;ptr, std::size_t array_index)</div><div class="ttdoc">create a new JSON pointer by appending the array-index-token at the end of the JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10277</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_af91beae90c2fb0f931079b3d50a343bc"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc">nlohmann::detail::value_type_t</a></div><div class="ttdeci">typename T::value_type value_type_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2492</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad73f88f70fe5acfa521750a8cd710026"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad73f88f70fe5acfa521750a8cd710026">nlohmann::basic_json::operator&lt;=</a></div><div class="ttdeci">friend bool operator&lt;=(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: less than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20505</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9f68a0af820c3ced7f9d17851ce4c22d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9f68a0af820c3ced7f9d17851ce4c22d">nlohmann::basic_json::is_structured</a></div><div class="ttdeci">constexpr bool is_structured() const noexcept</div><div class="ttdoc">return whether type is structured</div><div class="ttdef"><b>Definition:</b> json.hpp:16669</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a87db51b6b936fb2ea293cdbc8702dcb8"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a87db51b6b936fb2ea293cdbc8702dcb8">nlohmann::basic_json::operator&gt;</a></div><div class="ttdeci">friend bool operator&gt;(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: greater than</div><div class="ttdef"><b>Definition:</b> json.hpp:20529</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88_html_a002983b5c7c0f72b89d2151a6b39627d"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a002983b5c7c0f72b89d2151a6b39627d">nlohmann::detail::is_compatible_integer_type_impl&lt; RealIntegerType, CompatibleNumberIntegerType, enable_if_t&lt; std::is_integral&lt; RealIntegerType &gt;::value and std::is_integral&lt; CompatibleNumberIntegerType &gt;::value and not std::is_same&lt; bool, CompatibleNumberIntegerType &gt;::value &gt; &gt;::CompatibleLimits</a></div><div class="ttdeci">std::numeric_limits&lt; CompatibleNumberIntegerType &gt; CompatibleLimits</div><div class="ttdef"><b>Definition:</b> json.hpp:2768</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5795b029dbf28e0cb2c7a439ec5d0a88"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5795b029dbf28e0cb2c7a439ec5d0a88">nlohmann::basic_json::crend</a></div><div class="ttdeci">const_reverse_iterator crend() const noexcept</div><div class="ttdoc">returns a const reverse iterator to one before the first</div><div class="ttdef"><b>Definition:</b> json.hpp:18918</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a412895af9a582869a4d369a64fb1b6d6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a412895af9a582869a4d369a64fb1b6d6">nlohmann::basic_json::operator&gt;</a></div><div class="ttdeci">friend bool operator&gt;(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: greater than</div><div class="ttdef"><b>Definition:</b> json.hpp:20540</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abfeba47810ca72f2176419942c4e1952"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abfeba47810ca72f2176419942c4e1952">nlohmann::basic_json::clear</a></div><div class="ttdeci">void clear() noexcept</div><div class="ttdoc">clears the contents</div><div class="ttdef"><b>Definition:</b> json.hpp:19335</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_ae01977a9f3c5b3667b7a2929ed91061e"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e">nlohmann::json_sax::string_t</a></div><div class="ttdeci">typename BasicJsonType::string_t string_t</div><div class="ttdoc">type for strings</div><div class="ttdef"><b>Definition:</b> json.hpp:4342</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_af4ac14224fbdd29d3547fcb11bb55c8f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#af4ac14224fbdd29d3547fcb11bb55c8f">nlohmann::basic_json::get_allocator</a></div><div class="ttdeci">static allocator_type get_allocator()</div><div class="ttdoc">returns the allocator associated with the container</div><div class="ttdef"><b>Definition:</b> json.hpp:14834</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__integer__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html">nlohmann::detail::is_compatible_integer_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2757</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_a5e46f0dd3550901b15cf85265808d1ec"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#a5e46f0dd3550901b15cf85265808d1ec">nlohmann::detail::binary_writer::to_char_type</a></div><div class="ttdeci">static CharType to_char_type(std::uint8_t x) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:12592</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a05b681dcb8569b9784c6dccfadb01633"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">nlohmann::detail::dtoa_impl::grisu2</a></div><div class="ttdeci">void grisu2(char *buf, int &amp;len, int &amp;decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus)</div><div class="ttdef"><b>Definition:</b> json.hpp:13472</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aaf363408931d76472ded14017e59c9e8"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aaf363408931d76472ded14017e59c9e8">nlohmann::basic_json::operator&gt;&gt;</a></div><div class="ttdeci">friend std::istream &amp; operator&gt;&gt;(std::istream &amp;i, basic_json &amp;j)</div><div class="ttdoc">deserialize from stream</div><div class="ttdef"><b>Definition:</b> json.hpp:20944</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1from__json__fn_html_a6d14a74e1043072c77892534572d2973"><div class="ttname"><a href="structnlohmann_1_1detail_1_1from__json__fn.html#a6d14a74e1043072c77892534572d2973">nlohmann::detail::from_json_fn::operator()</a></div><div class="ttdeci">auto operator()(const BasicJsonType &amp;j, T &amp;val) const noexcept(noexcept(from_json(j, val))) -&gt; decltype(from_json(j, val), void())</div><div class="ttdef"><b>Definition:</b> json.hpp:3244</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a515e7618392317dbf4b72d3e18bf2ab2"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a515e7618392317dbf4b72d3e18bf2ab2">nlohmann::basic_json::rbegin</a></div><div class="ttdeci">const_reverse_iterator rbegin() const noexcept</div><div class="ttdoc">returns a const reverse iterator to the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18823</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4_html_a17969b14852f43e04353858c87b0f539"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html#a17969b14852f43e04353858c87b0f539">nlohmann::detail::external_constructor&lt; value_t::number_unsigned &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, typename BasicJsonType::number_unsigned_t val) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3530</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a9ab55987c05ec6427ad36082e351cc45"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">nlohmann::detail::json_reverse_iterator::difference_type</a></div><div class="ttdeci">std::ptrdiff_t difference_type</div><div class="ttdef"><b>Definition:</b> json.hpp:9985</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html_a1e31dbfcf9567c8c2d4f0e4eb1b0230a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html#a1e31dbfcf9567c8c2d4f0e4eb1b0230a">nlohmann::detail::binary_reader::little_endianess</a></div><div class="ttdeci">static constexpr bool little_endianess(int num=1) noexcept</div><div class="ttdoc">determine system byte order</div><div class="ttdef"><b>Definition:</b> json.hpp:5268</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4_html_ae7be99eb434f5b5f34692874c272b759"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#ae7be99eb434f5b5f34692874c272b759">nlohmann::detail::iterator_traits&lt; T *, enable_if_t&lt; std::is_object&lt; T &gt;::value &gt; &gt;::difference_type</a></div><div class="ttdeci">ptrdiff_t difference_type</div><div class="ttdef"><b>Definition:</b> json.hpp:2312</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aa16dc469c842fa8a0aaf6f5a95c46bb3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aa16dc469c842fa8a0aaf6f5a95c46bb3">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const BasicJsonType &amp;val)</div><div class="ttdoc">create a JSON value from an existing one</div><div class="ttdef"><b>Definition:</b> json.hpp:15880</div></div>
<div class="ttc" id="ajson_8hpp_html_a6c274f6db2e65c1b66c7d41b06ad690f"><div class="ttname"><a href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a></div><div class="ttdeci">#define JSON_THROW(exception)</div><div class="ttdef"><b>Definition:</b> json.hpp:1754</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098aca11f56dd477c09e06583dbdcda0985f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aca11f56dd477c09e06583dbdcda0985f">nlohmann::detail::lexer::token_type::end_of_input</a></div><div class="ttdeci">@ end_of_input</div><div class="ttdoc">indicating the end of the input buffer</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__adapter_html_a6ad59d1ec534383b430cd7ef8a518539"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__adapter.html#a6ad59d1ec534383b430cd7ef8a518539">nlohmann::detail::output_adapter::output_adapter</a></div><div class="ttdeci">output_adapter(StringType &amp;s)</div><div class="ttdef"><b>Definition:</b> json.hpp:11291</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a68d9eddfd572e8687c1c8107e0505aa6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a68d9eddfd572e8687c1c8107e0505aa6">nlohmann::detail::json_sax_dom_callback_parser::number_integer</a></div><div class="ttdeci">bool number_integer(number_integer_t val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4673</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1index__sequence_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1index__sequence.html">nlohmann::detail::index_sequence</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2199</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a54ffcdfb0a8c5c9a876cd003b404ef4b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a54ffcdfb0a8c5c9a876cd003b404ef4b">nlohmann::detail::json_sax_dom_callback_parser::~json_sax_dom_callback_parser</a></div><div class="ttdeci">~json_sax_dom_callback_parser()=default</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a46afafed69ed4c8ae797afb8445fd42f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a46afafed69ed4c8ae797afb8445fd42f">nlohmann::basic_json::from_ubjson</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(A1 &amp;&amp;a1, A2 &amp;&amp;a2, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in UBJSON format</div><div class="ttdef"><b>Definition:</b> json.hpp:21730</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_a2246b5b40c7c6992153ef174063d6aa6"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a2246b5b40c7c6992153ef174063d6aa6">nlohmann::detail::dtoa_impl::diyfp::normalize</a></div><div class="ttdeci">static diyfp normalize(diyfp x) noexcept</div><div class="ttdoc">normalize x such that the significand is &gt;= 2^(q-1)</div><div class="ttdef"><b>Definition:</b> json.hpp:12789</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_abdfe2a7f464400a7ab572782d14b922f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#abdfe2a7f464400a7ab572782d14b922f">nlohmann::detail::iter_impl::operator++</a></div><div class="ttdeci">iter_impl &amp; operator++()</div><div class="ttdoc">pre-increment (++it)</div><div class="ttdef"><b>Definition:</b> json.hpp:9628</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html">nlohmann::detail::parser</a></div><div class="ttdoc">syntax analysis</div><div class="ttdef"><b>Definition:</b> json.hpp:8684</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9cb592cd85c14f3e845e30d51cf17efb"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9cb592cd85c14f3e845e30d51cf17efb">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">const_reference operator[](size_type idx) const</div><div class="ttdoc">access specified array element</div><div class="ttdef"><b>Definition:</b> json.hpp:17760</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1be31ef2d2934d37a818083a4af44f99"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1be31ef2d2934d37a818083a4af44f99">nlohmann::basic_json::push_back</a></div><div class="ttdeci">void push_back(initializer_list_t init)</div><div class="ttdoc">add an object to an object</div><div class="ttdef"><b>Definition:</b> json.hpp:19548</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aba01953d5d90e676d504863b8d9fdde5"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aba01953d5d90e676d504863b8d9fdde5">nlohmann::basic_json::~basic_json</a></div><div class="ttdeci">~basic_json() noexcept</div><div class="ttdoc">destructor</div><div class="ttdef"><b>Definition:</b> json.hpp:16502</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1wide__string__input__helper_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1wide__string__input__helper.html">nlohmann::detail::wide_string_input_helper</a></div><div class="ttdef"><b>Definition:</b> json.hpp:4027</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abf29131f898b05aad2c01a9c80e7a002"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abf29131f898b05aad2c01a9c80e7a002">nlohmann::basic_json::emplace_back</a></div><div class="ttdeci">reference emplace_back(Args &amp;&amp;... args)</div><div class="ttdoc">add an object to an array</div><div class="ttdef"><b>Definition:</b> json.hpp:19596</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_af2949ac0d70212738030bfda29c5bcc2"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2949ac0d70212738030bfda29c5bcc2">nlohmann::detail::iteration_proxy_value::key</a></div><div class="ttdeci">const string_type &amp; key() const</div><div class="ttdoc">return key of the iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:3350</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab838f000d76662917ffd6ec529569e03"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab838f000d76662917ffd6ec529569e03">nlohmann::basic_json::flatten</a></div><div class="ttdeci">basic_json flatten() const</div><div class="ttdoc">return flattened JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:22012</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power_html_a9e89bc89bb7bf4361f43ea27eed91d23"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">nlohmann::detail::dtoa_impl::cached_power::e</a></div><div class="ttdeci">int e</div><div class="ttdef"><b>Definition:</b> json.hpp:12959</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1file__input__adapter_html_ad59bbc7e3f23dd74475c5cb818784e42"><div class="ttname"><a href="classnlohmann_1_1detail_1_1file__input__adapter.html#ad59bbc7e3f23dd74475c5cb818784e42">nlohmann::detail::file_input_adapter::operator=</a></div><div class="ttdeci">file_input_adapter &amp; operator=(const file_input_adapter &amp;)=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a54aa290ff2f60218a8f35f1ebf81666d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">nlohmann::detail::lexer::get_string</a></div><div class="ttdeci">string_t &amp; get_string()</div><div class="ttdoc">return current string value (implicitly resets the token; useful only once)</div><div class="ttdef"><b>Definition:</b> json.hpp:8470</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a13e032a02a7fd8a93fdddc2fcbc4763c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">nlohmann::basic_json::end</a></div><div class="ttdeci">iterator end() noexcept</div><div class="ttdoc">returns an iterator to one past the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18745</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a90f19b272530a479db81db11be2ea15c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a90f19b272530a479db81db11be2ea15c">nlohmann::detail::json_sax_dom_parser::number_unsigned_t</a></div><div class="ttdeci">typename BasicJsonType::number_unsigned_t number_unsigned_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4458</div></div>
<div class="ttc" id="ajson_8hpp_html_a5f2aaec3b681d0a72f7d6e90b70cdcd1"><div class="ttname"><a href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div><div class="ttdeci">#define JSON_HEDLEY_RETURNS_NON_NULL</div><div class="ttdef"><b>Definition:</b> json.hpp:1362</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abf04978d85a2d5c4754f4806d42f46fd"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abf04978d85a2d5c4754f4806d42f46fd">nlohmann::basic_json::operator+=</a></div><div class="ttdeci">reference operator+=(const typename object_t::value_type &amp;val)</div><div class="ttdoc">add an object to an object</div><div class="ttdef"><b>Definition:</b> json.hpp:19517</div></div>
<div class="ttc" id="ajson_8hpp_html_a5338981b5ad9027c9e54b1c5597f4344"><div class="ttname"><a href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a></div><div class="ttdeci">#define JSON_HEDLEY_NON_NULL(...)</div><div class="ttdef"><b>Definition:</b> json.hpp:1032</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a42f51a69bac7b2aebb613b2164e457f1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1">nlohmann::detail::json_reverse_iterator::reference</a></div><div class="ttdeci">typename Base::reference reference</div><div class="ttdoc">the reference type for the pointed-to element</div><div class="ttdef"><b>Definition:</b> json.hpp:9989</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">nlohmann::detail::json_sax_dom_callback_parser</a></div><div class="ttdef"><b>Definition:</b> json.hpp:4636</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebea49642fb732aa2e112188fba1f9d3ef7f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea49642fb732aa2e112188fba1f9d3ef7f">nlohmann::detail::parser::parse_event_t::array_end</a></div><div class="ttdeci">@ array_end</div><div class="ttdoc">the parser read ] and finished processing a JSON array</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a99efe44b502de2762a433ce3688ec2d2"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a99efe44b502de2762a433ce3688ec2d2">nlohmann::basic_json::to_msgpack</a></div><div class="ttdeci">static void to_msgpack(const basic_json &amp;j, detail::output_adapter&lt; char &gt; o)</div><div class="ttdef"><b>Definition:</b> json.hpp:21226</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy_html_a90091f8492d23576edef72c5e8b9d4cf"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy.html#a90091f8492d23576edef72c5e8b9d4cf">nlohmann::detail::iteration_proxy::end</a></div><div class="ttdeci">iteration_proxy_value&lt; IteratorType &gt; end() noexcept</div><div class="ttdoc">return iterator end (needed for range-based for)</div><div class="ttdef"><b>Definition:</b> json.hpp:3403</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a976bf4ce6e9a2ffe48f683ddff80af00"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a976bf4ce6e9a2ffe48f683ddff80af00">nlohmann::detail::json_sax_acceptor::number_integer</a></div><div class="ttdeci">bool number_integer(number_integer_t)</div><div class="ttdef"><b>Definition:</b> json.hpp:4958</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a634f85da575cb60b012a687efa26e11a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a634f85da575cb60b012a687efa26e11a">nlohmann::detail::iter_impl::operator&gt;=</a></div><div class="ttdeci">bool operator&gt;=(const iter_impl &amp;other) const</div><div class="ttdoc">comparison: greater than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:9784</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a549c6eb10b6434eaf772f71d129a6d79"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a549c6eb10b6434eaf772f71d129a6d79">nlohmann::detail::json_reverse_iterator::operator-</a></div><div class="ttdeci">json_reverse_iterator operator-(difference_type i) const</div><div class="ttdoc">subtract from iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:10035</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1serializer_html_a5f14c33012477b9f9876dc54d97009a0"><div class="ttname"><a href="classnlohmann_1_1detail_1_1serializer.html#a5f14c33012477b9f9876dc54d97009a0">nlohmann::detail::serializer::operator=</a></div><div class="ttdeci">serializer &amp; operator=(const serializer &amp;)=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a875585b0cb6133902066daccd7c9d420"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a875585b0cb6133902066daccd7c9d420">nlohmann::basic_json::accept</a></div><div class="ttdeci">static bool accept(detail::input_adapter &amp;&amp;i)</div><div class="ttdef"><b>Definition:</b> json.hpp:20754</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae8cbef097f7da18a781fc86587de6b90"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">nlohmann::basic_json::value_t</a></div><div class="ttdeci">detail::value_t value_t</div><div class="ttdef"><b>Definition:</b> json.hpp:14751</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab906e29b5d83ac162e823ada2156b989"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">nlohmann::basic_json::number_unsigned_t</a></div><div class="ttdeci">NumberUnsignedType number_unsigned_t</div><div class="ttdoc">a type for a number (unsigned)</div><div class="ttdef"><b>Definition:</b> json.hpp:15294</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab330c13ba254ea41fbc1c52c5c610f45"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab330c13ba254ea41fbc1c52c5c610f45">nlohmann::basic_json::parse</a></div><div class="ttdeci">static basic_json parse(IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)</div><div class="ttdoc">deserialize from an iterator range with contiguous storage</div><div class="ttdef"><b>Definition:</b> json.hpp:20877</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a9b680ddfb58f27eb53a67229447fc556"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">nlohmann::detail::output_adapter_t</a></div><div class="ttdeci">std::shared_ptr&lt; output_adapter_protocol&lt; CharType &gt; &gt; output_adapter_t</div><div class="ttdoc">a type to simplify interfaces</div><div class="ttdef"><b>Definition:</b> json.hpp:11207</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a09169efff3bd1771fff29bd92cea19e0"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a09169efff3bd1771fff29bd92cea19e0">nlohmann::detail::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const value_t lhs, const value_t rhs) noexcept</div><div class="ttdoc">comparison operator for JSON types</div><div class="ttdef"><b>Definition:</b> json.hpp:2877</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aef302e3ae215e46e5035d0e4fdf47235"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aef302e3ae215e46e5035d0e4fdf47235">nlohmann::basic_json::operator==</a></div><div class="ttdeci">friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20296</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a71f84fb6e009619f12972bcf9002b8cd"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a71f84fb6e009619f12972bcf9002b8cd">nlohmann::detail::iter_impl::iter_impl</a></div><div class="ttdeci">iter_impl(const iter_impl&lt; const BasicJsonType &gt; &amp;other) noexcept</div><div class="ttdoc">const copy constructor</div><div class="ttdef"><b>Definition:</b> json.hpp:9434</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abc7378cba0613a78b9aad1c8e7044bb0"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abc7378cba0613a78b9aad1c8e7044bb0">nlohmann::basic_json::is_number_unsigned</a></div><div class="ttdeci">constexpr bool is_number_unsigned() const noexcept</div><div class="ttdoc">return whether value is an unsigned integer number</div><div class="ttdef"><b>Definition:</b> json.hpp:16800</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a1a2bd258b7e99f86b7e6a3c41373ba55"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a1a2bd258b7e99f86b7e6a3c41373ba55">nlohmann::detail::parser::parser</a></div><div class="ttdeci">parser(detail::input_adapter_t &amp;&amp;adapter, const parser_callback_t cb=nullptr, const bool allow_exceptions_=true)</div><div class="ttdoc">a parser reading from an input adapter</div><div class="ttdef"><b>Definition:</b> json.hpp:8714</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__array__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html">nlohmann::detail::is_constructible_array_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2713</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a011397134847f36db0ed7d7a93753677"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a011397134847f36db0ed7d7a93753677">nlohmann::basic_json::back</a></div><div class="ttdeci">reference back()</div><div class="ttdoc">access the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18173</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_ae5aed974605469fe0dfeddc6c4a7056d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae5aed974605469fe0dfeddc6c4a7056d">nlohmann::detail::primitive_iterator_t::operator--</a></div><div class="ttdeci">const primitive_iterator_t operator--(int) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9254</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">nlohmann::detail::input_format_t</a></div><div class="ttdeci">input_format_t</div><div class="ttdoc">the supported input formats</div><div class="ttdef"><b>Definition:</b> json.hpp:3887</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a73ae333487310e3302135189ce8ff5d8"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a73ae333487310e3302135189ce8ff5d8">nlohmann::basic_json::at</a></div><div class="ttdeci">reference at(size_type idx)</div><div class="ttdoc">access specified array element with bounds checking</div><div class="ttdef"><b>Definition:</b> json.hpp:17519</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_ac6f71b36d7c87e427d1fee83f2600fad"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#ac6f71b36d7c87e427d1fee83f2600fad">nlohmann::detail::iter_impl::operator&lt;=</a></div><div class="ttdeci">bool operator&lt;=(const iter_impl &amp;other) const</div><div class="ttdoc">comparison: less than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:9766</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_af8f511af124e82e4579f444b4175787c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">nlohmann::basic_json::is_object</a></div><div class="ttdeci">constexpr bool is_object() const noexcept</div><div class="ttdoc">return whether value is an object</div><div class="ttdef"><b>Definition:</b> json.hpp:16850</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aed115142bd0c6c66c864700e0467df55"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const value_t v)</div><div class="ttdoc">create an empty value with a given type</div><div class="ttdef"><b>Definition:</b> json.hpp:15752</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1serializer_html_aa6c62b51cbebb185307df851dc0167f0"><div class="ttname"><a href="classnlohmann_1_1detail_1_1serializer.html#aa6c62b51cbebb185307df851dc0167f0">nlohmann::detail::serializer::~serializer</a></div><div class="ttdeci">~serializer()=default</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">nlohmann::detail::error_handler_t::strict</a></div><div class="ttdeci">@ strict</div><div class="ttdoc">throw a type_error exception in case of invalid UTF-8</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a4a750fcc38da1ce68b7e25ab3a230e20"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">nlohmann::detail::dtoa_impl::kGamma</a></div><div class="ttdeci">constexpr int kGamma</div><div class="ttdef"><b>Definition:</b> json.hpp:12954</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a677318a34ade7f8177a2784c06aa3671"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a677318a34ade7f8177a2784c06aa3671">nlohmann::basic_json::meta</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json meta()</div><div class="ttdoc">returns version information on the library</div><div class="ttdef"><b>Definition:</b> json.hpp:14866</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a4b1ee4d511ca195bed896a3da47e264c"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a4b1ee4d511ca195bed896a3da47e264c">nlohmann::json_pointer::pop_back</a></div><div class="ttdeci">void pop_back()</div><div class="ttdoc">remove last reference token</div><div class="ttdef"><b>Definition:</b> json.hpp:10320</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a4a3e14a011b9ea1ff849fc6d2411e6a0"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0">nlohmann::detail::number_integer_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().number_integer(std::declval&lt; Integer &gt;())) number_integer_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5039</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_aea90459e340a231ca31d46946803ef51"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">nlohmann::detail::dtoa_impl::diyfp::f</a></div><div class="ttdeci">std::uint64_t f</div><div class="ttdef"><b>Definition:</b> json.hpp:12703</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a2566783e190dec524bf3445b322873b8"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a2566783e190dec524bf3445b322873b8">nlohmann::basic_json::to_cbor</a></div><div class="ttdeci">static std::vector&lt; uint8_t &gt; to_cbor(const basic_json &amp;j)</div><div class="ttdoc">create a CBOR serialization of a given JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:21118</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a74fa3ab2003f2f6f2b69deaafed9126d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a74fa3ab2003f2f6f2b69deaafed9126d">nlohmann::basic_json::unflatten</a></div><div class="ttdeci">basic_json unflatten() const</div><div class="ttdoc">unflatten a previously flattened JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:22049</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits.html">nlohmann::detail::iterator_traits</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2297</div></div>
<div class="ttc" id="ajson_8hpp_html_a0f2cbf281fa983a844b9279c697b7a0c"><div class="ttname"><a href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c">JSON_HEDLEY_DEPRECATED</a></div><div class="ttdeci">#define JSON_HEDLEY_DEPRECATED(since)</div><div class="ttdef"><b>Definition:</b> json.hpp:860</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_ad15b288f3351287edbe289502f595491"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ad15b288f3351287edbe289502f595491">nlohmann::detail::json_sax_acceptor::number_unsigned</a></div><div class="ttdeci">bool number_unsigned(number_unsigned_t)</div><div class="ttdef"><b>Definition:</b> json.hpp:4963</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad6a18403e7fbac9c4efd06facc71fc88"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad6a18403e7fbac9c4efd06facc71fc88">nlohmann::basic_json::value</a></div><div class="ttdeci">string_t value(const typename object_t::key_type &amp;key, const char *default_value) const</div><div class="ttdoc">overload for a default value of type const char*</div><div class="ttdef"><b>Definition:</b> json.hpp:18025</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_acabb231463bf669441c22e4ea385a9fb"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#acabb231463bf669441c22e4ea385a9fb">nlohmann::detail::json_sax_dom_callback_parser::number_unsigned</a></div><div class="ttdeci">bool number_unsigned(number_unsigned_t val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4679</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_ae7c31614e8a82164d2d7f8dbf4671b25"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#ae7c31614e8a82164d2d7f8dbf4671b25">nlohmann::json_sax::number_float</a></div><div class="ttdeci">virtual bool number_float(number_float_t val, const string_t &amp;s)=0</div><div class="ttdoc">an floating-point number was read</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a59fca69799f6b9e366710cb9043aa77d"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">nlohmann::detail::void</a></div><div class="ttdeci">j template void())</div><div class="ttdef"><b>Definition:</b> json.hpp:3108</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a056b895d011efaf48ea096c024aca0d4"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a056b895d011efaf48ea096c024aca0d4">nlohmann::detail::json_sax_dom_parser::start_array</a></div><div class="ttdeci">bool start_array(std::size_t len)</div><div class="ttdef"><b>Definition:</b> json.hpp:4540</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_aac6e64f0b59c9150cde974e182d5ecab"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6e64f0b59c9150cde974e182d5ecab">nlohmann::detail::json_sax_dom_callback_parser::parse_error</a></div><div class="ttdeci">bool parse_error(std::size_t, const std::string &amp;, const detail::exception &amp;ex)</div><div class="ttdef"><b>Definition:</b> json.hpp:4806</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1ecce113ff11dd294689ee4d45cbb855"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1ecce113ff11dd294689ee4d45cbb855">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, basic_json &amp;&amp;val)</div><div class="ttdoc">inserts element</div><div class="ttdef"><b>Definition:</b> json.hpp:19739</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a88cbcefe9a3f4d294bed0653550a5cb9"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a88cbcefe9a3f4d294bed0653550a5cb9">nlohmann::basic_json::erase</a></div><div class="ttdeci">void erase(const size_type idx)</div><div class="ttdoc">remove element from a JSON array given an index</div><div class="ttdef"><b>Definition:</b> json.hpp:18467</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries_html_aec4e5028333c01f3229062f31ce16763"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#aec4e5028333c01f3229062f31ce16763">nlohmann::detail::dtoa_impl::boundaries::minus</a></div><div class="ttdeci">diyfp minus</div><div class="ttdef"><b>Definition:</b> json.hpp:12820</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a72be3c24bfa24f0993d6c11af03e7404"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a72be3c24bfa24f0993d6c11af03e7404">nlohmann::basic_json::const_reverse_iterator</a></div><div class="ttdeci">json_reverse_iterator&lt; typename basic_json::const_iterator &gt; const_reverse_iterator</div><div class="ttdoc">a const reverse iterator for a basic_json container</div><div class="ttdef"><b>Definition:</b> json.hpp:14826</div></div>
<div class="ttc" id="ajson_8hpp_html_a985d3b82445302c57257f6432f261fe9"><div class="ttname"><a href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div><div class="ttdeci">#define JSON_TRY</div><div class="ttdef"><b>Definition:</b> json.hpp:1755</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1input__adapter__protocol_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">nlohmann::detail::input_adapter_protocol</a></div><div class="ttdoc">abstract input adapter interface</div><div class="ttdef"><b>Definition:</b> json.hpp:3904</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a5ca57856d9bba54a5fc51cee891de827"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a5ca57856d9bba54a5fc51cee891de827">nlohmann::detail::iter_impl::operator*</a></div><div class="ttdeci">reference operator*() const</div><div class="ttdoc">return a reference to the value pointed to by the iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9546</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a61f8566a1a85a424c7266fb531dca005"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">nlohmann::basic_json::string_t</a></div><div class="ttdeci">StringType string_t</div><div class="ttdoc">a type for a string</div><div class="ttdef"><b>Definition:</b> json.hpp:15125</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab23b04802eb9da97dc3f664e54e09cb3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab23b04802eb9da97dc3f664e54e09cb3">nlohmann::basic_json::contains</a></div><div class="ttdeci">bool contains(const json_pointer &amp;ptr) const</div><div class="ttdoc">check the existence of an element in a JSON object given a JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:18635</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_a8bcd4cfcafe952ce5140f8cb35ebe2f6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#a8bcd4cfcafe952ce5140f8cb35ebe2f6">nlohmann::detail::json_ref::~json_ref</a></div><div class="ttdeci">~json_ref()=default</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a44869ca9f422b260625d78e4e8121559"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a44869ca9f422b260625d78e4e8121559">nlohmann::detail::key_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().key(std::declval&lt; String &amp; &gt;())) key_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5059</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1exception_html_a0d4589a3fb54e81646d986c05efa3b9a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1exception.html#a0d4589a3fb54e81646d986c05efa3b9a">nlohmann::detail::exception::id</a></div><div class="ttdeci">const int id</div><div class="ttdoc">the id of the exception</div><div class="ttdef"><b>Definition:</b> json.hpp:1875</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1nonesuch_html_a7b1119845860e548b67f1644a2084373"><div class="ttname"><a href="structnlohmann_1_1detail_1_1nonesuch.html#a7b1119845860e548b67f1644a2084373">nlohmann::detail::nonesuch::~nonesuch</a></div><div class="ttdeci">~nonesuch()=delete</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_ad0c722d53ff97be700ccf6a9468bd456"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#ad0c722d53ff97be700ccf6a9468bd456">nlohmann::json_sax::end_object</a></div><div class="ttdeci">virtual bool end_object()=0</div><div class="ttdoc">the end of an object was read</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1serializer_html_ac010525281d97867ee842da37294fe83"><div class="ttname"><a href="classnlohmann_1_1detail_1_1serializer.html#ac010525281d97867ee842da37294fe83">nlohmann::detail::serializer::serializer</a></div><div class="ttdeci">serializer(output_adapter_t&lt; char &gt; s, const char ichar, error_handler_t error_handler_=error_handler_t::strict)</div><div class="ttdef"><b>Definition:</b> json.hpp:13802</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a19fb8c28f37b23099a4353acf0a9a2f1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a19fb8c28f37b23099a4353acf0a9a2f1">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(std::FILE *file)</div><div class="ttdef"><b>Definition:</b> json.hpp:4202</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a0d14cd76203e00bdcef6a64a5d055cc7"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a0d14cd76203e00bdcef6a64a5d055cc7">nlohmann::detail::iter_impl::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const iter_impl &amp;other) const</div><div class="ttdoc">comparison: smaller</div><div class="ttdef"><b>Definition:</b> json.hpp:9739</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a68e3a92b3d9be1faa05c92d096299189"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a68e3a92b3d9be1faa05c92d096299189">nlohmann::basic_json::operator&gt;=</a></div><div class="ttdeci">friend bool operator&gt;=(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: greater than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20586</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a42dd1a73d072bb6bf3f494f22b15db8e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a42dd1a73d072bb6bf3f494f22b15db8e">nlohmann::detail::lexer::token_type::uninitialized</a></div><div class="ttdeci">@ uninitialized</div><div class="ttdoc">indicating the scanner is uninitialized</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab6816ae5100409254ed0a8bc21c387bb"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab6816ae5100409254ed0a8bc21c387bb">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(size_type cnt, const basic_json &amp;val)</div><div class="ttdoc">construct an array with count copies of given value</div><div class="ttdef"><b>Definition:</b> json.hpp:16160</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor.html">nlohmann::detail::external_constructor</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3470</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b_html_ac70fcab4cacd8b386c3f2b056885e15e"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#ac70fcab4cacd8b386c3f2b056885e15e">nlohmann::detail::iterator_types&lt; It, void_t&lt; typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category &gt; &gt;::value_type</a></div><div class="ttdeci">typename It::value_type value_type</div><div class="ttdef"><b>Definition:</b> json.hpp:2288</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac77aed0925d447744676725ab0b6d535"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac77aed0925d447744676725ab0b6d535">nlohmann::basic_json::rend</a></div><div class="ttdeci">reverse_iterator rend() noexcept</div><div class="ttdoc">returns an iterator to the reverse-end</div><div class="ttdef"><b>Definition:</b> json.hpp:18852</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_afbd800010b67619463c0fce6e74f7878"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#afbd800010b67619463c0fce6e74f7878">nlohmann::basic_json::get_ref</a></div><div class="ttdeci">ReferenceType get_ref()</div><div class="ttdoc">get a reference value (implicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17414</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a2b9852390abb4b1ef5fac6984e2fc0f3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a2b9852390abb4b1ef5fac6984e2fc0f3">nlohmann::basic_json::is_number</a></div><div class="ttdeci">constexpr bool is_number() const noexcept</div><div class="ttdoc">return whether value is a number</div><div class="ttdef"><b>Definition:</b> json.hpp:16743</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8ca5dd4f18b59e7022b04fd9bf7f5176"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8ca5dd4f18b59e7022b04fd9bf7f5176">nlohmann::basic_json::to_bson</a></div><div class="ttdeci">static std::vector&lt; uint8_t &gt; to_bson(const basic_json &amp;j)</div><div class="ttdoc">Serializes the given JSON object j to BSON and returns a vector containing the corresponding BSON-rep...</div><div class="ttdef"><b>Definition:</b> json.hpp:21388</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1e0769d22d54573f294da0e5c6abc9de"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1e0769d22d54573f294da0e5c6abc9de">nlohmann::basic_json::crbegin</a></div><div class="ttdeci">const_reverse_iterator crbegin() const noexcept</div><div class="ttdoc">returns a const reverse iterator to the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18889</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a56640fb92293e0c17742ca3c814d74d6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a56640fb92293e0c17742ca3c814d74d6">nlohmann::detail::lexer::get_number_unsigned</a></div><div class="ttdeci">constexpr number_unsigned_t get_number_unsigned() const noexcept</div><div class="ttdoc">return unsigned integer value</div><div class="ttdef"><b>Definition:</b> json.hpp:8458</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1internal__iterator_html_a2b3bb45f968210e42c282017eeeb63a8"><div class="ttname"><a href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">nlohmann::detail::internal_iterator::primitive_iterator</a></div><div class="ttdeci">primitive_iterator_t primitive_iterator</div><div class="ttdoc">generic iterator for all other types</div><div class="ttdef"><b>Definition:</b> json.hpp:9294</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1position__t_html_a4bbad8bc2c0d17c1b61c3ce729908b71"><div class="ttname"><a href="structnlohmann_1_1detail_1_1position__t.html#a4bbad8bc2c0d17c1b61c3ce729908b71">nlohmann::detail::position_t::lines_read</a></div><div class="ttdeci">std::size_t lines_read</div><div class="ttdoc">the number of lines read</div><div class="ttdef"><b>Definition:</b> json.hpp:96</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">nlohmann::detail::value_t::number_unsigned</a></div><div class="ttdeci">@ number_unsigned</div><div class="ttdoc">number value (unsigned integer)</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad70a098fbc01c53497db29d3b5b656a9"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">nlohmann::basic_json::initializer_list_t</a></div><div class="ttdeci">std::initializer_list&lt; detail::json_ref&lt; basic_json &gt; &gt; initializer_list_t</div><div class="ttdoc">helper type for initializer lists of basic_json values</div><div class="ttdef"><b>Definition:</b> json.hpp:14759</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html_ab94a54d6e595c2620b07589cf4116256"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">nlohmann::detail::binary_reader::sax_parse</a></div><div class="ttdeci">bool sax_parse(const input_format_t format, json_sax_t *sax_, const bool strict=true)</div><div class="ttdef"><b>Definition:</b> json.hpp:5210</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__type.html">nlohmann::detail::is_compatible_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2795</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html">nlohmann::detail::binary_reader</a></div><div class="ttdoc">deserialization of CBOR, MessagePack, and UBJSON values</div><div class="ttdef"><b>Definition:</b> json.hpp:5175</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__array__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__array__type.html">nlohmann::detail::is_compatible_array_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2709</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">nlohmann::detail::value_t::array</a></div><div class="ttdeci">@ array</div><div class="ttdoc">array (ordered collection of values)</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4_html_a74f56b9ca1d4e8db9751353d76668322"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a74f56b9ca1d4e8db9751353d76668322">nlohmann::detail::external_constructor&lt; value_t::string &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, typename BasicJsonType::string_t &amp;&amp;s)</div><div class="ttdef"><b>Definition:</b> json.hpp:3496</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1711ee5cef66a0523055c8d9f024f322"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322">nlohmann::detail::from_json_function</a></div><div class="ttdeci">decltype(T::from_json(std::declval&lt; Args &gt;()...)) from_json_function</div><div class="ttdef"><b>Definition:</b> json.hpp:2513</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_ad90f19ed10d8133b727df4b9bc5ddf5c"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ad90f19ed10d8133b727df4b9bc5ddf5c">nlohmann::detail::dtoa_impl::append_exponent</a></div><div class="ttdeci">JSON_HEDLEY_RETURNS_NON_NULL char * append_exponent(char *buf, int e)</div><div class="ttdoc">appends a decimal representation of e to buf</div><div class="ttdef"><b>Definition:</b> json.hpp:13572</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a3ba8fc7a8d83c5b0eeb3b543ad844b8d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a3ba8fc7a8d83c5b0eeb3b543ad844b8d">nlohmann::detail::json_sax_dom_callback_parser::number_integer_t</a></div><div class="ttdeci">typename BasicJsonType::number_integer_t number_integer_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4639</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_af66db22ad819346a688042a9da68ee5f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#af66db22ad819346a688042a9da68ee5f">nlohmann::basic_json::to_ubjson</a></div><div class="ttdeci">static void to_ubjson(const basic_json &amp;j, detail::output_adapter&lt; char &gt; o, const bool use_size=false, const bool use_type=false)</div><div class="ttdef"><b>Definition:</b> json.hpp:21326</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a93403e803947b86f4da2d1fb3345cf2c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a93403e803947b86f4da2d1fb3345cf2c">nlohmann::basic_json::at</a></div><div class="ttdeci">reference at(const typename object_t::key_type &amp;key)</div><div class="ttdoc">access specified object element with bounds checking</div><div class="ttdef"><b>Definition:</b> json.hpp:17617</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_ac228b13596d3c34185da9fe61b570194"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#ac228b13596d3c34185da9fe61b570194">nlohmann::json_pointer::push_back</a></div><div class="ttdeci">void push_back(std::string &amp;&amp;token)</div><div class="ttdoc">append an unescaped token at the end of the reference pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10372</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html_a87826b833ee7fec146c97233bb0f6ab8"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html#a87826b833ee7fec146c97233bb0f6ab8">nlohmann::detail::binary_reader::operator=</a></div><div class="ttdeci">binary_reader &amp; operator=(const binary_reader &amp;)=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a58163eaa485b17dd878d3c782efc1e43"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a58163eaa485b17dd878d3c782efc1e43">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(const std::u16string &amp;ws)</div><div class="ttdef"><b>Definition:</b> json.hpp:4215</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_adb652774a67829876449dc0b30637456"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#adb652774a67829876449dc0b30637456">nlohmann::detail::json_ref::operator-&gt;</a></div><div class="ttdeci">value_type const * operator-&gt;() const</div><div class="ttdef"><b>Definition:</b> json.hpp:11146</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries_html_a3321ae2816a6ec5250a0d8e29f798232"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#a3321ae2816a6ec5250a0d8e29f798232">nlohmann::detail::dtoa_impl::boundaries::plus</a></div><div class="ttdeci">diyfp plus</div><div class="ttdef"><b>Definition:</b> json.hpp:12821</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac8e523ddc8c2dd7e5d2daf0d49a9c0d7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">nlohmann::basic_json::push_back</a></div><div class="ttdeci">void push_back(basic_json &amp;&amp;val)</div><div class="ttdoc">add an object to an array</div><div class="ttdef"><b>Definition:</b> json.hpp:19406</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1type__error_html_aecc083aea4b698c33d042670ba50c10f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">nlohmann::detail::type_error::create</a></div><div class="ttdeci">static type_error create(int id_, const std::string &amp;what_arg)</div><div class="ttdef"><b>Definition:</b> json.hpp:2078</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a4b93deb5c1d716dcfb33b3ed8a00ac4d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a4b93deb5c1d716dcfb33b3ed8a00ac4d">nlohmann::detail::json_sax_dom_parser::~json_sax_dom_parser</a></div><div class="ttdeci">~json_sax_dom_parser()=default</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a51df13f73a970da95c3dcb3d47b0c2c4"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a51df13f73a970da95c3dcb3d47b0c2c4">nlohmann::basic_json::to_bson</a></div><div class="ttdeci">static void to_bson(const basic_json &amp;j, detail::output_adapter&lt; uint8_t &gt; o)</div><div class="ttdoc">Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the ...</div><div class="ttdef"><b>Definition:</b> json.hpp:21403</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_ad8798a8823a49c8412f0fada9892c918"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ad8798a8823a49c8412f0fada9892c918">nlohmann::detail::dtoa_impl::diyfp::diyfp</a></div><div class="ttdeci">constexpr diyfp(std::uint64_t f_, int e_) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:12706</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a37e97a32d0b94ce5f745427e4e40204d"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d">nlohmann::detail::detected_t</a></div><div class="ttdeci">typename detector&lt; nonesuch, void, Op, Args... &gt;::type detected_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2367</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a25e27ad0c6d53c01871c5485e1f75b96"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">nlohmann::basic_json::size</a></div><div class="ttdeci">size_type size() const noexcept</div><div class="ttdoc">returns the number of elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19195</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_af52d6d2521c386998ae940d118182ebc"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#af52d6d2521c386998ae940d118182ebc">nlohmann::detail::end_object_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().end_object()) end_object_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5062</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae1ece6c2059114eac10873f13ef19185"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae1ece6c2059114eac10873f13ef19185">nlohmann::basic_json::to_ubjson</a></div><div class="ttdeci">static std::vector&lt; uint8_t &gt; to_ubjson(const basic_json &amp;j, const bool use_size=false, const bool use_type=false)</div><div class="ttdoc">create a UBJSON serialization of a given JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:21311</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a6779edcf28e6f018a3bbb29c0b4b5e1e"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a6779edcf28e6f018a3bbb29c0b4b5e1e">nlohmann::json_pointer::operator!=</a></div><div class="ttdeci">friend bool operator!=(json_pointer const &amp;lhs, json_pointer const &amp;rhs) noexcept</div><div class="ttdoc">compares two JSON pointers for inequality</div><div class="ttdef"><b>Definition:</b> json.hpp:11076</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__array__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html">nlohmann::detail::is_compatible_array_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2690</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5262e531c46e357b33007060f294673b"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5262e531c46e357b33007060f294673b">nlohmann::detail::is_detected_convertible</a></div><div class="ttdeci">std::is_convertible&lt; detected_t&lt; Op, Args... &gt;, To &gt; is_detected_convertible</div><div class="ttdef"><b>Definition:</b> json.hpp:2380</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a5502f483fc60a1bcd73e0e46b6ab36e4"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a5502f483fc60a1bcd73e0e46b6ab36e4">nlohmann::detail::json_sax_acceptor::number_float_t</a></div><div class="ttdeci">typename BasicJsonType::number_float_t number_float_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4945</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_adf4db2aef31822f3a179435158a4de11"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#adf4db2aef31822f3a179435158a4de11">nlohmann::detail::iteration_proxy_value::operator++</a></div><div class="ttdeci">iteration_proxy_value &amp; operator++()</div><div class="ttdoc">increment operator (needed for range-based for)</div><div class="ttdef"><b>Definition:</b> json.hpp:3329</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1output__adapter__protocol_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">nlohmann::detail::output_adapter_protocol</a></div><div class="ttdoc">abstract output adapter interface</div><div class="ttdef"><b>Definition:</b> json.hpp:11198</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_a459dd8961b80b2089d8161c9aa466581"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a459dd8961b80b2089d8161c9aa466581">nlohmann::detail::iteration_proxy_value::iteration_proxy_value</a></div><div class="ttdeci">iteration_proxy_value(IteratorType it) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3320</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_acac9d438c9bb12740dcdb01069293a34"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#acac9d438c9bb12740dcdb01069293a34">nlohmann::basic_json::at</a></div><div class="ttdeci">const_reference at(const typename object_t::key_type &amp;key) const</div><div class="ttdoc">access specified object element with bounds checking</div><div class="ttdef"><b>Definition:</b> json.hpp:17668</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">nlohmann::detail::value_t::discarded</a></div><div class="ttdeci">@ discarded</div><div class="ttdoc">discarded by the the parser callback function</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebe"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe">nlohmann::detail::parser::parse_event_t</a></div><div class="ttdeci">parse_event_t</div><div class="ttdef"><b>Definition:</b> json.hpp:8694</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1detector_html_a0cd69423587748bf3d3d702cc7b7c2ce"><div class="ttname"><a href="structnlohmann_1_1detail_1_1detector.html#a0cd69423587748bf3d3d702cc7b7c2ce">nlohmann::detail::detector::type</a></div><div class="ttdeci">Default type</div><div class="ttdef"><b>Definition:</b> json.hpp:2353</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a88de4907ad5668d0358af2135236101f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a88de4907ad5668d0358af2135236101f">nlohmann::detail::json_sax_dom_parser::end_object</a></div><div class="ttdeci">bool end_object()</div><div class="ttdef"><b>Definition:</b> json.hpp:4534</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">nlohmann::detail::primitive_iterator_t</a></div><div class="ttdef"><b>Definition:</b> json.hpp:9173</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4_html_ad88d0b4b7ea01ea20e12cc1b82fe0d92"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#ad88d0b4b7ea01ea20e12cc1b82fe0d92">nlohmann::detail::external_constructor&lt; value_t::string &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, const typename BasicJsonType::string_t &amp;s)</div><div class="ttdef"><b>Definition:</b> json.hpp:3488</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a513d6fb63a0ea53ce6c28c05ce0f26e6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a513d6fb63a0ea53ce6c28c05ce0f26e6">nlohmann::basic_json::from_cbor</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(A1 &amp;&amp;a1, A2 &amp;&amp;a2, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in CBOR format</div><div class="ttdef"><b>Definition:</b> json.hpp:21533</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__iterator__traits_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__iterator__traits.html">nlohmann::detail::is_iterator_traits</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2569</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__buffer__adapter_html_ac242b822b2f6772e5fc682ddb80cb066"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ac242b822b2f6772e5fc682ddb80cb066">nlohmann::detail::input_buffer_adapter::~input_buffer_adapter</a></div><div class="ttdeci">~input_buffer_adapter() override=default</div></div>
<div class="ttc" id="astructstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4_html_a10d3fea50edf7b15ead8f4ceeb006000"><div class="ttname"><a href="structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html#a10d3fea50edf7b15ead8f4ceeb006000">std::less&lt;::nlohmann::detail::value_t &gt;::operator()</a></div><div class="ttdeci">bool operator()(nlohmann::detail::value_t lhs, nlohmann::detail::value_t rhs) const noexcept</div><div class="ttdoc">compare two value_t enum values</div><div class="ttdef"><b>Definition:</b> json.hpp:22661</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a9135fcf616d6ac6e231a86e0a055ac44"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">nlohmann::detail::is_detected</a></div><div class="ttdeci">typename detector&lt; nonesuch, void, Op, Args... &gt;::value_t is_detected</div><div class="ttdef"><b>Definition:</b> json.hpp:2364</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6508b9ef55eb018231fb2198211f6d73"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6508b9ef55eb018231fb2198211f6d73">nlohmann::basic_json::get_ptr</a></div><div class="ttdeci">constexpr auto get_ptr() const noexcept -&gt; decltype(std::declval&lt; const basic_json_t &amp; &gt;().get_impl_ptr(std::declval&lt; PointerType &gt;()))</div><div class="ttdoc">get a pointer value (implicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17333</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">nlohmann::detail::value_t::boolean</a></div><div class="ttdeci">@ boolean</div><div class="ttdoc">boolean value</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a88a00484ac201c52fc5f613d88a2918b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a88a00484ac201c52fc5f613d88a2918b">nlohmann::detail::iter_impl::iter_impl</a></div><div class="ttdeci">iter_impl(pointer object) noexcept</div><div class="ttdoc">constructor for a given JSON instance</div><div class="ttdef"><b>Definition:</b> json.hpp:9392</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a0671528b0debb5a348169d61f0382a0f"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a0671528b0debb5a348169d61f0382a0f">nlohmann::json_sax::start_object</a></div><div class="ttdeci">virtual bool start_object(std::size_t elements)=0</div><div class="ttdoc">the beginning of an object was read</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_ab6818e0fc05f4a52c65aeb967dd79919"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#ab6818e0fc05f4a52c65aeb967dd79919">nlohmann::detail::lexer::lexer</a></div><div class="ttdeci">lexer(detail::input_adapter_t &amp;&amp;adapter)</div><div class="ttdef"><b>Definition:</b> json.hpp:7237</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5338e282d1d02bed389d852dd670d98d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5338e282d1d02bed389d852dd670d98d">nlohmann::basic_json::emplace</a></div><div class="ttdeci">std::pair&lt; iterator, bool &gt; emplace(Args &amp;&amp;... args)</div><div class="ttdoc">add an object to an object if key does not exist</div><div class="ttdef"><b>Definition:</b> json.hpp:19649</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_ad6824b0f792691f75186c527fa31a6b4"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#ad6824b0f792691f75186c527fa31a6b4">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(IteratorType first, IteratorType last)</div><div class="ttdoc">input adapter for iterator range with contiguous storage</div><div class="ttdef"><b>Definition:</b> json.hpp:4249</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_abdd21567b2b1d69329af0f520335e68b"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#abdd21567b2b1d69329af0f520335e68b">nlohmann::json_pointer::operator/=</a></div><div class="ttdeci">json_pointer &amp; operator/=(std::string token)</div><div class="ttdoc">append an unescaped reference token at the end of this JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10194</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a74a943800c7f103d0990d7eef82c6453"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a74a943800c7f103d0990d7eef82c6453">nlohmann::basic_json::operator&gt;=</a></div><div class="ttdeci">friend bool operator&gt;=(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: greater than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20575</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abed9e77c5fcfc925fcdd489911069c3b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abed9e77c5fcfc925fcdd489911069c3b">nlohmann::basic_json::object_comparator_t</a></div><div class="ttdeci">std::less&lt; StringType &gt; object_comparator_t</div><div class="ttdef"><b>Definition:</b> json.hpp:14936</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">nlohmann::detail::input_format_t::msgpack</a></div><div class="ttdeci">@ msgpack</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a64c8401529131bad1e486d91d703795f"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a64c8401529131bad1e486d91d703795f">nlohmann::json_pointer::operator/=</a></div><div class="ttdeci">json_pointer &amp; operator/=(std::size_t array_index)</div><div class="ttdoc">append an array index at the end of this JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10216</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4_html_a91f89abe0ec4dec59099b691682ff927"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a91f89abe0ec4dec59099b691682ff927">nlohmann::detail::external_constructor&lt; value_t::object &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, const CompatibleObjectType &amp;obj)</div><div class="ttdef"><b>Definition:</b> json.hpp:3630</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad6b0b151621542e5d135812b8c163222"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad6b0b151621542e5d135812b8c163222">nlohmann::basic_json::get</a></div><div class="ttdeci">constexpr auto get() const noexcept -&gt; decltype(std::declval&lt; const basic_json_t &amp; &gt;().template get_ptr&lt; PointerType &gt;())</div><div class="ttdoc">get a pointer value (explicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17380</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aa19b9b9ca6967295b102f1cc487b1ad7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aa19b9b9ca6967295b102f1cc487b1ad7">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, initializer_list_t ilist)</div><div class="ttdoc">inserts elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19869</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a33e97dee7c5faf1b36aff5b74a6c8f55"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a33e97dee7c5faf1b36aff5b74a6c8f55">nlohmann::detail::lexer::operator=</a></div><div class="ttdeci">lexer &amp; operator=(lexer &amp;)=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a0524486cd0b36a47448df882ec0d5e7b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a0524486cd0b36a47448df882ec0d5e7b">nlohmann::basic_json::from_bson</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(detail::input_adapter &amp;&amp;i, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">Create a JSON value from an input in BSON format.</div><div class="ttdef"><b>Definition:</b> json.hpp:21801</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a19aa457f9c4af1b7e3af59839132cc5c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a19aa457f9c4af1b7e3af59839132cc5c">nlohmann::detail::iter_impl::iter_impl</a></div><div class="ttdeci">iter_impl()=default</div><div class="ttdoc">default constructor</div><div class="ttdef"><b>Definition:</b> json.hpp:9349</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_affa7a78b8e9cc9cc3ac99927143142a5"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#affa7a78b8e9cc9cc3ac99927143142a5">nlohmann::json_sax::number_integer</a></div><div class="ttdeci">virtual bool number_integer(number_integer_t val)=0</div><div class="ttdoc">an integer number was read</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1serializer_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1serializer.html">nlohmann::detail::serializer</a></div><div class="ttdef"><b>Definition:</b> json.hpp:13787</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_aaf3620b8dfa4bed8a9ac2b51dd55dbd7"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#aaf3620b8dfa4bed8a9ac2b51dd55dbd7">nlohmann::detail::iter_impl::operator&gt;</a></div><div class="ttdeci">bool operator&gt;(const iter_impl &amp;other) const</div><div class="ttdoc">comparison: greater than</div><div class="ttdef"><b>Definition:</b> json.hpp:9775</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4b3f7eb2d4625d95a51fbbdceb7c5f39"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4b3f7eb2d4625d95a51fbbdceb7c5f39">nlohmann::basic_json::erase</a></div><div class="ttdeci">IteratorType erase(IteratorType first, IteratorType last)</div><div class="ttdoc">remove elements given an iterator range</div><div class="ttdef"><b>Definition:</b> json.hpp:18345</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a86ce930490cf7773b26f5ef49c04a350"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a86ce930490cf7773b26f5ef49c04a350">nlohmann::basic_json::allocator_type</a></div><div class="ttdeci">AllocatorType&lt; basic_json &gt; allocator_type</div><div class="ttdoc">the allocator type</div><div class="ttdef"><b>Definition:</b> json.hpp:14812</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aacd442b66140c764c594ac8ad7dfd5b3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aacd442b66140c764c594ac8ad7dfd5b3">nlohmann::basic_json::operator&lt;</a></div><div class="ttdeci">friend bool operator&lt;(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: less than</div><div class="ttdef"><b>Definition:</b> json.hpp:20372</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a2f3e68e7f111a1e5c7728742b3ca2b7f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2f3e68e7f111a1e5c7728742b3ca2b7f">nlohmann::detail::lexer::token_type::end_array</a></div><div class="ttdeci">@ end_array</div><div class="ttdoc">the character for array end ]</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__stream__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__stream__adapter.html">nlohmann::detail::output_stream_adapter</a></div><div class="ttdoc">output adapter for output streams</div><div class="ttdef"><b>Definition:</b> json.hpp:11235</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__basic__json_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__basic__json.html">nlohmann::detail::is_basic_json</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2476</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a7395bd0af29ac23fd3f21543c935cdfa"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a7395bd0af29ac23fd3f21543c935cdfa">nlohmann::json_pointer::operator/=</a></div><div class="ttdeci">json_pointer &amp; operator/=(const json_pointer &amp;ptr)</div><div class="ttdoc">append another JSON pointer at the end of this JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10170</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html"><div class="ttname"><a href="classnlohmann_1_1basic__json.html">nlohmann::basic_json</a></div><div class="ttdoc">a class to store JSON values</div><div class="ttdef"><b>Definition:</b> json.hpp:2421</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a745373036100d7392ad62c617cab59af"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a745373036100d7392ad62c617cab59af">nlohmann::detail::lexer::token_type::value_separator</a></div><div class="ttdeci">@ value_separator</div><div class="ttdoc">the value separator ,</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1invalid__iterator_html_a4e849260a3caa1b288c7e619130c6c09"><div class="ttname"><a href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">nlohmann::detail::invalid_iterator::create</a></div><div class="ttdeci">static invalid_iterator create(int id_, const std::string &amp;what_arg)</div><div class="ttdef"><b>Definition:</b> json.hpp:2024</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a43dceb18497ff745d936068c77c8cd56"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a43dceb18497ff745d936068c77c8cd56">nlohmann::detail::json_reverse_iterator::operator++</a></div><div class="ttdeci">const json_reverse_iterator operator++(int)</div><div class="ttdoc">post-increment (it++)</div><div class="ttdef"><b>Definition:</b> json.hpp:9999</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1conjunction_3_01B1_01_4_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.html">nlohmann::detail::conjunction&lt; B1 &gt;</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2800</div></div>
<div class="ttc" id="ajson_8hpp_html_a355f2770653ff7bdd5c74b204b5a3ad0"><div class="ttname"><a href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a></div><div class="ttdeci">#define JSON_HEDLEY_LIKELY(expr)</div><div class="ttdef"><b>Definition:</b> json.hpp:1123</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098ab7ae4c0e46d86f884677768160b26e9e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ab7ae4c0e46d86f884677768160b26e9e">nlohmann::detail::lexer::token_type::literal_null</a></div><div class="ttdeci">@ literal_null</div><div class="ttdoc">the null literal</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aba21440ea1aff44f718285ed7d6d20d9"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aba21440ea1aff44f718285ed7d6d20d9">nlohmann::basic_json::operator==</a></div><div class="ttdeci">friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20285</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html_a18e0a63e22dbdad5f6964276b81b813a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html#a18e0a63e22dbdad5f6964276b81b813a">nlohmann::detail::binary_reader::~binary_reader</a></div><div class="ttdeci">~binary_reader()=default</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a235ee975617f28e6a996d1e36a282312"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a235ee975617f28e6a996d1e36a282312">nlohmann::json_sax::end_array</a></div><div class="ttdeci">virtual bool end_array()=0</div><div class="ttdoc">the end of an array was read</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7768841baaaa7a21098a401c932efaff"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7768841baaaa7a21098a401c932efaff">nlohmann::basic_json::json_serializer</a></div><div class="ttdeci">JSONSerializer&lt; T, SFINAE &gt; json_serializer</div><div class="ttdef"><b>Definition:</b> json.hpp:14755</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html">nlohmann::detail::json_sax_acceptor</a></div><div class="ttdef"><b>Definition:</b> json.hpp:4940</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">nlohmann::detail::dtoa_impl::boundaries</a></div><div class="ttdef"><b>Definition:</b> json.hpp:12817</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a37816622d79ab4a1a76f4d7e872b65e1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a37816622d79ab4a1a76f4d7e872b65e1">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(CharT b, std::size_t l)</div><div class="ttdoc">input adapter for buffer</div><div class="ttdef"><b>Definition:</b> json.hpp:4228</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parse__error_html_a137ea4d27de45d8a844fd13451d40f3d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">nlohmann::detail::parse_error::create</a></div><div class="ttdeci">static parse_error create(int id_, const position_t &amp;pos, const std::string &amp;what_arg)</div><div class="ttdoc">create a parse error exception</div><div class="ttdef"><b>Definition:</b> json.hpp:1947</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1static__const_html_a6bb7ab2ddd6abc41fb4ffb7c6dfa237e"><div class="ttname"><a href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e">nlohmann::detail::static_const::value</a></div><div class="ttdeci">static constexpr T value</div><div class="ttdef"><b>Definition:</b> json.hpp:2235</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__to__json_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__to__json.html">nlohmann::detail::has_to_json</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2551</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3297</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__sax_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__sax.html">nlohmann::detail::is_sax</a></div><div class="ttdef"><b>Definition:</b> json.hpp:5077</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a94108d1a7563e103534f23eb5c1ee175"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a94108d1a7563e103534f23eb5c1ee175">nlohmann::detail::iter_impl::operator+</a></div><div class="ttdeci">friend iter_impl operator+(difference_type i, const iter_impl &amp;it)</div><div class="ttdoc">addition of distance and iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9842</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_afa338d17c0a7e834c73104258a2c8ced"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#afa338d17c0a7e834c73104258a2c8ced">nlohmann::detail::lexer::get_number_integer</a></div><div class="ttdeci">constexpr number_integer_t get_number_integer() const noexcept</div><div class="ttdoc">return integer value</div><div class="ttdef"><b>Definition:</b> json.hpp:8452</div></div>
<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3431</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098afab1694b1b3937a079f4625fe0b6108b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098afab1694b1b3937a079f4625fe0b6108b">nlohmann::detail::lexer::token_type::literal_false</a></div><div class="ttdeci">@ literal_false</div><div class="ttdoc">the false literal</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a316663487f1d20c0cf349b23f9494bda"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">nlohmann::basic_json::insert_iterator</a></div><div class="ttdeci">iterator insert_iterator(const_iterator pos, Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> json.hpp:19679</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a26caf0069a50ce4ecb010a1453e883fc"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a26caf0069a50ce4ecb010a1453e883fc">nlohmann::detail::json_reverse_iterator::operator++</a></div><div class="ttdeci">json_reverse_iterator &amp; operator++()</div><div class="ttdoc">pre-increment (++it)</div><div class="ttdef"><b>Definition:</b> json.hpp:10005</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098acc3c64f8ae08c00de1b33f19a4d2913a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098acc3c64f8ae08c00de1b33f19a4d2913a">nlohmann::detail::lexer::token_type::name_separator</a></div><div class="ttdeci">@ name_separator</div><div class="ttdoc">the name separator :</div></div>
<div class="ttc" id="anamespacenlohmann_html_a9cc9a3033850a092f791d86854d117fc"><div class="ttname"><a href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc">nlohmann::json</a></div><div class="ttdeci">basic_json&lt;&gt; json</div><div class="ttdoc">default JSON class</div><div class="ttdef"><b>Definition:</b> json.hpp:2445</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a86a249e92a5274dec7ea20e52b0cc878"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a86a249e92a5274dec7ea20e52b0cc878">nlohmann::detail::primitive_iterator_t::operator-</a></div><div class="ttdeci">constexpr friend difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9230</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html">nlohmann::detail::input_adapter</a></div><div class="ttdef"><b>Definition:</b> json.hpp:4197</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6e2e21da48f5d9471716cd868a068327"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6e2e21da48f5d9471716cd868a068327">nlohmann::basic_json::operator!=</a></div><div class="ttdeci">friend bool operator!=(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: not equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20319</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2_html_a610272ed924122e0c46d158ecdfe6faf"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a610272ed924122e0c46d158ecdfe6faf">nlohmann::detail::has_non_default_from_json&lt; BasicJsonType, T, enable_if_t&lt; not is_basic_json&lt; T &gt;::value &gt; &gt;::serializer</a></div><div class="ttdeci">typename BasicJsonType::template json_serializer&lt; T, void &gt; serializer</div><div class="ttdef"><b>Definition:</b> json.hpp:2541</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab2318780e5ae692039e816b6ac32c91e"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab2318780e5ae692039e816b6ac32c91e">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">const_reference operator[](const typename object_t::key_type &amp;key) const</div><div class="ttdoc">read-only access specified object element</div><div class="ttdef"><b>Definition:</b> json.hpp:17847</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a7159ed1cfe7c423a2baef8bea0c94509"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a7159ed1cfe7c423a2baef8bea0c94509">nlohmann::detail::iter_impl::operator=</a></div><div class="ttdeci">iter_impl &amp; operator=(const iter_impl&lt; typename std::remove_const&lt; BasicJsonType &gt;::type &gt; &amp;other) noexcept</div><div class="ttdoc">converting assignment</div><div class="ttdef"><b>Definition:</b> json.hpp:9466</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40a466deec76ecdf5fca6d38571f6324d54"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a466deec76ecdf5fca6d38571f6324d54">nlohmann::detail::input_format_t::json</a></div><div class="ttdeci">@ json</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a697d12b5bd6205f8866691b166b7c7dc"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a697d12b5bd6205f8866691b166b7c7dc">nlohmann::json_pointer::push_back</a></div><div class="ttdeci">void push_back(const std::string &amp;token)</div><div class="ttdoc">append an unescaped token at the end of the reference pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10366</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1from__json__fn_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1from__json__fn.html">nlohmann::detail::from_json_fn</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3241</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a28253915d9db4a0112d60eaee0422949"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a28253915d9db4a0112d60eaee0422949">nlohmann::detail::from_json_tuple_impl</a></div><div class="ttdeci">void from_json_tuple_impl(const BasicJsonType &amp;j, Tuple &amp;t, index_sequence&lt; Idx... &gt;)</div><div class="ttdef"><b>Definition:</b> json.hpp:3190</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4_html_a669df5a4d258b588e67f747c6d656cdb"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html#a669df5a4d258b588e67f747c6d656cdb">nlohmann::detail::external_constructor&lt; value_t::number_float &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, typename BasicJsonType::number_float_t val) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3518</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__vector__adapter_html_af6a22d4210bb7bc2da66021300ddd6db"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__vector__adapter.html#af6a22d4210bb7bc2da66021300ddd6db">nlohmann::detail::output_vector_adapter::write_character</a></div><div class="ttdeci">void write_character(CharType c) override</div><div class="ttdef"><b>Definition:</b> json.hpp:11218</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_aebf8800023eb20d472f111f86b189e60"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aebf8800023eb20d472f111f86b189e60">nlohmann::detail::json_sax_acceptor::number_float</a></div><div class="ttdeci">bool number_float(number_float_t, const string_t &amp;)</div><div class="ttdef"><b>Definition:</b> json.hpp:4968</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a65b0a24e1361a030ad0a661de22f6c8e"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a65b0a24e1361a030ad0a661de22f6c8e">nlohmann::basic_json::swap</a></div><div class="ttdeci">void swap(array_t &amp;other)</div><div class="ttdoc">exchanges the values</div><div class="ttdef"><b>Definition:</b> json.hpp:20086</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a264d4d58bc1fd82bcc7bf6bf73d6acad"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a264d4d58bc1fd82bcc7bf6bf73d6acad">nlohmann::detail::parse_error_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().parse_error(std::declval&lt; std::size_t &gt;(), std::declval&lt; const std::string &amp; &gt;(), std::declval&lt; const Exception &amp; &gt;())) parse_error_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5074</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6886a5001f5b449ad316101a311ce536"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6886a5001f5b449ad316101a311ce536">nlohmann::basic_json::json_pointer</a></div><div class="ttdeci">::nlohmann::json_pointer&lt; basic_json &gt; json_pointer</div><div class="ttdoc">JSON Pointer, see nlohmann::json_pointer.</div><div class="ttdef"><b>Definition:</b> json.hpp:14753</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aaceba2e4cf75fc983bb75c78c8742e65"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aaceba2e4cf75fc983bb75c78c8742e65">nlohmann::basic_json::parse_event_t</a></div><div class="ttdeci">typename parser::parse_event_t parse_event_t</div><div class="ttdoc">parser event types</div><div class="ttdef"><b>Definition:</b> json.hpp:15661</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4b1fb3671ade9afc8d33b2c9510acbfc"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4b1fb3671ade9afc8d33b2c9510acbfc">nlohmann::basic_json::front</a></div><div class="ttdeci">const_reference front() const</div><div class="ttdoc">access the first element</div><div class="ttdef"><b>Definition:</b> json.hpp:18137</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a2f47d3c6a441c57dd2be00449fbb88e1"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a2f47d3c6a441c57dd2be00449fbb88e1">nlohmann::basic_json::max_size</a></div><div class="ttdeci">size_type max_size() const noexcept</div><div class="ttdoc">returns the maximum possible number of elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19265</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a233b02b0839ef798942dd46157cc0fe6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a233b02b0839ef798942dd46157cc0fe6">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">reference operator[](const typename object_t::key_type &amp;key)</div><div class="ttdoc">access specified object element</div><div class="ttdef"><b>Definition:</b> json.hpp:17798</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_acc422c11342b31368f610b6f96fcedc6"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">nlohmann::detail::get</a></div><div class="ttdeci">auto get(const nlohmann::detail::iteration_proxy_value&lt; IteratorType &gt; &amp;i) -&gt; decltype(i.key())</div><div class="ttdef"><b>Definition:</b> json.hpp:3412</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4_html_a4ebb19b1cb84b4cb224a4c5322e16f14"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a4ebb19b1cb84b4cb224a4c5322e16f14">nlohmann::detail::external_constructor&lt; value_t::array &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, const std::vector&lt; bool &gt; &amp;arr)</div><div class="ttdef"><b>Definition:</b> json.hpp:3582</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a6b032074795534fe7144a4f1c86ead2f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a6b032074795534fe7144a4f1c86ead2f">nlohmann::detail::primitive_iterator_t::operator&lt;</a></div><div class="ttdeci">constexpr friend bool operator&lt;(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9218</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_ae89f11268d4724b3080473f7218abe86"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#ae89f11268d4724b3080473f7218abe86">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(std::istream &amp;i)</div><div class="ttdoc">input adapter for input stream</div><div class="ttdef"><b>Definition:</b> json.hpp:4205</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a14338d8f3174601c0b2b7ef28752ab17"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17">nlohmann::detail::parser::parse</a></div><div class="ttdeci">void parse(const bool strict, BasicJsonType &amp;result)</div><div class="ttdoc">public parser interface</div><div class="ttdef"><b>Definition:</b> json.hpp:8733</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad14563c53cf7ca9189bc164082367bf3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">nlohmann::basic_json::type_name</a></div><div class="ttdeci">const JSON_HEDLEY_RETURNS_NON_NULL char * type_name() const noexcept</div><div class="ttdoc">return the type as string</div><div class="ttdef"><b>Definition:</b> json.hpp:20987</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_abcc9d51bc52f2e8483bbe4018f05e978"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#abcc9d51bc52f2e8483bbe4018f05e978">nlohmann::detail::iter_impl::operator-=</a></div><div class="ttdeci">iter_impl &amp; operator-=(difference_type i)</div><div class="ttdoc">subtract from iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9822</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_ae07454608ea6f3cfb765f95e3c850043"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ae07454608ea6f3cfb765f95e3c850043">nlohmann::detail::json_sax_acceptor::number_unsigned_t</a></div><div class="ttdeci">typename BasicJsonType::number_unsigned_t number_unsigned_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4944</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a11458b7982adba51bc634f2f8c961e9b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a11458b7982adba51bc634f2f8c961e9b">nlohmann::basic_json::from_msgpack</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(detail::input_adapter &amp;&amp;i, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in MessagePack format</div><div class="ttdef"><b>Definition:</b> json.hpp:21626</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_abe0015ae09e855f502620315b9dcc3db"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#abe0015ae09e855f502620315b9dcc3db">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(const std::u32string &amp;ws)</div><div class="ttdef"><b>Definition:</b> json.hpp:4218</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a2406c5125f7128fb9c01921df2903001"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a2406c5125f7128fb9c01921df2903001">nlohmann::detail::json_sax_dom_callback_parser::number_unsigned_t</a></div><div class="ttdeci">typename BasicJsonType::number_unsigned_t number_unsigned_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4640</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_ad42df56e913abe26ed556e0e92f386f4"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4">nlohmann::detail::number_float_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().number_float(std::declval&lt; Float &gt;(), std::declval&lt; const String &amp; &gt;())) number_float_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5047</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">nlohmann::detail::dtoa_impl::cached_power</a></div><div class="ttdef"><b>Definition:</b> json.hpp:12956</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1internal__iterator_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1internal__iterator.html">nlohmann::detail::internal_iterator</a></div><div class="ttdoc">an iterator value</div><div class="ttdef"><b>Definition:</b> json.hpp:9287</div></div>
<div class="ttc" id="ajson_8hpp_html_a7c94253db90041af11dd946a49f0f8a4"><div class="ttname"><a href="json_8hpp.html#a7c94253db90041af11dd946a49f0f8a4">NLOHMANN_JSON_VERSION_MAJOR</a></div><div class="ttdeci">#define NLOHMANN_JSON_VERSION_MAJOR</div><div class="ttdef"><b>Definition:</b> json.hpp:33</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_adc29dd6358ff7a9062d7e168c24e7484"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#adc29dd6358ff7a9062d7e168c24e7484">nlohmann::basic_json::operator+=</a></div><div class="ttdeci">reference operator+=(const basic_json &amp;val)</div><div class="ttdoc">add an object to an array</div><div class="ttdef"><b>Definition:</b> json.hpp:19467</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a3f5fe42a9b195de8d251d6d98d5ee92c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3f5fe42a9b195de8d251d6d98d5ee92c">nlohmann::detail::json_sax_acceptor::boolean</a></div><div class="ttdeci">bool boolean(bool)</div><div class="ttdef"><b>Definition:</b> json.hpp:4953</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a83fe4a151b3a591f357527d5d9aa1b9f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a83fe4a151b3a591f357527d5d9aa1b9f">nlohmann::basic_json::back</a></div><div class="ttdeci">const_reference back() const</div><div class="ttdoc">access the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18183</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b_html_a5e82d2d8dabd022b8ff916f2e83a82f2"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a5e82d2d8dabd022b8ff916f2e83a82f2">nlohmann::detail::iterator_types&lt; It, void_t&lt; typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category &gt; &gt;::reference</a></div><div class="ttdeci">typename It::reference reference</div><div class="ttdef"><b>Definition:</b> json.hpp:2290</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_a8c3eb3c6e952ed0cd7eece586ab4047c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#a8c3eb3c6e952ed0cd7eece586ab4047c">nlohmann::detail::json_ref::json_ref</a></div><div class="ttdeci">json_ref(const value_type &amp;value)</div><div class="ttdef"><b>Definition:</b> json.hpp:11110</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a887307cfa15a418470b3c34088fc8352"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a887307cfa15a418470b3c34088fc8352">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(const ContiguousContainer &amp;c)</div><div class="ttdoc">input adapter for contiguous container</div><div class="ttdef"><b>Definition:</b> json.hpp:4292</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8ab61397c10f18b305520da7073b2b45"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8ab61397c10f18b305520da7073b2b45">nlohmann::basic_json::at</a></div><div class="ttdeci">reference at(const json_pointer &amp;ptr)</div><div class="ttdoc">access specified element via JSON Pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:21942</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_ab35586a44f2222272c5346baa3013f67"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#ab35586a44f2222272c5346baa3013f67">nlohmann::detail::iter_impl::value_type</a></div><div class="ttdeci">typename BasicJsonType::value_type value_type</div><div class="ttdoc">the type of the values when the iterator is dereferenced</div><div class="ttdef"><b>Definition:</b> json.hpp:9370</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a50ec80b02d0f3f51130d4abb5d1cfdc5"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a50ec80b02d0f3f51130d4abb5d1cfdc5">nlohmann::basic_json::dump</a></div><div class="ttdeci">string_t dump(const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) const</div><div class="ttdoc">serialization</div><div class="ttdef"><b>Definition:</b> json.hpp:16560</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_adcf8ca5079f5db993820bf50036bf45d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">nlohmann::basic_json::value</a></div><div class="ttdeci">ValueType value(const typename object_t::key_type &amp;key, const ValueType &amp;default_value) const</div><div class="ttdoc">access specified object element with default value</div><div class="ttdef"><b>Definition:</b> json.hpp:18003</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a14cf32c36b043db47510ae183d38ce5b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a14cf32c36b043db47510ae183d38ce5b">nlohmann::detail::lexer::get_error_message</a></div><div class="ttdeci">constexpr const JSON_HEDLEY_RETURNS_NON_NULL char * get_error_message() const noexcept</div><div class="ttdoc">return syntax error message</div><div class="ttdef"><b>Definition:</b> json.hpp:8513</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1position__t_html_a94cf85cd91d478c20ae143eba906ea1a"><div class="ttname"><a href="structnlohmann_1_1detail_1_1position__t.html#a94cf85cd91d478c20ae143eba906ea1a">nlohmann::detail::position_t::chars_read_total</a></div><div class="ttdeci">std::size_t chars_read_total</div><div class="ttdoc">the total number of characters read</div><div class="ttdef"><b>Definition:</b> json.hpp:92</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__object__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__object__type.html">nlohmann::detail::is_compatible_object_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2616</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a2f2ef6f5aca9a0c48fcfb1290f7b2b0d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a2f2ef6f5aca9a0c48fcfb1290f7b2b0d">nlohmann::detail::lexer::~lexer</a></div><div class="ttdeci">~lexer()=default</div></div>
<div class="ttc" id="ajson_8hpp_html_ab5ca1e164894d78d3276d2e5fe58c5e3"><div class="ttname"><a href="json_8hpp.html#ab5ca1e164894d78d3276d2e5fe58c5e3">NLOHMANN_JSON_VERSION_MINOR</a></div><div class="ttdeci">#define NLOHMANN_JSON_VERSION_MINOR</div><div class="ttdef"><b>Definition:</b> json.hpp:34</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1nonesuch_html_add6ef84c52a851e391cef514c85f2ffe"><div class="ttname"><a href="structnlohmann_1_1detail_1_1nonesuch.html#add6ef84c52a851e391cef514c85f2ffe">nlohmann::detail::nonesuch::operator=</a></div><div class="ttdeci">void operator=(nonesuch const &amp;)=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__string__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__string__adapter.html">nlohmann::detail::output_string_adapter</a></div><div class="ttdoc">output adapter for basic_string</div><div class="ttdef"><b>Definition:</b> json.hpp:11259</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae11a3a51782c058fff2f6550cdfb9b3c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae11a3a51782c058fff2f6550cdfb9b3c">nlohmann::basic_json::push_back</a></div><div class="ttdeci">void push_back(const typename object_t::value_type &amp;val)</div><div class="ttdoc">add an object to an object</div><div class="ttdef"><b>Definition:</b> json.hpp:19493</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a8ef76aeb5a5032768f0f61f48ac189c0"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a8ef76aeb5a5032768f0f61f48ac189c0">nlohmann::detail::iter_impl::operator+</a></div><div class="ttdeci">iter_impl operator+(difference_type i) const</div><div class="ttdoc">add to iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9831</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html_aed84f0302eb232d3b69f7653bef2337a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html#aed84f0302eb232d3b69f7653bef2337a">nlohmann::detail::binary_reader::binary_reader</a></div><div class="ttdeci">binary_reader(input_adapter_t adapter)</div><div class="ttdoc">create a binary reader</div><div class="ttdef"><b>Definition:</b> json.hpp:5189</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4_html_a1b9226304e6492141080b4ebf228ddac"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a1b9226304e6492141080b4ebf228ddac">nlohmann::detail::external_constructor&lt; value_t::array &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, const std::valarray&lt; T &gt; &amp;arr)</div><div class="ttdef"><b>Definition:</b> json.hpp:3596</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a74da7b17bda76f65d276feb18209c913"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913">nlohmann::detail::number_unsigned_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().number_unsigned(std::declval&lt; Unsigned &gt;())) number_unsigned_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5043</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_ac0b9276f1102ed4b9cd3f5f56287e3ce"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#ac0b9276f1102ed4b9cd3f5f56287e3ce">nlohmann::detail::iter_impl::operator[]</a></div><div class="ttdeci">reference operator[](difference_type n) const</div><div class="ttdoc">access to successor</div><div class="ttdef"><b>Definition:</b> json.hpp:9885</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1make__index__sequence_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1make__index__sequence.html">nlohmann::detail::make_index_sequence</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2217</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a390c209bffd8c4800c8f3076dc465a20"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a390c209bffd8c4800c8f3076dc465a20">nlohmann::json_sax::number_float_t</a></div><div class="ttdeci">typename BasicJsonType::number_float_t number_float_t</div><div class="ttdoc">type for floating-point numbers</div><div class="ttdef"><b>Definition:</b> json.hpp:4340</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebeaa4388a3d92419edbb1c6efd4d52461f3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeaa4388a3d92419edbb1c6efd4d52461f3">nlohmann::detail::parser::parse_event_t::array_start</a></div><div class="ttdeci">@ array_start</div><div class="ttdoc">the parser read [ and started to process a JSON array</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a7bbf1ecd75b7a0a488608a2760237c9f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a7bbf1ecd75b7a0a488608a2760237c9f">nlohmann::detail::json_reverse_iterator::operator--</a></div><div class="ttdeci">const json_reverse_iterator operator--(int)</div><div class="ttdoc">post-decrement (it)</div><div class="ttdef"><b>Definition:</b> json.hpp:10011</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aef9ce5dd2381caee1f8ddcdb5bdd9c65"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">nlohmann::basic_json::is_array</a></div><div class="ttdeci">constexpr bool is_array() const noexcept</div><div class="ttdoc">return whether value is an array</div><div class="ttdef"><b>Definition:</b> json.hpp:16872</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1c15707055088cd5436ae91db72cbe67"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1c15707055088cd5436ae91db72cbe67">nlohmann::basic_json::end</a></div><div class="ttdeci">const_iterator end() const noexcept</div><div class="ttdoc">returns a const iterator to one past the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18755</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_af846b6cf2f926009ff3a7a61495ca383"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#af846b6cf2f926009ff3a7a61495ca383">nlohmann::detail::to_json_function</a></div><div class="ttdeci">decltype(T::to_json(std::declval&lt; Args &gt;()...)) to_json_function</div><div class="ttdef"><b>Definition:</b> json.hpp:2510</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a914ea0555cea5290449fb791ae41c655"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a914ea0555cea5290449fb791ae41c655">nlohmann::detail::json_sax_dom_callback_parser::number_float_t</a></div><div class="ttdeci">typename BasicJsonType::number_float_t number_float_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4641</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a040e60243cc7c18a6078c6b83cdb4a81"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a040e60243cc7c18a6078c6b83cdb4a81">nlohmann::detail::json_sax_dom_callback_parser::start_object</a></div><div class="ttdeci">bool start_object(std::size_t len)</div><div class="ttdef"><b>Definition:</b> json.hpp:4697</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a0bf83ab08abe1ae4b51c790c85cdf151"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a0bf83ab08abe1ae4b51c790c85cdf151">nlohmann::detail::primitive_iterator_t::operator-=</a></div><div class="ttdeci">primitive_iterator_t &amp; operator-=(difference_type n) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9267</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy_html_afe257e972e3b4658ef2e355f7389d4a5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy.html#afe257e972e3b4658ef2e355f7389d4a5">nlohmann::detail::iteration_proxy::iteration_proxy</a></div><div class="ttdeci">iteration_proxy(typename IteratorType::reference cont) noexcept</div><div class="ttdoc">construct iteration proxy from a container</div><div class="ttdef"><b>Definition:</b> json.hpp:3393</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a000cef9f49c8f04319cf98150361d13d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a000cef9f49c8f04319cf98150361d13d">nlohmann::basic_json::from_bson</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(A1 &amp;&amp;a1, A2 &amp;&amp;a2, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">Create a JSON value from an input in BSON format.</div><div class="ttdef"><b>Definition:</b> json.hpp:21817</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1exception_html_a11fe48748e811531614c84883b00ccd5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1exception.html#a11fe48748e811531614c84883b00ccd5">nlohmann::detail::exception::what</a></div><div class="ttdeci">const JSON_HEDLEY_RETURNS_NON_NULL char * what() const noexcept override</div><div class="ttdoc">returns the explanatory string</div><div class="ttdef"><b>Definition:</b> json.hpp:1869</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5e34c5435e557d0bf666bd7311211405"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5e34c5435e557d0bf666bd7311211405">nlohmann::basic_json::operator&lt;&lt;</a></div><div class="ttdeci">friend std::ostream &amp; operator&lt;&lt;(std::ostream &amp;o, const basic_json &amp;j)</div><div class="ttdoc">serialize to stream</div><div class="ttdef"><b>Definition:</b> json.hpp:20642</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a34d6a60dd99e9f33b8273a1c8db5669b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a34d6a60dd99e9f33b8273a1c8db5669b">nlohmann::basic_json::operator&gt;&gt;</a></div><div class="ttdeci">friend std::ostream &amp; operator&gt;&gt;(const basic_json &amp;j, std::ostream &amp;o)</div><div class="ttdoc">serialize to stream</div><div class="ttdef"><b>Definition:</b> json.hpp:20666</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1nonesuch_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1nonesuch.html">nlohmann::detail::nonesuch</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2336</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a44516cba796e50ce5d62c9d6b7ab4c1d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a44516cba796e50ce5d62c9d6b7ab4c1d">nlohmann::basic_json::get</a></div><div class="ttdeci">auto get() noexcept -&gt; decltype(std::declval&lt; basic_json_t &amp; &gt;().template get_ptr&lt; PointerType &gt;())</div><div class="ttdoc">get a pointer value (explicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17368</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a082bdafd3b4c61d9d1e92b35b8f75ee3"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a082bdafd3b4c61d9d1e92b35b8f75ee3">nlohmann::detail::reference_t</a></div><div class="ttdeci">typename T::reference reference_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2501</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_a646dbb2b1842f44f42ee1e14245b8595"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a646dbb2b1842f44f42ee1e14245b8595">nlohmann::detail::iteration_proxy_value::operator!=</a></div><div class="ttdeci">bool operator!=(const iteration_proxy_value &amp;o) const</div><div class="ttdoc">inequality operator (needed for range-based for)</div><div class="ttdef"><b>Definition:</b> json.hpp:3344</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1input__adapter__protocol_html_aac10a6a4048a8ce8e2ed50277692a3ca"><div class="ttname"><a href="structnlohmann_1_1detail_1_1input__adapter__protocol.html#aac10a6a4048a8ce8e2ed50277692a3ca">nlohmann::detail::input_adapter_protocol::get_character</a></div><div class="ttdeci">virtual std::char_traits&lt; char &gt;::int_type get_character()=0</div><div class="ttdoc">get a character [0,255] or std::char_traits&lt;char&gt;::eof().</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad865d6c291b237ae508d5cb2146b5877"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">nlohmann::basic_json::cbegin</a></div><div class="ttdeci">const_iterator cbegin() const noexcept</div><div class="ttdoc">returns a const iterator to the first element</div><div class="ttdef"><b>Definition:</b> json.hpp:18714</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_ac1ea1316de0b4a219f707c76b1db1966"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">nlohmann::detail::dtoa_impl::kAlpha</a></div><div class="ttdeci">constexpr int kAlpha</div><div class="ttdef"><b>Definition:</b> json.hpp:12953</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_ac013af35a21e9387993b19da5b3e0ae2"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#ac013af35a21e9387993b19da5b3e0ae2">nlohmann::detail::lexer::get_number_float</a></div><div class="ttdeci">constexpr number_float_t get_number_float() const noexcept</div><div class="ttdoc">return floating-point value</div><div class="ttdef"><b>Definition:</b> json.hpp:8464</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__object__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html">nlohmann::detail::is_compatible_object_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2596</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__sax_html_a8ab7e51087000e948b4a2492257484dc"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc">nlohmann::detail::is_sax::value</a></div><div class="ttdeci">static constexpr bool value</div><div class="ttdef"><b>Definition:</b> json.hpp:5090</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1file__input__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1file__input__adapter.html">nlohmann::detail::file_input_adapter</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3918</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1ef93e2006dbe52667294f5ef38b0b10"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1ef93e2006dbe52667294f5ef38b0b10">nlohmann::basic_json::rbegin</a></div><div class="ttdeci">reverse_iterator rbegin() noexcept</div><div class="ttdoc">returns an iterator to the reverse-beginning</div><div class="ttdef"><b>Definition:</b> json.hpp:18815</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aff3d5cd2a75612364b888d8693231b58"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aff3d5cd2a75612364b888d8693231b58">nlohmann::basic_json::const_pointer</a></div><div class="ttdeci">typename std::allocator_traits&lt; allocator_type &gt;::const_pointer const_pointer</div><div class="ttdoc">the type of an element const pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:14817</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a709afd52def2e258dac0b8a67dc4ea26"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a709afd52def2e258dac0b8a67dc4ea26">nlohmann::detail::lexer::skip_bom</a></div><div class="ttdeci">bool skip_bom()</div><div class="ttdoc">skip the UTF-8 byte order mark</div><div class="ttdef"><b>Definition:</b> json.hpp:8526</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_ae75d313d6d1b9c29508e740a10fefa18"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae75d313d6d1b9c29508e740a10fefa18">nlohmann::detail::json_sax_dom_callback_parser::end_object</a></div><div class="ttdeci">bool end_object()</div><div class="ttdef"><b>Definition:</b> json.hpp:4732</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__integer__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__integer__type.html">nlohmann::detail::is_compatible_integer_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2778</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a265a473e939184aa42655c9ccdf34e58"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a265a473e939184aa42655c9ccdf34e58">nlohmann::basic_json::parse</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse(detail::input_adapter &amp;&amp;i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)</div><div class="ttdoc">deserialize from a compatible input</div><div class="ttdef"><b>Definition:</b> json.hpp:20745</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__string__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html">nlohmann::detail::is_compatible_string_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2654</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a27c3fc3bd42ac406f763184aa8ae4cb0"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a27c3fc3bd42ac406f763184aa8ae4cb0">nlohmann::detail::string_function_t</a></div><div class="ttdeci">decltype(std::declval&lt; T &amp; &gt;().string(std::declval&lt; String &amp; &gt;())) string_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5051</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__stream__adapter_html_aeac5048221929b8f7558d1698dd0fb3a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__stream__adapter.html#aeac5048221929b8f7558d1698dd0fb3a">nlohmann::detail::input_stream_adapter::operator=</a></div><div class="ttdeci">input_stream_adapter &amp; operator=(input_stream_adapter &amp;)=delete</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_af2b78a8b9c9276b07c928b21bb1e2d54"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2b78a8b9c9276b07c928b21bb1e2d54">nlohmann::detail::iteration_proxy_value::operator==</a></div><div class="ttdeci">bool operator==(const iteration_proxy_value &amp;o) const</div><div class="ttdoc">equality operator (needed for InputIterator)</div><div class="ttdef"><b>Definition:</b> json.hpp:3338</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a5c53878cf08d463eb4e7ca0270532572"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a5c53878cf08d463eb4e7ca0270532572">nlohmann::json_sax::start_array</a></div><div class="ttdeci">virtual bool start_array(std::size_t elements)=0</div><div class="ttdoc">the beginning of an array was read</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a66dfe39f03b05d6b7265a0ff748d64ef"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a66dfe39f03b05d6b7265a0ff748d64ef">nlohmann::detail::key_type_t</a></div><div class="ttdeci">typename T::key_type key_type_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2489</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aefee1f777198c68724bd127e0c8abbe4"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aefee1f777198c68724bd127e0c8abbe4">nlohmann::basic_json::pointer</a></div><div class="ttdeci">typename std::allocator_traits&lt; allocator_type &gt;::pointer pointer</div><div class="ttdoc">the type of an element pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:14815</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a2f7ea9f7022850809c60fc3263775840"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">nlohmann::detail::iter_impl::difference_type</a></div><div class="ttdeci">typename BasicJsonType::difference_type difference_type</div><div class="ttdoc">a type to represent differences between iterators</div><div class="ttdef"><b>Definition:</b> json.hpp:9372</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a98e611d67b7bd75307de99c9358ab2dc"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">nlohmann::basic_json::number_integer_t</a></div><div class="ttdeci">NumberIntegerType number_integer_t</div><div class="ttdoc">a type for a number (integer)</div><div class="ttdef"><b>Definition:</b> json.hpp:15223</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a40f7bb070a60e8ba14fffb9c117fcbd8"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">nlohmann::detail::from_json_array_impl</a></div><div class="ttdeci">void from_json_array_impl(const BasicJsonType &amp;j, typename BasicJsonType::array_t &amp;arr, priority_tag&lt; 3 &gt;)</div><div class="ttdef"><b>Definition:</b> json.hpp:3042</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html"><div class="ttname"><a href="structnlohmann_1_1json__sax.html">nlohmann::json_sax</a></div><div class="ttdoc">SAX interface.</div><div class="ttdef"><b>Definition:</b> json.hpp:4333</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5ee0e3e8afc7cbd932d6ed66418fa80a"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5ee0e3e8afc7cbd932d6ed66418fa80a">nlohmann::basic_json::operator&gt;=</a></div><div class="ttdeci">friend bool operator&gt;=(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: greater than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20597</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1file__input__adapter_html_aeade050f2793280503be93feff2ece5b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1file__input__adapter.html#aeade050f2793280503be93feff2ece5b">nlohmann::detail::file_input_adapter::file_input_adapter</a></div><div class="ttdeci">file_input_adapter(std::FILE *f) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3922</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power_html_a8c1f2efed643eeaa8fae83c697a29c6a"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a8c1f2efed643eeaa8fae83c697a29c6a">nlohmann::detail::dtoa_impl::cached_power::k</a></div><div class="ttdeci">int k</div><div class="ttdef"><b>Definition:</b> json.hpp:12960</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1d568ba1bd6978d80db42aa76626e2cf"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1d568ba1bd6978d80db42aa76626e2cf">nlohmann::basic_json::from_cbor</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(detail::input_adapter &amp;&amp;i, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in CBOR format</div><div class="ttdef"><b>Definition:</b> json.hpp:21517</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy.html">nlohmann::detail::iteration_proxy</a></div><div class="ttdoc">proxy class for the items() function</div><div class="ttdef"><b>Definition:</b> json.hpp:3385</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a15dfb2744fed2ef40c12a9e9a20d6dbc"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a15dfb2744fed2ef40c12a9e9a20d6dbc">nlohmann::detail::iter_impl::key</a></div><div class="ttdeci">const object_t::key_type &amp; key() const</div><div class="ttdoc">return the key of an object iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9916</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4_html_a3a369c5d49596dd4411e368425f9ac7a"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a3a369c5d49596dd4411e368425f9ac7a">nlohmann::detail::external_constructor&lt; value_t::object &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, const typename BasicJsonType::object_t &amp;obj)</div><div class="ttdef"><b>Definition:</b> json.hpp:3613</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4_html_a479098e9480e0adb30fb3fe3586a8005"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#a479098e9480e0adb30fb3fe3586a8005">nlohmann::detail::has_to_json&lt; BasicJsonType, T, enable_if_t&lt; not is_basic_json&lt; T &gt;::value &gt; &gt;::serializer</a></div><div class="ttdeci">typename BasicJsonType::template json_serializer&lt; T, void &gt; serializer</div><div class="ttdef"><b>Definition:</b> json.hpp:2556</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aaa77b0c9745130b77733a92a1a2e82ec"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">nlohmann::detail::to_json</a></div><div class="ttdeci">void to_json(BasicJsonType &amp;j, const T &amp;b)</div><div class="ttdef"><b>Definition:</b> json.hpp:3758</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b_html_a1ce16c1c8c1d6a195f5a3d3ad31820f0"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a1ce16c1c8c1d6a195f5a3d3ad31820f0">nlohmann::detail::iterator_types&lt; It, void_t&lt; typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category &gt; &gt;::difference_type</a></div><div class="ttdeci">typename It::difference_type difference_type</div><div class="ttdef"><b>Definition:</b> json.hpp:2287</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_aaaa6c0b1d74e74e35e5f7b56dfd6c5d1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aaaa6c0b1d74e74e35e5f7b56dfd6c5d1">nlohmann::detail::json_reverse_iterator::operator-</a></div><div class="ttdeci">difference_type operator-(const json_reverse_iterator &amp;other) const</div><div class="ttdoc">return difference</div><div class="ttdef"><b>Definition:</b> json.hpp:10041</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a95bb3e8b6feaa523ecda8106fb5e38e3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a95bb3e8b6feaa523ecda8106fb5e38e3">nlohmann::detail::json_sax_acceptor::parse_error</a></div><div class="ttdeci">bool parse_error(std::size_t, const std::string &amp;, const detail::exception &amp;)</div><div class="ttdef"><b>Definition:</b> json.hpp:5003</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9c4f3554773649beef69461a10a3de87"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9c4f3554773649beef69461a10a3de87">nlohmann::basic_json::diff</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json diff(const basic_json &amp;source, const basic_json &amp;target, const std::string &amp;path=&quot;&quot;)</div><div class="ttdoc">creates a diff as a JSON patch</div><div class="ttdef"><b>Definition:</b> json.hpp:22406</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">nlohmann::detail::input_format_t::ubjson</a></div><div class="ttdeci">@ ubjson</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a86f035d9c4319360014b922b5e433ced"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a86f035d9c4319360014b922b5e433ced">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(CharT b)</div><div class="ttdoc">input adapter for string literal</div><div class="ttdef"><b>Definition:</b> json.hpp:4240</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a26dc71e2dd9336587e56062178f9abce"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a26dc71e2dd9336587e56062178f9abce">nlohmann::detail::pointer_t</a></div><div class="ttdeci">typename T::pointer pointer_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2498</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebeae73f17027cb0acbb537f29d0a6944b26"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeae73f17027cb0acbb537f29d0a6944b26">nlohmann::detail::parser::parse_event_t::object_start</a></div><div class="ttdeci">@ object_start</div><div class="ttdoc">the parser read { and started to process a JSON object</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098ad2a8e6f6721cccec0b466301dd9495a5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ad2a8e6f6721cccec0b466301dd9495a5">nlohmann::detail::lexer::token_type::literal_or_value</a></div><div class="ttdeci">@ literal_or_value</div><div class="ttdoc">a literal or the begin of a value (only for diagnostics)</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_afefc38fc08bdb7a9a7474b5ab4a1140f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#afefc38fc08bdb7a9a7474b5ab4a1140f">nlohmann::basic_json::operator!=</a></div><div class="ttdeci">friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: not equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20330</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_adaa1ed0a889d86c8e0216a3d66980f76"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#adaa1ed0a889d86c8e0216a3d66980f76">nlohmann::basic_json::swap</a></div><div class="ttdeci">void swap(string_t &amp;other)</div><div class="ttdoc">exchanges the values</div><div class="ttdef"><b>Definition:</b> json.hpp:20152</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_ae22e170815983961447c429f324c944d"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">nlohmann::detail::dtoa_impl::diyfp::e</a></div><div class="ttdeci">int e</div><div class="ttdef"><b>Definition:</b> json.hpp:12704</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a81e0c41a4a9dff4df2f6973f7f8b2a83"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a81e0c41a4a9dff4df2f6973f7f8b2a83">nlohmann::basic_json::patch</a></div><div class="ttdeci">basic_json patch(const basic_json &amp;json_patch) const</div><div class="ttdoc">applies a JSON patch</div><div class="ttdef"><b>Definition:</b> json.hpp:22110</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a69e52f890ce8c556fd68ce109e24b360"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360">nlohmann::detail::iter_impl::pointer</a></div><div class="ttdeci">typename std::conditional&lt; std::is_const&lt; BasicJsonType &gt;::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer &gt;::type pointer</div><div class="ttdoc">defines a pointer to the type iterated over (value_type)</div><div class="ttdef"><b>Definition:</b> json.hpp:9376</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_af91fb0bb9b2a2e96af030564ded2d92c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#af91fb0bb9b2a2e96af030564ded2d92c">nlohmann::detail::iter_impl::operator--</a></div><div class="ttdeci">const iter_impl operator--(int)</div><div class="ttdoc">post-decrement (it)</div><div class="ttdef"><b>Definition:</b> json.hpp:9660</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a2e0c7ecd80b18d18a8cc76f71cfc2028"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a2e0c7ecd80b18d18a8cc76f71cfc2028">nlohmann::json_sax::key</a></div><div class="ttdeci">virtual bool key(string_t &amp;val)=0</div><div class="ttdoc">an object key was read</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88_html_a0e9f2586c4de25750563770c9388ab9f"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a0e9f2586c4de25750563770c9388ab9f">nlohmann::detail::is_compatible_integer_type_impl&lt; RealIntegerType, CompatibleNumberIntegerType, enable_if_t&lt; std::is_integral&lt; RealIntegerType &gt;::value and std::is_integral&lt; CompatibleNumberIntegerType &gt;::value and not std::is_same&lt; bool, CompatibleNumberIntegerType &gt;::value &gt; &gt;::RealLimits</a></div><div class="ttdeci">std::numeric_limits&lt; RealIntegerType &gt; RealLimits</div><div class="ttdef"><b>Definition:</b> json.hpp:2767</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab4f78c5f9fd25172eeec84482e03f5b7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab4f78c5f9fd25172eeec84482e03f5b7">nlohmann::basic_json::parser_callback_t</a></div><div class="ttdeci">typename parser::parser_callback_t parser_callback_t</div><div class="ttdoc">per-element parser callback type</div><div class="ttdef"><b>Definition:</b> json.hpp:15712</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a480f6d5a30b9627b55831178266575a7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a480f6d5a30b9627b55831178266575a7">nlohmann::basic_json::to_ubjson</a></div><div class="ttdeci">static void to_ubjson(const basic_json &amp;j, detail::output_adapter&lt; uint8_t &gt; o, const bool use_size=false, const bool use_type=false)</div><div class="ttdef"><b>Definition:</b> json.hpp:21320</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a0d2671a6f81efb91e77f6ac3bdb11443"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a0d2671a6f81efb91e77f6ac3bdb11443">nlohmann::detail::lexer::token_type::value_float</a></div><div class="ttdeci">@ value_float</div><div class="ttdoc">an floating point number use get_number_float() for actual value</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a16c226b4425b68560fea322b46dabe01"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a16c226b4425b68560fea322b46dabe01">nlohmann::detail::lexer::token_type::begin_array</a></div><div class="ttdeci">@ begin_array</div><div class="ttdoc">the character for array begin [</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a2b2d781d7f2a4ee41bc0016e931cadf7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">nlohmann::basic_json::type</a></div><div class="ttdeci">constexpr value_t type() const noexcept</div><div class="ttdoc">return the type of the JSON value (explicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:16612</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_a373289af95a946c19bb4a58a5df71a78"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#a373289af95a946c19bb4a58a5df71a78">nlohmann::detail::binary_writer::binary_writer</a></div><div class="ttdeci">binary_writer(output_adapter_t&lt; CharType &gt; adapter)</div><div class="ttdoc">create a binary writer</div><div class="ttdef"><b>Definition:</b> json.hpp:11328</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1static__const_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1static__const.html">nlohmann::detail::static_const</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2233</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a2b490e8bf366b4cbe3ebd99b26ce15ce"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2b490e8bf366b4cbe3ebd99b26ce15ce">nlohmann::detail::lexer::token_type::value_string</a></div><div class="ttdeci">@ value_string</div><div class="ttdoc">a string use get_string() for actual value</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aea1085f2d35cc0e1ce119cf0110119e6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aea1085f2d35cc0e1ce119cf0110119e6">nlohmann::basic_json::operator+=</a></div><div class="ttdeci">reference operator+=(basic_json &amp;&amp;val)</div><div class="ttdoc">add an object to an array</div><div class="ttdef"><b>Definition:</b> json.hpp:19433</div></div>
<div class="ttc" id="astructnlohmann_1_1json__sax_html_af31bacfa81aa7818d8639d1da65c8eb5"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#af31bacfa81aa7818d8639d1da65c8eb5">nlohmann::json_sax::~json_sax</a></div><div class="ttdeci">virtual ~json_sax()=default</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__stream__adapter_html_a6e2698c76b200b2d8fac6cebfc43a245"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__stream__adapter.html#a6e2698c76b200b2d8fac6cebfc43a245">nlohmann::detail::output_stream_adapter::write_character</a></div><div class="ttdeci">void write_character(CharType c) override</div><div class="ttdef"><b>Definition:</b> json.hpp:11242</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b_html_aacaf73dc959b7c2119c15e53b5ce00a3"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aacaf73dc959b7c2119c15e53b5ce00a3">nlohmann::detail::iterator_types&lt; It, void_t&lt; typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category &gt; &gt;::pointer</a></div><div class="ttdeci">typename It::pointer pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:2289</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__adapter_html_a05a30a77b568fd84676078d938cbd484"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__adapter.html#a05a30a77b568fd84676078d938cbd484">nlohmann::detail::output_adapter::output_adapter</a></div><div class="ttdeci">output_adapter(std::vector&lt; CharType &gt; &amp;vec)</div><div class="ttdef"><b>Definition:</b> json.hpp:11285</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_af58da4713ea9010912f3da6b22aeee51"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#af58da4713ea9010912f3da6b22aeee51">nlohmann::detail::primitive_iterator_t::operator==</a></div><div class="ttdeci">constexpr friend bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9213</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_af002dd2e53ac0855a03cb68d0ce626b2"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#af002dd2e53ac0855a03cb68d0ce626b2">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(std::istream &amp;&amp;i)</div><div class="ttdoc">input adapter for input stream</div><div class="ttdef"><b>Definition:</b> json.hpp:4209</div></div>
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a4667ef558c8c3f8a646bfda0c6654653"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a4667ef558c8c3f8a646bfda0c6654653">nlohmann::json_pointer::operator==</a></div><div class="ttdeci">friend bool operator==(json_pointer const &amp;lhs, json_pointer const &amp;rhs) noexcept</div><div class="ttdoc">compares two JSON pointers for equality</div><div class="ttdef"><b>Definition:</b> json.hpp:11059</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a3a8078bbf865ec355106f6048241609a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a">nlohmann::detail::json_sax_acceptor::string_t</a></div><div class="ttdeci">typename BasicJsonType::string_t string_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4946</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_aef4652c0e81d6c052acb5d36afe09499"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aef4652c0e81d6c052acb5d36afe09499">nlohmann::detail::json_sax_dom_parser::number_float</a></div><div class="ttdeci">bool number_float(number_float_t val, const string_t &amp;)</div><div class="ttdef"><b>Definition:</b> json.hpp:4502</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7e368211047f725f333696aefdf39ffd"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7e368211047f725f333696aefdf39ffd">nlohmann::basic_json::operator&lt;=</a></div><div class="ttdeci">friend bool operator&lt;=(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: less than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20494</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a22ef94ca5476a9563dcaca15b7d6e654"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a22ef94ca5476a9563dcaca15b7d6e654">nlohmann::detail::json_sax_acceptor::end_array</a></div><div class="ttdeci">bool end_array()</div><div class="ttdef"><b>Definition:</b> json.hpp:4998</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a36ded358763b5dbcea9867660fbe4e28"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a36ded358763b5dbcea9867660fbe4e28">nlohmann::detail::dtoa_impl::find_largest_pow10</a></div><div class="ttdeci">int find_largest_pow10(const std::uint32_t n, std::uint32_t &amp;pow10)</div><div class="ttdef"><b>Definition:</b> json.hpp:13134</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a6b2ef1d632fe49bfcc22fbd1abd62395"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">nlohmann::detail::json_reverse_iterator::base_iterator</a></div><div class="ttdeci">std::reverse_iterator&lt; Base &gt; base_iterator</div><div class="ttdoc">shortcut to the reverse iterator adapter</div><div class="ttdef"><b>Definition:</b> json.hpp:9987</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a2488d6a902103610943920ac49d12a04"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a2488d6a902103610943920ac49d12a04">nlohmann::detail::json_reverse_iterator::operator--</a></div><div class="ttdeci">json_reverse_iterator &amp; operator--()</div><div class="ttdoc">pre-decrement (it)</div><div class="ttdef"><b>Definition:</b> json.hpp:10017</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4_html_a867122bcf0856c757bd6bcbfb8be74bc"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html#a867122bcf0856c757bd6bcbfb8be74bc">nlohmann::detail::external_constructor&lt; value_t::boolean &gt;::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &amp;j, typename BasicJsonType::boolean_t b) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3476</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a0136728f5db69d4051c77b94307abd6c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a0136728f5db69d4051c77b94307abd6c">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, const basic_json &amp;val)</div><div class="ttdoc">inserts element</div><div class="ttdef"><b>Definition:</b> json.hpp:19717</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_ab447c50354c6611fa2ae0100ac17845c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#ab447c50354c6611fa2ae0100ac17845c">nlohmann::detail::iter_impl::value</a></div><div class="ttdeci">reference value() const</div><div class="ttdoc">return the value of an iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9932</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a06f5e2129cffcc72eee84d88e126e3e3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a06f5e2129cffcc72eee84d88e126e3e3">nlohmann::detail::lexer::token_type_name</a></div><div class="ttdeci">JSON_HEDLEY_RETURNS_NON_NULL static const JSON_HEDLEY_CONST char * token_type_name(const token_type t) noexcept</div><div class="ttdoc">return name of values of type token_type (only used for errors)</div><div class="ttdef"><b>Definition:</b> json.hpp:7194</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5e4212986136ca1220f351c60e89906b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5e4212986136ca1220f351c60e89906b">nlohmann::basic_json::iterator_wrapper</a></div><div class="ttdeci">static iteration_proxy&lt; iterator &gt; iterator_wrapper(reference ref) noexcept</div><div class="ttdoc">wrapper to access iterator member functions in range-based for</div><div class="ttdef"><b>Definition:</b> json.hpp:18982</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a6c2d025530114ed989188e8adfc8467e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6c2d025530114ed989188e8adfc8467e">nlohmann::detail::json_reverse_iterator::json_reverse_iterator</a></div><div class="ttdeci">json_reverse_iterator(const base_iterator &amp;it) noexcept</div><div class="ttdoc">create reverse iterator from base class</div><div class="ttdef"><b>Definition:</b> json.hpp:9996</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_afe3e137ace692efa08590d8df40f58dd"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#afe3e137ace692efa08590d8df40f58dd">nlohmann::basic_json::items</a></div><div class="ttdeci">iteration_proxy&lt; iterator &gt; items() noexcept</div><div class="ttdoc">helper to access iterator member functions in range-based for</div><div class="ttdef"><b>Definition:</b> json.hpp:19059</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1a804b98cbe89b7e44b698f2ca860490"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">nlohmann::detail::to_json</a></div><div class="ttdeci">void to_json(BasicJsonType &amp;j, T b) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3647</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a7d5b4427866814de4d8f132721d59c87"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a7d5b4427866814de4d8f132721d59c87">nlohmann::detail::lexer::token_type::end_object</a></div><div class="ttdeci">@ end_object</div><div class="ttdoc">the character for object end }</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__object__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html">nlohmann::detail::is_constructible_object_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2621</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a167fd9bf385d3d08bcbbba8a927c0eff"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a167fd9bf385d3d08bcbbba8a927c0eff">nlohmann::detail::json_sax_dom_callback_parser::is_errored</a></div><div class="ttdeci">constexpr bool is_errored() const</div><div class="ttdef"><b>Definition:</b> json.hpp:4834</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_a9ffc566db5219b473762462234b47db9"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#a9ffc566db5219b473762462234b47db9">nlohmann::detail::binary_writer::write_bson</a></div><div class="ttdeci">void write_bson(const BasicJsonType &amp;j)</div><div class="ttdef"><b>Definition:</b> json.hpp:11337</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a3eef94f9d167046e7f773aeb6b78090c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a3eef94f9d167046e7f773aeb6b78090c">nlohmann::detail::iter_impl::operator+=</a></div><div class="ttdeci">iter_impl &amp; operator+=(difference_type i)</div><div class="ttdoc">add to iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9793</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__adapter.html">nlohmann::detail::output_adapter</a></div><div class="ttdef"><b>Definition:</b> json.hpp:11282</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_ad22d2aa3aab018050ae519f6754366e1"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#ad22d2aa3aab018050ae519f6754366e1">nlohmann::detail::iterator_category_t</a></div><div class="ttdeci">typename T::iterator_category iterator_category_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2504</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a671aea68432ecb28770bbc482918f023"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a671aea68432ecb28770bbc482918f023">nlohmann::basic_json::value</a></div><div class="ttdeci">ValueType value(const json_pointer &amp;ptr, const ValueType &amp;default_value) const</div><div class="ttdoc">access specified object element via JSON Pointer with default value</div><div class="ttdef"><b>Definition:</b> json.hpp:18075</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_ab7d8db672189164a8c0731e65ada1b45"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ab7d8db672189164a8c0731e65ada1b45">nlohmann::detail::json_sax_dom_callback_parser::boolean</a></div><div class="ttdeci">bool boolean(bool val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4667</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a404cfe1bdbf1dc6b229627fcf2afb95f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a404cfe1bdbf1dc6b229627fcf2afb95f">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, const_iterator first, const_iterator last)</div><div class="ttdoc">inserts elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19816</div></div>
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_a78d76cf288141049568c0d670ed670ef"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">nlohmann::detail::json_ref::value_type</a></div><div class="ttdeci">BasicJsonType value_type</div><div class="ttdef"><b>Definition:</b> json.hpp:11104</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae9be9e956bfc4658f35d17c6aa72b063"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae9be9e956bfc4658f35d17c6aa72b063">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(std::nullptr_t=nullptr) noexcept</div><div class="ttdoc">create a null object</div><div class="ttdef"><b>Definition:</b> json.hpp:15776</div></div>
<div class="ttc" id="astructnlohmann_1_1detail_1_1to__json__fn_html_aecfb5114c8a737fc89d98589482795b8"><div class="ttname"><a href="structnlohmann_1_1detail_1_1to__json__fn.html#aecfb5114c8a737fc89d98589482795b8">nlohmann::detail::to_json_fn::operator()</a></div><div class="ttdeci">auto operator()(BasicJsonType &amp;j, T &amp;&amp;val) const noexcept(noexcept(to_json(j, std::forward&lt; T &gt;(val)))) -&gt; decltype(to_json(j, std::forward&lt; T &gt;(val)), void())</div><div class="ttdef"><b>Definition:</b> json.hpp:3778</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abefbb319df8ed4f8705b4fd4e4dc731c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abefbb319df8ed4f8705b4fd4e4dc731c">nlohmann::basic_json::get_ptr</a></div><div class="ttdeci">auto get_ptr() noexcept -&gt; decltype(std::declval&lt; basic_json_t &amp; &gt;().get_impl_ptr(std::declval&lt; PointerType &gt;()))</div><div class="ttdoc">get a pointer value (implicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17320</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9286acdc0578fc66e9346323e69fc0e3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9286acdc0578fc66e9346323e69fc0e3">nlohmann::basic_json::contains</a></div><div class="ttdeci">bool contains(KeyT &amp;&amp;key) const</div><div class="ttdoc">check the existence of an element in a JSON object</div><div class="ttdef"><b>Definition:</b> json.hpp:18604</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac382f3d2bc6a5d52d936e4e40593f03b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac382f3d2bc6a5d52d936e4e40593f03b">nlohmann::basic_json::get_ref</a></div><div class="ttdeci">ReferenceType get_ref() const</div><div class="ttdoc">get a reference value (implicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17427</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a7542b4dbac07817fd4849ecfa4619def"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">nlohmann::detail::is_detected_exact</a></div><div class="ttdeci">std::is_same&lt; Expected, detected_t&lt; Op, Args... &gt; &gt; is_detected_exact</div><div class="ttdef"><b>Definition:</b> json.hpp:2376</div></div>
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abed3e9b4ab75f5bcbd3cd20f5af5cdab"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abed3e9b4ab75f5bcbd3cd20f5af5cdab">nlohmann::basic_json::operator&lt;</a></div><div class="ttdeci">friend bool operator&lt;(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: less than</div><div class="ttdef"><b>Definition:</b> json.hpp:20459</div></div>
<div class="ttc" id="astructstd_1_1hash_3_01nlohmann_1_1json_01_4_html_aec1567d1fa47dbe5b77954dce3a55b64"><div class="ttname"><a href="structstd_1_1hash_3_01nlohmann_1_1json_01_4.html#aec1567d1fa47dbe5b77954dce3a55b64">std::hash&lt; nlohmann::json &gt;::operator()</a></div><div class="ttdeci">std::size_t operator()(const nlohmann::json &amp;j) const</div><div class="ttdoc">return a hash value for a JSON object</div><div class="ttdef"><b>Definition:</b> json.hpp:22643</div></div>
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a53a082eedad9f4729fcd8fed552a21f7"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a53a082eedad9f4729fcd8fed552a21f7">nlohmann::detail::uncvref_t</a></div><div class="ttdeci">typename std::remove_cv&lt; typename std::remove_reference&lt; T &gt;::type &gt;::type uncvref_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2194</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>