json/json_8hpp_source.html
2016-01-30 22:07:50 +01:00

306 lines
854 KiB
HTML
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" "http://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.11"/>
<title>JSON for Modern C++: /Users/niels/Documents/Repositories/json/src/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>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="mylayout.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">JSON for Modern C++
&#160;<span id="projectnumber">2.0.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">json.hpp</div> </div>
</div><!--header-->
<div class="contents">
<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 2.0.0</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">Copyright (c) 2013-2016 Niels Lohmann &lt;http://nlohmann.me&gt;.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">Licensed under the MIT License &lt;http://opensource.org/licenses/MIT&gt;.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#ifndef NLOHMANN_JSON_HPP</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#define NLOHMANN_JSON_HPP</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;ciso646&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;initializer_list&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;iomanip&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;stdexcept&gt;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</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="comment">// enable ssize_t on MinGW</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"> #ifdef __MINGW32__</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"> #include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// disable float-equal warnings on GCC/clang</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"> #pragma GCC diagnostic push</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"> #pragma GCC diagnostic ignored &quot;-Wfloat-equal&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">// enable ssize_t for MSVC</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor"> #include &lt;basetsd.h&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">using</span> ssize_t = SSIZE_T;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="namespacenlohmann.html"> 61</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1anonymous__namespace_02json_8hpp_03.html"> 69</a></span>&#160;<span class="keyword">namespace</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">struct </span>has_mapped_type</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> C&gt; <span class="keyword">static</span> <span class="keywordtype">char</span> test(<span class="keyword">typename</span> C::mapped_type*);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> C&gt; <span class="keyword">static</span> char (&amp;test(...))[2];</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value = <span class="keyword">sizeof</span>(test&lt;T&gt;(0)) == 1;</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"> 84</span>&#160;</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"> 86</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="keyword">template</span> &lt;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <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 = std::map,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</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="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">class </span>StringType = std::string,</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">class </span>BooleanType = bool,</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">class </span>NumberIntegerType = int64_t,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">class </span>NumberUnsignedType = uint64_t,</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">class </span>NumberFloatType = double,</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</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="l00167"></a><span class="lineno"> 167</span>&#160; &gt;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html"> 168</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="l00169"></a><span class="lineno"> 169</span>&#160;{</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json_t</a> = <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&lt;ObjectType,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; ArrayType,</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; StringType,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; BooleanType,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; NumberIntegerType,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; NumberUnsignedType,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; NumberFloatType,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; AllocatorType&gt;;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="comment">// container types //</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ac8d45b57874b4a6e9c07f7d3b5daa1f9.html#ac8d45b57874b4a6e9c07f7d3b5daa1f9"> 191</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">basic_json</a>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a3ec8e17be8732fe436e9d6733f52b7a3.html#a3ec8e17be8732fe436e9d6733f52b7a3"> 194</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="l00196"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_af677a29b0e66edc9f66e5167e4667071.html#af677a29b0e66edc9f66e5167e4667071"> 196</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="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf"> 199</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a> = std::ptrdiff_t;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b"> 201</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> = std::size_t;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aa44ce84b9ac506b905b8fb56c9a0989d.html#aa44ce84b9ac506b905b8fb56c9a0989d"> 204</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_aa44ce84b9ac506b905b8fb56c9a0989d.html#aa44ce84b9ac506b905b8fb56c9a0989d">allocator_type</a> = AllocatorType&lt;basic_json&gt;;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a9d1b58099dc64695fcf2847ab0b2a7c7.html#a9d1b58099dc64695fcf2847ab0b2a7c7"> 207</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_a9d1b58099dc64695fcf2847ab0b2a7c7.html#a9d1b58099dc64695fcf2847ab0b2a7c7">pointer</a> = <span class="keyword">typename</span> std::allocator_traits&lt;allocator_type&gt;::pointer;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a06efb200b69942eacd1ea22d0f6ccebb.html#a06efb200b69942eacd1ea22d0f6ccebb"> 209</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_a06efb200b69942eacd1ea22d0f6ccebb.html#a06efb200b69942eacd1ea22d0f6ccebb">const_pointer</a> = <span class="keyword">typename</span> std::allocator_traits&lt;allocator_type&gt;::const_pointer;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// forward declaration</span></div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html"> 212</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Base&gt; <span class="keyword">class </span><a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator</a>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">class </span><a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">class </span><a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a2f1f83aa187a56dc5ec7a7027065ac8a.html#a2f1f83aa187a56dc5ec7a7027065ac8a"> 219</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">reverse_iterator</a> = <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator&lt;typename basic_json::iterator&gt;</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ae336fff01f4b78e3e16e5008dc8dbc00.html#ae336fff01f4b78e3e16e5008dc8dbc00"> 221</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">const_reverse_iterator</a> = <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator&lt;typename basic_json::const_iterator&gt;</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a1a446a48beed4ea564addfd12d235793.html#a1a446a48beed4ea564addfd12d235793"> 229</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json_aa44ce84b9ac506b905b8fb56c9a0989d.html#aa44ce84b9ac506b905b8fb56c9a0989d">allocator_type</a> <a class="code" href="classnlohmann_1_1basic__json_a1a446a48beed4ea564addfd12d235793.html#a1a446a48beed4ea564addfd12d235793">get_allocator</a>()</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="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json_aa44ce84b9ac506b905b8fb56c9a0989d.html#aa44ce84b9ac506b905b8fb56c9a0989d">allocator_type</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="comment">// JSON value data types //</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a> = ObjectType&lt;StringType,</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>,</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; std::less&lt;StringType&gt;,</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; AllocatorType&lt;std::pair&lt;<span class="keyword">const</span> StringType,</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f"> 328</a></span>&#160; basic_json&gt;&gt;&gt;;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0"> 374</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a> = ArrayType&lt;basic_json, AllocatorType&lt;basic_json&gt;&gt;;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42"> 421</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> = StringType;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723"> 447</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a> = BooleanType;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59"> 518</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a> = NumberIntegerType;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div><div class="line"><a name="l00590"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d"> 590</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d">number_unsigned_t</a> = NumberUnsignedType;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1"> 658</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a> = NumberFloatType;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="comment">// JSON type enumeration //</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00677"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522"> 677</a></span>&#160; <span class="keyword">enum class</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a> : uint8_t</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; null, </div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; object, </div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; array, </div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; string, </div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; boolean, </div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; number_integer, </div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; number_unsigned,</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; number_float, </div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; discarded </div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; };</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</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="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keyword">static</span> T* create(Args&amp;&amp; ... args)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; AllocatorType&lt;T&gt; alloc;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keyword">auto</span> deleter = [&amp;](T * object)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; {</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; alloc.deallocate(<span class="keywordtype">object</span>, 1);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; };</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; std::unique_ptr&lt;T, decltype(deleter)&gt; object(alloc.allocate(1), deleter);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; alloc.construct(<span class="keywordtype">object</span>.<span class="keyword">get</span>(), std::forward&lt;Args&gt;(args)...);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">return</span> <span class="keywordtype">object</span>.release();</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="comment">// JSON value storage //</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keyword">union </span>json_value</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a>* object;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a>* array;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>* string;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a> boolean;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a> number_integer;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d">number_unsigned_t</a> number_unsigned;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a> number_float;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; json_value() noexcept = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a> v) noexcept : boolean(v) {}</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a> v) noexcept : number_integer(v) {}</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d">number_unsigned_t</a> v) noexcept : number_unsigned(v) {}</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a> v) noexcept : number_float(v) {}</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; json_value(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a> t)</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">switch</span> (t)</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; {</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordtype">object</span> = create&lt;object_t&gt;();</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; array = create&lt;array_t&gt;();</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; {</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordtype">string</span> = create&lt;string_t&gt;(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">break</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;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordtype">boolean</span> = <a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">case</span> value_t::number_integer:</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; number_integer = <a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a>(0);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">case</span> value_t::number_unsigned:</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; number_unsigned = <a class="code" href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d">number_unsigned_t</a>(0);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">case</span> value_t::number_float:</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; number_float = <a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a>(0.0);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; }</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; json_value(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>&amp; value)</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordtype">string</span> = create&lt;string_t&gt;(value);</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; json_value(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a>&amp; value)</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordtype">object</span> = create&lt;object_t&gt;(value);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; json_value(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a>&amp; value)</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; array = create&lt;array_t&gt;(value);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; }</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; };</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="comment">// JSON parser callback //</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00831"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html#aea1c863b719b4ca5b77188c171bbfafe"> 831</a></span>&#160; <span class="keyword">enum class</span> <a class="code" href="classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html#aea1c863b719b4ca5b77188c171bbfafe">parse_event_t</a> : uint8_t</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; object_start,</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; object_end,</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; array_start,</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; array_end,</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; key,</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; value</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; };</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;</div><div class="line"><a name="l00896"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a9e35475e2027520a78e09f460dbe048a.html#a9e35475e2027520a78e09f460dbe048a"> 896</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_a9e35475e2027520a78e09f460dbe048a.html#a9e35475e2027520a78e09f460dbe048a">parser_callback_t</a> = std::function&lt;bool(int depth, parse_event_t event, basic_json&amp; parsed)&gt;;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="comment">// constructors //</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;</div><div class="line"><a name="l00945"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a8f77085bd98c97a983d9ba12efbf6148.html#a8f77085bd98c97a983d9ba12efbf6148"> 945</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a8f77085bd98c97a983d9ba12efbf6148.html#a8f77085bd98c97a983d9ba12efbf6148">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a> <a class="code" href="classnlohmann_1_1basic__json.html">value_type</a>)</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; : m_type(value_type), m_value(value_type)</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; {}</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; basic_json() noexcept = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;</div><div class="line"><a name="l00989"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ade0e56c8c320d7f342e7a5697e6d6f7e.html#ade0e56c8c320d7f342e7a5697e6d6f7e"> 989</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ade0e56c8c320d7f342e7a5697e6d6f7e.html#ade0e56c8c320d7f342e7a5697e6d6f7e">basic_json</a>(std::nullptr_t) noexcept</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; : basic_json(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::null)</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {}</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;</div><div class="line"><a name="l01012"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a9af5ea68c88f423ddf35216aff7f1813.html#a9af5ea68c88f423ddf35216aff7f1813"> 1012</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a9af5ea68c88f423ddf35216aff7f1813.html#a9af5ea68c88f423ddf35216aff7f1813">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a>&amp; val)</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::object), m_value(val)</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; {}</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>CompatibleObjectType, <span class="keyword">typename</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; std::is_constructible&lt;typename object_t::key_type, typename CompatibleObjectType::key_type&gt;::value and</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; std::is_constructible&lt;basic_json, typename CompatibleObjectType::mapped_type&gt;::value, <span class="keywordtype">int</span>&gt;::type</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; = 0&gt;</div><div class="line"><a name="l01044"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ab7be2bc58ae0c2c2c30d40f15d6399f8.html#ab7be2bc58ae0c2c2c30d40f15d6399f8"> 1044</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab7be2bc58ae0c2c2c30d40f15d6399f8.html#ab7be2bc58ae0c2c2c30d40f15d6399f8">basic_json</a>(<span class="keyword">const</span> CompatibleObjectType&amp; val)</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::object)</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; {</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keyword">using</span> std::begin;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keyword">using</span> std::end;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; m_value.object = create&lt;object_t&gt;(begin(val), end(val));</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; }</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;</div><div class="line"><a name="l01071"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a3aaf41d385f0d9a93deb92f9b14ae0cf.html#a3aaf41d385f0d9a93deb92f9b14ae0cf"> 1071</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a3aaf41d385f0d9a93deb92f9b14ae0cf.html#a3aaf41d385f0d9a93deb92f9b14ae0cf">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a>&amp; val)</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::array), m_value(val)</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; {}</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>CompatibleArrayType, <span class="keyword">typename</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; not std::is_same&lt;CompatibleArrayType, typename basic_json_t::iterator&gt;::value and</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; not std::is_same&lt;CompatibleArrayType, typename basic_json_t::const_iterator&gt;::value and</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; not std::is_same&lt;CompatibleArrayType, typename basic_json_t::reverse_iterator&gt;::value and</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; not std::is_same&lt;CompatibleArrayType, typename basic_json_t::const_reverse_iterator&gt;::value and</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; not std::is_same&lt;CompatibleArrayType, typename array_t::iterator&gt;::value and</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; not std::is_same&lt;CompatibleArrayType, typename array_t::const_iterator&gt;::value and</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; std::is_constructible&lt;basic_json, typename CompatibleArrayType::value_type&gt;::value, <span class="keywordtype">int</span>&gt;::type</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; = 0&gt;</div><div class="line"><a name="l01108"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a81aaaab0f3b326afda2d226daab4f1e1.html#a81aaaab0f3b326afda2d226daab4f1e1"> 1108</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a81aaaab0f3b326afda2d226daab4f1e1.html#a81aaaab0f3b326afda2d226daab4f1e1">basic_json</a>(<span class="keyword">const</span> CompatibleArrayType&amp; val)</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::array)</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; {</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keyword">using</span> std::begin;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keyword">using</span> std::end;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; m_value.array = create&lt;array_t&gt;(begin(val), end(val));</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; }</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;</div><div class="line"><a name="l01137"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ab8b43d92a042dde96c28aeea81dd52de.html#ab8b43d92a042dde96c28aeea81dd52de"> 1137</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab8b43d92a042dde96c28aeea81dd52de.html#ab8b43d92a042dde96c28aeea81dd52de">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>&amp; val)</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::string), m_value(val)</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; {}</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;</div><div class="line"><a name="l01161"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a3654da9a84deaf61899c4eee5b93c2c5.html#a3654da9a84deaf61899c4eee5b93c2c5"> 1161</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a3654da9a84deaf61899c4eee5b93c2c5.html#a3654da9a84deaf61899c4eee5b93c2c5">basic_json</a>(<span class="keyword">const</span> <span class="keyword">typename</span> string_t::value_type* val)</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; : basic_json(<a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>(val))</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; {}</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>CompatibleStringType, <span class="keyword">typename</span></div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; std::is_constructible&lt;string_t, CompatibleStringType&gt;::value, <span class="keywordtype">int</span>&gt;::type</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; = 0&gt;</div><div class="line"><a name="l01192"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ae85d91b0620650bcd9993e09d0e287d9.html#ae85d91b0620650bcd9993e09d0e287d9"> 1192</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ae85d91b0620650bcd9993e09d0e287d9.html#ae85d91b0620650bcd9993e09d0e287d9">basic_json</a>(<span class="keyword">const</span> CompatibleStringType&amp; val)</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; : basic_json(<a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>(val))</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; {}</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;</div><div class="line"><a name="l01210"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ae799491eda5f5868a38ccdafca9fe0f0.html#ae799491eda5f5868a38ccdafca9fe0f0"> 1210</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ae799491eda5f5868a38ccdafca9fe0f0.html#ae799491eda5f5868a38ccdafca9fe0f0">basic_json</a>(<a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a> val)</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::boolean), m_value(val)</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; {}</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T,</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="keyword">typename</span> std::enable_if&lt;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; not (std::is_same&lt;T, int&gt;::value)</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; and std::is_same&lt;T, number_integer_t&gt;::value</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; , <span class="keywordtype">int</span>&gt;::type</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; = 0&gt;</div><div class="line"><a name="l01245"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a197631f31d9b17285bf9f4c156fe49c2.html#a197631f31d9b17285bf9f4c156fe49c2"> 1245</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a197631f31d9b17285bf9f4c156fe49c2.html#a197631f31d9b17285bf9f4c156fe49c2">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a> val)</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::number_integer), m_value(val)</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; {}</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;</div><div class="line"><a name="l01274"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a5339f60209573ede87534b282c09fbd5.html#a5339f60209573ede87534b282c09fbd5"> 1274</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a5339f60209573ede87534b282c09fbd5.html#a5339f60209573ede87534b282c09fbd5">basic_json</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> val)</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::number_integer),</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; m_value(static_cast&lt;<a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a>&gt;(val))</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; {}</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CompatibleNumberIntegerType, <span class="keyword">typename</span></div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; std::is_constructible&lt;number_integer_t, CompatibleNumberIntegerType&gt;::value and</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; std::numeric_limits&lt;CompatibleNumberIntegerType&gt;::is_integer and</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; std::numeric_limits&lt;CompatibleNumberIntegerType&gt;::is_signed,</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; CompatibleNumberIntegerType&gt;::type</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; = 0&gt;</div><div class="line"><a name="l01311"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ad2eddc2c13ab084f067eaba65d381ad2.html#ad2eddc2c13ab084f067eaba65d381ad2"> 1311</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ad2eddc2c13ab084f067eaba65d381ad2.html#ad2eddc2c13ab084f067eaba65d381ad2">basic_json</a>(<span class="keyword">const</span> CompatibleNumberIntegerType val) noexcept</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; : m_type(value_t::number_integer),</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; m_value(static_cast&lt;number_integer_t&gt;(val))</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; {}</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T,</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keyword">typename</span> std::enable_if&lt;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; not (std::is_same&lt;T, int&gt;::value)</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; and std::is_same&lt;T, number_unsigned_t&gt;::value</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; , <span class="keywordtype">int</span>&gt;::type</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; = 0&gt;</div><div class="line"><a name="l01339"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a620e4d98496f85bd7be080248c0f14e9.html#a620e4d98496f85bd7be080248c0f14e9"> 1339</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a620e4d98496f85bd7be080248c0f14e9.html#a620e4d98496f85bd7be080248c0f14e9">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d">number_unsigned_t</a> val)</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::number_unsigned), m_value(val)</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; {}</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keyword">template</span> &lt; <span class="keyword">typename</span> CompatibleNumberUnsignedType, <span class="keyword">typename</span></div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; std::enable_if &lt;</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; std::is_constructible&lt;number_unsigned_t, CompatibleNumberUnsignedType&gt;::value and</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; std::numeric_limits&lt;CompatibleNumberUnsignedType&gt;::is_integer and</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; !std::numeric_limits&lt;CompatibleNumberUnsignedType&gt;::is_signed,</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; CompatibleNumberUnsignedType &gt;::type</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; = 0 &gt;</div><div class="line"><a name="l01370"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a68a5f34b164a07b8ced13fcf2b7ec834.html#a68a5f34b164a07b8ced13fcf2b7ec834"> 1370</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a68a5f34b164a07b8ced13fcf2b7ec834.html#a68a5f34b164a07b8ced13fcf2b7ec834">basic_json</a>(<span class="keyword">const</span> CompatibleNumberUnsignedType val) noexcept</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; : m_type(value_t::number_unsigned),</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; m_value(static_cast&lt;number_unsigned_t&gt;(val))</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; {}</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;</div><div class="line"><a name="l01399"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a6adb089a5cacff9c7ad80d753b3fdf98.html#a6adb089a5cacff9c7ad80d753b3fdf98"> 1399</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a6adb089a5cacff9c7ad80d753b3fdf98.html#a6adb089a5cacff9c7ad80d753b3fdf98">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a> val)</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::number_float), m_value(val)</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; {</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="comment">// replace infinity and NAN by null</span></div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="keywordflow">if</span> (not std::isfinite(val))</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; {</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; m_type = value_t::null;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; m_value = json_value();</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; }</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; }</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> CompatibleNumberFloatType, <span class="keyword">typename</span> = <span class="keyword">typename</span></div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; std::is_constructible&lt;number_float_t, CompatibleNumberFloatType&gt;::value and</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; std::is_floating_point&lt;CompatibleNumberFloatType&gt;::value&gt;::type</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; &gt;</div><div class="line"><a name="l01445"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a4bbdfd6dd8d2e6fc9ac5d81ef61ba3fe.html#a4bbdfd6dd8d2e6fc9ac5d81ef61ba3fe"> 1445</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a4bbdfd6dd8d2e6fc9ac5d81ef61ba3fe.html#a4bbdfd6dd8d2e6fc9ac5d81ef61ba3fe">basic_json</a>(<span class="keyword">const</span> CompatibleNumberFloatType val) noexcept</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; : basic_json(<a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a>(val))</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; {}</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;</div><div class="line"><a name="l01518"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_afeb998aec45296bc2050bd1c41ef41eb.html#afeb998aec45296bc2050bd1c41ef41eb"> 1518</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_afeb998aec45296bc2050bd1c41ef41eb.html#afeb998aec45296bc2050bd1c41ef41eb">basic_json</a>(std::initializer_list&lt;basic_json&gt; init,</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; <span class="keywordtype">bool</span> type_deduction = <span class="keyword">true</span>,</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a> manual_type = value_t::array)</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; {</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; <span class="comment">// the initializer list could describe an object</span></div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="keywordtype">bool</span> is_an_object = <span class="keyword">true</span>;</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <span class="comment">// check if each element is an array with two elements whose first</span></div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="comment">// element is a string</span></div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; element : init)</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; {</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <span class="keywordflow">if</span> (not element.is_array() or element.size() != 2</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; or not element[0].is_string())</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; {</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <span class="comment">// we found an element that makes it impossible to use the</span></div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <span class="comment">// initializer list as object</span></div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; is_an_object = <span class="keyword">false</span>;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; }</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; }</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <span class="comment">// adjust type if type deduction is not wanted</span></div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; <span class="keywordflow">if</span> (not type_deduction)</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; {</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <span class="comment">// if array is wanted, do not create an object though possible</span></div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <span class="keywordflow">if</span> (manual_type == value_t::array)</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; is_an_object = <span class="keyword">false</span>;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; }</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <span class="comment">// if object is wanted but impossible, throw an exception</span></div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <span class="keywordflow">if</span> (manual_type == value_t::object and not is_an_object)</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; {</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot create object from initializer list&quot;</span>);</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; }</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; }</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="keywordflow">if</span> (is_an_object)</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; {</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; <span class="comment">// the initializer list is a list of pairs -&gt; create object</span></div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; m_type = value_t::object;</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; m_value = value_t::object;</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; element : init)</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; {</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; m_value.object-&gt;emplace(std::move(*(element[0].m_value.string)), std::move(element[1]));</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; }</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; }</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; {</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="comment">// the initializer list describes an array -&gt; create array</span></div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; m_type = value_t::array;</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; m_value.array = create&lt;array_t&gt;(std::move(init));</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; }</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; }</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;</div><div class="line"><a name="l01610"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a5685815624b086caa532f41e853d4b0f.html#a5685815624b086caa532f41e853d4b0f"> 1610</a></span>&#160; <span class="keyword">static</span> basic_json <a class="code" href="classnlohmann_1_1basic__json_a5685815624b086caa532f41e853d4b0f.html#a5685815624b086caa532f41e853d4b0f">array</a>(std::initializer_list&lt;basic_json&gt; init =</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; std::initializer_list&lt;basic_json&gt;())</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; {</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <span class="keywordflow">return</span> basic_json(init, <span class="keyword">false</span>, value_t::array);</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; }</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;</div><div class="line"><a name="l01650"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ad25b2f8c21e241e2d63455537a9294ff.html#ad25b2f8c21e241e2d63455537a9294ff"> 1650</a></span>&#160; <span class="keyword">static</span> basic_json <a class="code" href="classnlohmann_1_1basic__json_ad25b2f8c21e241e2d63455537a9294ff.html#ad25b2f8c21e241e2d63455537a9294ff">object</a>(std::initializer_list&lt;basic_json&gt; init =</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; std::initializer_list&lt;basic_json&gt;())</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; {</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; <span class="keywordflow">return</span> basic_json(init, <span class="keyword">false</span>, value_t::object);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; }</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;</div><div class="line"><a name="l01674"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a112a2d8e76345ea64f71e2985fee4c52.html#a112a2d8e76345ea64f71e2985fee4c52"> 1674</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a112a2d8e76345ea64f71e2985fee4c52.html#a112a2d8e76345ea64f71e2985fee4c52">basic_json</a>(<a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> cnt, <span class="keyword">const</span> basic_json&amp; val)</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; : m_type(<a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>::array)</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; m_value.array = create&lt;array_t&gt;(cnt, val);</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; }</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>InputIT, <span class="keyword">typename</span></div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; std::is_same&lt;InputIT, typename basic_json_t::iterator&gt;::value or</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; std::is_same&lt;InputIT, typename basic_json_t::const_iterator&gt;::value</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; , <span class="keywordtype">int</span>&gt;::type</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; = 0&gt;</div><div class="line"><a name="l01720"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_af7acf3838a79363356f24538941a559c.html#af7acf3838a79363356f24538941a559c"> 1720</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_af7acf3838a79363356f24538941a559c.html#af7acf3838a79363356f24538941a559c">basic_json</a>(InputIT first, InputIT last) : m_type(first.m_object-&gt;m_type)</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; {</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="comment">// make sure iterator fits the current value</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <span class="keywordflow">if</span> (first.m_object != last.m_object)</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; {</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;iterators are not compatible&quot;</span>);</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; }</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="comment">// check if iterator range is complete for primitive values</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; {</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keywordflow">case</span> value_t::number_float:</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="keywordflow">case</span> value_t::number_integer:</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; <span class="keywordflow">case</span> value_t::number_unsigned:</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <span class="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; {</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="keywordflow">if</span> (not first.m_it.primitive_iterator.is_begin() or not last.m_it.primitive_iterator.is_end())</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; {</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;iterators out of range&quot;</span>);</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; }</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; }</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; <span class="keywordflow">default</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="keywordflow">break</span>;</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; }</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; }</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; {</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keywordflow">case</span> value_t::number_integer:</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; {</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; assert(first.m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; m_value.number_integer = first.m_object-&gt;m_value.number_integer;</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; }</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; <span class="keywordflow">case</span> value_t::number_unsigned:</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; {</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; assert(first.m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; m_value.number_unsigned = first.m_object-&gt;m_value.number_unsigned;</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; }</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; <span class="keywordflow">case</span> value_t::number_float:</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; {</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; assert(first.m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; m_value.number_float = first.m_object-&gt;m_value.number_float;</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; }</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; {</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; assert(first.m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; m_value.boolean = first.m_object-&gt;m_value.boolean;</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; }</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; {</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; assert(first.m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; m_value = *first.m_object-&gt;m_value.string;</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; }</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <span class="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; {</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; m_value.object = create&lt;object_t&gt;(first.m_it.object_iterator, last.m_it.object_iterator);</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; }</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; {</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; m_value.array = create&lt;array_t&gt;(first.m_it.array_iterator, last.m_it.array_iterator);</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; }</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; {</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; assert(first.m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use construct with iterators from &quot;</span> + first.m_object-&gt;type_name());</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; }</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; }</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; }</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="comment">// other constructors and destructor //</span></div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01831"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a4ab93491f82545342562c7ee7e3166c7.html#a4ab93491f82545342562c7ee7e3166c7"> 1831</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a4ab93491f82545342562c7ee7e3166c7.html#a4ab93491f82545342562c7ee7e3166c7">basic_json</a>(<span class="keyword">const</span> basic_json&amp; other)</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; : m_type(other.m_type)</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; {</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; {</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; {</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; assert(other.m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; m_value = *other.m_value.object;</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; }</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; {</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; assert(other.m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; m_value = *other.m_value.array;</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; }</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; <span class="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; {</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; assert(other.m_value.string != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; m_value = *other.m_value.string;</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; }</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; {</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; m_value = other.m_value.boolean;</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; }</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; <span class="keywordflow">case</span> value_t::number_integer:</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; {</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; m_value = other.m_value.number_integer;</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; }</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; <span class="keywordflow">case</span> value_t::number_unsigned:</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; {</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; m_value = other.m_value.number_unsigned;</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; }</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; <span class="keywordflow">case</span> value_t::number_float:</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; m_value = other.m_value.number_float;</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; }</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"> 1881</span>&#160; <span class="keywordflow">default</span>:</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">break</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; }</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;</div><div class="line"><a name="l01906"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a73e150cbcba5643cb89de8f515eb64e2.html#a73e150cbcba5643cb89de8f515eb64e2"> 1906</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a73e150cbcba5643cb89de8f515eb64e2.html#a73e150cbcba5643cb89de8f515eb64e2">basic_json</a>(basic_json&amp;&amp; other) noexcept</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; : m_type(<a class="code" href="namespacestd.html">std</a>::move(other.m_type)),</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; m_value(<a class="code" href="namespacestd.html">std</a>::move(other.m_value))</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; {</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; <span class="comment">// invalidate payload</span></div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; other.m_type = value_t::null;</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; other.m_value = {};</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; }</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;</div><div class="line"><a name="l01936"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a7c3182cfabc0bdd9f3a14216fe0e8154.html#a7c3182cfabc0bdd9f3a14216fe0e8154"> 1936</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_a7c3182cfabc0bdd9f3a14216fe0e8154.html#a7c3182cfabc0bdd9f3a14216fe0e8154">operator=</a>(basic_json other) noexcept (</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; std::is_nothrow_move_constructible&lt;value_t&gt;::value and</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; std::is_nothrow_move_assignable&lt;value_t&gt;::value and</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; std::is_nothrow_move_constructible&lt;json_value&gt;::value and</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; std::is_nothrow_move_assignable&lt;json_value&gt;::value</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; )</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; {</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; <span class="keyword">using</span> std::swap;</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; swap(m_type, other.m_type);</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; swap(m_value, other.m_value);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; }</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;</div><div class="line"><a name="l01962"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a947b5b2a832e490858dbdddfe7085831.html#a947b5b2a832e490858dbdddfe7085831"> 1962</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a947b5b2a832e490858dbdddfe7085831.html#a947b5b2a832e490858dbdddfe7085831">~basic_json</a>()</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; {</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; {</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; <span class="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; {</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; AllocatorType&lt;object_t&gt; alloc;</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; alloc.destroy(m_value.object);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; alloc.deallocate(m_value.object, 1);</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; <span class="keywordflow">break</span>;</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;</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; {</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; AllocatorType&lt;array_t&gt; alloc;</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; alloc.destroy(m_value.array);</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; alloc.deallocate(m_value.array, 1);</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; }</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; <span class="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; {</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; AllocatorType&lt;string_t&gt; alloc;</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; alloc.destroy(m_value.string);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; alloc.deallocate(m_value.string, 1);</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160; }</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; {</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; <span class="comment">// all other types need no specific destructor</span></div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; }</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; }</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; }</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; <span class="comment">// object inspection //</span></div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;</div><div class="line"><a name="l02031"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a805e3f3a2f374da0e14942eec7400e40.html#a805e3f3a2f374da0e14942eec7400e40"> 2031</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> <a class="code" href="classnlohmann_1_1basic__json_a805e3f3a2f374da0e14942eec7400e40.html#a805e3f3a2f374da0e14942eec7400e40">dump</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> indent = -1)<span class="keyword"> const</span></div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; std::stringstream ss;</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; <span class="keywordflow">if</span> (indent &gt;= 0)</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; {</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; dump(ss, <span class="keyword">true</span>, static_cast&lt;unsigned int&gt;(indent));</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; }</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; {</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; dump(ss, <span class="keyword">false</span>, 0);</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; }</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; <span class="keywordflow">return</span> ss.str();</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; }</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;</div><div class="line"><a name="l02062"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ad09218e192a80ffa8df531941afdab60.html#ad09218e192a80ffa8df531941afdab60"> 2062</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a> <a class="code" href="classnlohmann_1_1basic__json_ad09218e192a80ffa8df531941afdab60.html#ad09218e192a80ffa8df531941afdab60">type</a>() const noexcept</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; {</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; <span class="keywordflow">return</span> m_type;</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; }</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160;</div><div class="line"><a name="l02083"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ab856bebfdfbcf45061f1474ea8ba9924.html#ab856bebfdfbcf45061f1474ea8ba9924"> 2083</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_ab856bebfdfbcf45061f1474ea8ba9924.html#ab856bebfdfbcf45061f1474ea8ba9924">is_primitive</a>() const noexcept</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; {</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; <span class="keywordflow">return</span> is_null() or is_string() or is_boolean() or is_number();</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; }</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;</div><div class="line"><a name="l02103"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_afec7d87796b8b538119b3ddc0d6950fb.html#afec7d87796b8b538119b3ddc0d6950fb"> 2103</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_afec7d87796b8b538119b3ddc0d6950fb.html#afec7d87796b8b538119b3ddc0d6950fb">is_structured</a>() const noexcept</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; {</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; <span class="keywordflow">return</span> is_array() or is_object();</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; }</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160;</div><div class="line"><a name="l02122"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a5ffdd3a9d2e02ebcbad13cb90af57523.html#a5ffdd3a9d2e02ebcbad13cb90af57523"> 2122</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a5ffdd3a9d2e02ebcbad13cb90af57523.html#a5ffdd3a9d2e02ebcbad13cb90af57523">is_null</a>() const noexcept</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="keywordflow">return</span> m_type == value_t::null;</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; }</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;</div><div class="line"><a name="l02141"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a08ad7169ceb437efff7b2d4a8c0dafe2.html#a08ad7169ceb437efff7b2d4a8c0dafe2"> 2141</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a08ad7169ceb437efff7b2d4a8c0dafe2.html#a08ad7169ceb437efff7b2d4a8c0dafe2">is_boolean</a>() const noexcept</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; {</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; <span class="keywordflow">return</span> m_type == value_t::boolean;</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; }</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;</div><div class="line"><a name="l02168"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a791afb7d6974c52b134d66aa1f249164.html#a791afb7d6974c52b134d66aa1f249164"> 2168</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a791afb7d6974c52b134d66aa1f249164.html#a791afb7d6974c52b134d66aa1f249164">is_number</a>() const noexcept</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; {</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordflow">return</span> is_number_integer() or is_number_float();</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; }</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;</div><div class="line"><a name="l02194"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a245b34ee6341bed2e3a611e223c53c48.html#a245b34ee6341bed2e3a611e223c53c48"> 2194</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a245b34ee6341bed2e3a611e223c53c48.html#a245b34ee6341bed2e3a611e223c53c48">is_number_integer</a>() const noexcept</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="keywordflow">return</span> m_type == value_t::number_integer or m_type == value_t::number_unsigned;</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160; }</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;</div><div class="line"><a name="l02219"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ab7d704826813d13731fbcaf220160826.html#ab7d704826813d13731fbcaf220160826"> 2219</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_ab7d704826813d13731fbcaf220160826.html#ab7d704826813d13731fbcaf220160826">is_number_unsigned</a>() const noexcept</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"> 2221</span>&#160; <span class="keywordflow">return</span> m_type == value_t::number_unsigned;</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160; }</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;</div><div class="line"><a name="l02244"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a5d288e4e8828c2ef03a4f9958ce3d175.html#a5d288e4e8828c2ef03a4f9958ce3d175"> 2244</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a5d288e4e8828c2ef03a4f9958ce3d175.html#a5d288e4e8828c2ef03a4f9958ce3d175">is_number_float</a>() const noexcept</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="keywordflow">return</span> m_type == value_t::number_float;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; }</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;</div><div class="line"><a name="l02263"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a8969119432218155193bb1dac30aa4ff.html#a8969119432218155193bb1dac30aa4ff"> 2263</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a8969119432218155193bb1dac30aa4ff.html#a8969119432218155193bb1dac30aa4ff">is_object</a>() const noexcept</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"> 2265</span>&#160; <span class="keywordflow">return</span> m_type == value_t::object;</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"> 2267</span>&#160;</div><div class="line"><a name="l02282"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a73619da32d2a1388f5c7b37f2032138f.html#a73619da32d2a1388f5c7b37f2032138f"> 2282</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a73619da32d2a1388f5c7b37f2032138f.html#a73619da32d2a1388f5c7b37f2032138f">is_array</a>() const noexcept</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160; {</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160; <span class="keywordflow">return</span> m_type == value_t::array;</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160; }</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160;</div><div class="line"><a name="l02301"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ad2f716992118a42aa8f8d57950a8d0bb.html#ad2f716992118a42aa8f8d57950a8d0bb"> 2301</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_ad2f716992118a42aa8f8d57950a8d0bb.html#ad2f716992118a42aa8f8d57950a8d0bb">is_string</a>() const noexcept</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160; {</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; <span class="keywordflow">return</span> m_type == value_t::string;</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="l02325"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a626a27f30d6912d7f516eac511fd3362.html#a626a27f30d6912d7f516eac511fd3362"> 2325</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a626a27f30d6912d7f516eac511fd3362.html#a626a27f30d6912d7f516eac511fd3362">is_discarded</a>() const noexcept</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; {</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160; <span class="keywordflow">return</span> m_type == value_t::discarded;</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; }</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;</div><div class="line"><a name="l02345"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a579c170c06dc73a97f5e4c54d0942616.html#a579c170c06dc73a97f5e4c54d0942616"> 2345</a></span>&#160; <span class="keyword">operator</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a>() const noexcept</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160; {</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160; <span class="keywordflow">return</span> m_type;</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160; }</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160;</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"> 2352</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160; <span class="comment">// value access //</span></div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>T, <span class="keyword">typename</span></div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160; std::is_convertible&lt;typename object_t::key_type, typename T::key_type&gt;::value and</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160; std::is_convertible&lt;basic_json_t, typename T::mapped_type&gt;::value</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160; T get_impl(T*)<span class="keyword"> const</span></div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160; {</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160; <span class="keywordflow">return</span> T(m_value.object-&gt;begin(), m_value.object-&gt;end());</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; }</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160; <span class="keywordflow">else</span></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="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;type must be object, but is &quot;</span> + type_name());</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160; }</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;</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a> get_impl(<a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a>*)<span class="keyword"> const</span></div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; {</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; <span class="keywordflow">return</span> *(m_value.object);</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="keywordflow">else</span></div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160; {</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;type must be object, but is &quot;</span> + type_name());</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; }</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>T, <span class="keyword">typename</span></div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160; std::is_convertible&lt;basic_json_t, typename T::value_type&gt;::value and</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; not std::is_same&lt;basic_json_t, typename T::value_type&gt;::value and</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; not std::is_arithmetic&lt;T&gt;::value and</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160; not std::is_convertible&lt;std::string, T&gt;::value and</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; not has_mapped_type&lt;T&gt;::value</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; T get_impl(T*)<span class="keyword"> const</span></div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; <span class="keywordflow">if</span> (is_array())</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; {</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; T to_vector;</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; std::transform(m_value.array-&gt;begin(), m_value.array-&gt;end(),</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160; std::inserter(to_vector, to_vector.end()), [](basic_json i)</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; {</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; <span class="keywordflow">return</span> i.<a class="code" href="classnlohmann_1_1basic__json_a20bfb2ca6d4c421c74bb3e53328cd437.html#a20bfb2ca6d4c421c74bb3e53328cd437">get</a>&lt;<span class="keyword">typename</span> T::value_type&gt;();</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; });</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; <span class="keywordflow">return</span> to_vector;</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; }</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; {</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;type must be array, but is &quot;</span> + type_name());</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; }</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; }</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160;</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>T, <span class="keyword">typename</span></div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; std::is_convertible&lt;basic_json_t, T&gt;::value and</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160; not std::is_same&lt;basic_json_t, T&gt;::value</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; std::vector&lt;T&gt; get_impl(std::vector&lt;T&gt;*)<span class="keyword"> const</span></div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; <span class="keywordflow">if</span> (is_array())</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; {</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; std::vector&lt;T&gt; to_vector;</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; to_vector.reserve(m_value.array-&gt;size());</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160; std::transform(m_value.array-&gt;begin(), m_value.array-&gt;end(),</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160; std::inserter(to_vector, to_vector.end()), [](basic_json i)</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160; {</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160; <span class="keywordflow">return</span> i.<a class="code" href="classnlohmann_1_1basic__json_a20bfb2ca6d4c421c74bb3e53328cd437.html#a20bfb2ca6d4c421c74bb3e53328cd437">get</a>&lt;T&gt;();</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; });</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; <span class="keywordflow">return</span> to_vector;</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160; }</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; {</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;type must be array, but is &quot;</span> + type_name());</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160; }</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; }</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>T, <span class="keyword">typename</span></div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160; std::is_same&lt;basic_json, typename T::value_type&gt;::value and</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; not has_mapped_type&lt;T&gt;::value</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; T get_impl(T*)<span class="keyword"> const</span></div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; <span class="keywordflow">if</span> (is_array())</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; {</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; <span class="keywordflow">return</span> T(m_value.array-&gt;begin(), m_value.array-&gt;end());</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; }</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; {</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;type must be array, but is &quot;</span> + type_name());</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; }</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; }</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; <a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a> get_impl(<a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a>*)<span class="keyword"> const</span></div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; <span class="keywordflow">if</span> (is_array())</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160; {</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160; <span class="keywordflow">return</span> *(m_value.array);</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160; }</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160; {</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;type must be array, but is &quot;</span> + type_name());</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; }</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"> 2476</span>&#160;</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span></div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; std::is_convertible&lt;string_t, T&gt;::value</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; T get_impl(T*)<span class="keyword"> const</span></div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; <span class="keywordflow">if</span> (is_string())</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; {</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160; assert(m_value.string != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160; <span class="keywordflow">return</span> *m_value.string;</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; }</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160; <span class="keywordflow">else</span></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="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;type must be string, but is &quot;</span> + type_name());</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; }</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;</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span></div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; std::is_arithmetic&lt;T&gt;::value</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; T get_impl(T*)<span class="keyword"> const</span></div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; {</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; <span class="keywordflow">case</span> value_t::number_integer:</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="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(m_value.number_integer);</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160; }</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="keywordflow">case</span> value_t::number_unsigned:</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; {</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(m_value.number_unsigned);</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160; }</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160;</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; <span class="keywordflow">case</span> value_t::number_float:</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160; {</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(m_value.number_float);</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;</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; {</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;type must be number, but is &quot;</span> + type_name());</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160; }</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; }</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; }</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a> get_impl(<a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a>*)<span class="keyword"> const</span></div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160; <span class="keywordflow">if</span> (is_boolean())</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160; {</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; <span class="keywordflow">return</span> m_value.boolean;</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="keywordflow">else</span></div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160; {</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;type must be boolean, but is &quot;</span> + type_name());</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; }</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;</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a>*) noexcept</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; {</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; <span class="keywordflow">return</span> is_object() ? m_value.object : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160; }</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a>*) <span class="keyword">const</span> noexcept</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="keywordflow">return</span> is_object() ? m_value.object : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; }</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160;</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a>*) noexcept</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160; {</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160; <span class="keywordflow">return</span> is_array() ? m_value.array : <span class="keyword">nullptr</span>;</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"> 2556</span>&#160;</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a>*) <span class="keyword">const</span> noexcept</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; {</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160; <span class="keywordflow">return</span> is_array() ? m_value.array : <span class="keyword">nullptr</span>;</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="l02564"></a><span class="lineno"> 2564</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>*) noexcept</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160; {</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160; <span class="keywordflow">return</span> is_string() ? m_value.string : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160; }</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160;</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>*) <span class="keyword">const</span> noexcept</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160; {</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160; <span class="keywordflow">return</span> is_string() ? m_value.string : <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a>*) noexcept</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; {</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160; <span class="keywordflow">return</span> is_boolean() ? &amp;m_value.boolean : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; }</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160;</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">boolean_t</a>*) <span class="keyword">const</span> noexcept</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; {</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; <span class="keywordflow">return</span> is_boolean() ? &amp;m_value.boolean : <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a>*) noexcept</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; {</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; <span class="keywordflow">return</span> is_number_integer() ? &amp;m_value.number_integer : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; }</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a>*) <span class="keyword">const</span> noexcept</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160; {</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160; <span class="keywordflow">return</span> is_number_integer() ? &amp;m_value.number_integer : <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d">number_unsigned_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d">number_unsigned_t</a>*) noexcept</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160; {</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160; <span class="keywordflow">return</span> is_number_unsigned() ? &amp;m_value.number_unsigned : <span class="keyword">nullptr</span>;</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="l02606"></a><span class="lineno"> 2606</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d">number_unsigned_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d">number_unsigned_t</a>*) <span class="keyword">const</span> noexcept</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160; {</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160; <span class="keywordflow">return</span> is_number_unsigned() ? &amp;m_value.number_unsigned : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160; }</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160;</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a>*) noexcept</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; <span class="keywordflow">return</span> is_number_float() ? &amp;m_value.number_float : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; }</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160;</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a>*) <span class="keyword">const</span> noexcept</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160; {</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; <span class="keywordflow">return</span> is_number_float() ? &amp;m_value.number_float : <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160; }</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160;</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</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="l02635"></a><span class="lineno"> 2635</span>&#160; <span class="keyword">static</span> ReferenceType get_ref_impl(ThisType&amp; obj)</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160; {</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160; <span class="comment">// delegate the call to get_ptr&lt;&gt;()</span></div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160; <span class="keyword">using</span> PointerType = <span class="keyword">typename</span> std::add_pointer&lt;ReferenceType&gt;::type;</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; <span class="keyword">auto</span> ptr = obj.template get_ptr&lt;PointerType&gt;();</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160;</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160; <span class="keywordflow">if</span> (ptr != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; {</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; <span class="keywordflow">return</span> *ptr;</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; }</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160; <span class="keywordflow">else</span></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="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;incompatible ReferenceType for get_ref, actual type is &quot;</span> +</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; obj.type_name());</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160; }</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160; }</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">public</span>:</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160;</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160;</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType, <span class="keyword">typename</span></div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160; not std::is_pointer&lt;ValueType&gt;::value</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02694"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a20bfb2ca6d4c421c74bb3e53328cd437.html#a20bfb2ca6d4c421c74bb3e53328cd437"> 2694</a></span>&#160; ValueType <span class="keyword">get</span>() <span class="keyword">const</span></div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160; {</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160; <span class="keywordflow">return</span> get_impl(static_cast&lt;ValueType*&gt;(<span class="keyword">nullptr</span>));</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; }</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160;</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span></div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160; std::is_pointer&lt;PointerType&gt;::value</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02729"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ac5693cff1df0775cd3fbe960412cde4b.html#ac5693cff1df0775cd3fbe960412cde4b"> 2729</a></span>&#160; PointerType <span class="keyword">get</span>() noexcept</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160; {</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160; <span class="comment">// delegate the call to get_ptr</span></div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160; <span class="keywordflow">return</span> get_ptr&lt;PointerType&gt;();</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; }</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span></div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160; std::is_pointer&lt;PointerType&gt;::value</div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02743"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ab7b7b44891ddbc2df8ba3cbef3609178.html#ab7b7b44891ddbc2df8ba3cbef3609178"> 2743</a></span>&#160; <span class="keyword">const</span> PointerType <span class="keyword">get</span>() <span class="keyword">const</span> noexcept</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160; {</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; <span class="comment">// delegate the call to get_ptr</span></div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160; <span class="keywordflow">return</span> get_ptr&lt;PointerType&gt;();</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160; }</div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160;</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span></div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160; std::is_pointer&lt;PointerType&gt;::value</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02778"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a7ab11375ed2e29c2fcb6119386851445.html#a7ab11375ed2e29c2fcb6119386851445"> 2778</a></span>&#160; PointerType <a class="code" href="classnlohmann_1_1basic__json_a7ab11375ed2e29c2fcb6119386851445.html#a7ab11375ed2e29c2fcb6119386851445">get_ptr</a>() noexcept</div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; {</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160; <span class="comment">// delegate the call to get_impl_ptr&lt;&gt;()</span></div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160; <span class="keywordflow">return</span> get_impl_ptr(static_cast&lt;PointerType&gt;(<span class="keyword">nullptr</span>));</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160; }</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span></div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160; std::is_pointer&lt;PointerType&gt;::value</div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160; and std::is_const&lt;typename std::remove_pointer&lt;PointerType&gt;::type&gt;::value</div><div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02793"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_af12127e6fe8adbe727081f188aa599e2.html#af12127e6fe8adbe727081f188aa599e2"> 2793</a></span>&#160; <span class="keyword">const</span> PointerType <a class="code" href="classnlohmann_1_1basic__json_af12127e6fe8adbe727081f188aa599e2.html#af12127e6fe8adbe727081f188aa599e2">get_ptr</a>() const noexcept</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160; {</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160; <span class="comment">// delegate the call to get_impl_ptr&lt;&gt;() const</span></div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160; <span class="keywordflow">return</span> get_impl_ptr(static_cast&lt;const PointerType&gt;(<span class="keyword">nullptr</span>));</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;</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ReferenceType, <span class="keyword">typename</span></div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160; std::is_reference&lt;ReferenceType&gt;::value</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02829"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a4f332e90f3cae562d0c3fa6ba48f74f9.html#a4f332e90f3cae562d0c3fa6ba48f74f9"> 2829</a></span>&#160; ReferenceType <a class="code" href="classnlohmann_1_1basic__json_a4f332e90f3cae562d0c3fa6ba48f74f9.html#a4f332e90f3cae562d0c3fa6ba48f74f9">get_ref</a>()</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160; {</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160; <span class="comment">// delegate call to get_ref_impl</span></div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160; <span class="keywordflow">return</span> get_ref_impl&lt;ReferenceType&gt;(*this);</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160; }</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> ReferenceType, <span class="keyword">typename</span></div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; std::is_reference&lt;ReferenceType&gt;::value</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160; and std::is_const&lt;typename std::remove_reference&lt;ReferenceType&gt;::type&gt;::value</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l02844"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aa669d997ddc03566de5438781254b32b.html#aa669d997ddc03566de5438781254b32b"> 2844</a></span>&#160; ReferenceType <a class="code" href="classnlohmann_1_1basic__json_aa669d997ddc03566de5438781254b32b.html#aa669d997ddc03566de5438781254b32b">get_ref</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160; <span class="comment">// delegate call to get_ref_impl</span></div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160; <span class="keywordflow">return</span> get_ref_impl&lt;ReferenceType&gt;(*this);</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160; }</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160;</div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160; <span class="keyword">template</span> &lt; <span class="keyword">typename</span> ValueType, <span class="keyword">typename</span></div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160; std::enable_if &lt;</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; not std::is_pointer&lt;ValueType&gt;::value</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160; and not std::is_same&lt;ValueType, typename string_t::value_type&gt;::value</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160;<span class="preprocessor">#ifndef _MSC_VER // Fix for issue #167 operator&lt;&lt; abiguity under VS2015</span></div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160; and not std::is_same&lt;ValueType, std::initializer_list&lt;typename string_t::value_type&gt;&gt;::value</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160; , <span class="keywordtype">int</span> &gt;::type = 0 &gt;</div><div class="line"><a name="l02886"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aef496a56163710084e13612ab73e6ed2.html#aef496a56163710084e13612ab73e6ed2"> 2886</a></span>&#160; <span class="keyword">operator</span> ValueType()<span class="keyword"> const</span></div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160; <span class="comment">// delegate the call to get&lt;&gt;() const</span></div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160; <span class="keywordflow">return</span> get&lt;ValueType&gt;();</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160; }</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160;</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160;</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160; <span class="comment">// element access //</span></div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160;</div><div class="line"><a name="l02924"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a214a8c22d616fd3567b88932c07436c9.html#a214a8c22d616fd3567b88932c07436c9"> 2924</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_a214a8c22d616fd3567b88932c07436c9.html#a214a8c22d616fd3567b88932c07436c9">at</a>(<a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> idx)</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="comment">// at only works for arrays</span></div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; <span class="keywordflow">if</span> (is_array())</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160; {</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160; <span class="keywordflow">try</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; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;at(idx);</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160; }</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; <span class="keywordflow">catch</span> (std::out_of_range&amp;)</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; <span class="comment">// create better exception explanation</span></div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;array index &quot;</span> + std::to_string(idx) + <span class="stringliteral">&quot; is out of range&quot;</span>);</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160; }</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">else</span></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; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use at() with &quot;</span> + 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; }</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160;</div><div class="line"><a name="l02968"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ab31368c0b67f8e4f291a45e6498018be.html#ab31368c0b67f8e4f291a45e6498018be"> 2968</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json_ab31368c0b67f8e4f291a45e6498018be.html#ab31368c0b67f8e4f291a45e6498018be">at</a>(<a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> idx)<span class="keyword"> const</span></div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160; <span class="comment">// at only works for arrays</span></div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160; <span class="keywordflow">if</span> (is_array())</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; <span class="keywordflow">try</span></div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160; {</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;at(idx);</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160; }</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160; <span class="keywordflow">catch</span> (std::out_of_range&amp;)</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="comment">// create better exception explanation</span></div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;array index &quot;</span> + std::to_string(idx) + <span class="stringliteral">&quot; is out of range&quot;</span>);</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; }</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160; <span class="keywordflow">else</span></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="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use at() with &quot;</span> + type_name());</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160; }</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;</div><div class="line"><a name="l03016"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a7ed92d56cb313b243c1917696ffdf074.html#a7ed92d56cb313b243c1917696ffdf074"> 3016</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_a7ed92d56cb313b243c1917696ffdf074.html#a7ed92d56cb313b243c1917696ffdf074">at</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key)</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">// at only works for objects</span></div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160; {</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160; <span class="keywordflow">try</span></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; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;at(key);</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; }</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; <span class="keywordflow">catch</span> (std::out_of_range&amp;)</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; {</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160; <span class="comment">// create better exception explanation</span></div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;key &#39;&quot;</span> + key + <span class="stringliteral">&quot;&#39; not found&quot;</span>);</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; }</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160; {</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use at() with &quot;</span> + type_name());</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160; }</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;</div><div class="line"><a name="l03064"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a674de1ee73e6bf4843fc5dc1351fb726.html#a674de1ee73e6bf4843fc5dc1351fb726"> 3064</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json_a674de1ee73e6bf4843fc5dc1351fb726.html#a674de1ee73e6bf4843fc5dc1351fb726">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="l03065"></a><span class="lineno"> 3065</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160; <span class="comment">// at only works for objects</span></div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160; {</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160; <span class="keywordflow">try</span></div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160; {</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;at(key);</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160; }</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; <span class="keywordflow">catch</span> (std::out_of_range&amp;)</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; <span class="comment">// create better exception explanation</span></div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;key &#39;&quot;</span> + key + <span class="stringliteral">&quot;&#39; not found&quot;</span>);</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; }</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160; {</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use at() with &quot;</span> + type_name());</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160; }</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;</div><div class="line"><a name="l03111"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a59732a1de287a7301cca19a7a7748159.html#a59732a1de287a7301cca19a7a7748159"> 3111</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_a59732a1de287a7301cca19a7a7748159.html#a59732a1de287a7301cca19a7a7748159">operator[]</a>(<a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> idx)</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160; {</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160; <span class="comment">// implicitly convert null to object</span></div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160; <span class="keywordflow">if</span> (is_null())</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; m_type = value_t::array;</div><div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>&#160; m_value.<a class="code" href="classnlohmann_1_1basic__json_a5685815624b086caa532f41e853d4b0f.html#a5685815624b086caa532f41e853d4b0f">array</a> = create&lt;array_t&gt;();</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;</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160; <span class="comment">// [] only works for arrays</span></div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160; <span class="keywordflow">if</span> (is_array())</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; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = m_value.array-&gt;size(); i &lt;= idx; ++i)</div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160; {</div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160; m_value.array-&gt;push_back(basic_json());</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;</div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;operator[](idx);</div><div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>&#160; }</div><div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>&#160; {</div><div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use operator[] with &quot;</span> + type_name());</div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>&#160; }</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;</div><div class="line"><a name="l03156"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a99f2e765029e51dd0fff018650f92eea.html#a99f2e765029e51dd0fff018650f92eea"> 3156</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json_a99f2e765029e51dd0fff018650f92eea.html#a99f2e765029e51dd0fff018650f92eea">operator[]</a>(<a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> idx)<span class="keyword"> const</span></div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160; <span class="comment">// at only works for arrays</span></div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160; <span class="keywordflow">if</span> (is_array())</div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160; {</div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;operator[](idx);</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; <span class="keywordflow">else</span></div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160; {</div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use operator[] with &quot;</span> + type_name());</div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; }</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;</div><div class="line"><a name="l03197"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a92fbb711a36b5ce78ee228b26787c034.html#a92fbb711a36b5ce78ee228b26787c034"> 3197</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_a92fbb711a36b5ce78ee228b26787c034.html#a92fbb711a36b5ce78ee228b26787c034">operator[]</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key)</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160; {</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160; <span class="comment">// implicitly convert null to object</span></div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160; <span class="keywordflow">if</span> (is_null())</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160; {</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160; m_type = value_t::object;</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160; m_value.<a class="code" href="classnlohmann_1_1basic__json_ad25b2f8c21e241e2d63455537a9294ff.html#ad25b2f8c21e241e2d63455537a9294ff">object</a> = create&lt;object_t&gt;();</div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160; }</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="comment">// [] only works for objects</span></div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160; {</div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;operator[](key);</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160; }</div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160; {</div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use operator[] with &quot;</span> + type_name());</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160; }</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;</div><div class="line"><a name="l03245"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a2e26bd0b0168abb61f67ad5bcd5b9fa1.html#a2e26bd0b0168abb61f67ad5bcd5b9fa1"> 3245</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json_a2e26bd0b0168abb61f67ad5bcd5b9fa1.html#a2e26bd0b0168abb61f67ad5bcd5b9fa1">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="l03246"></a><span class="lineno"> 3246</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160; <span class="comment">// [] only works for objects</span></div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160; <span class="keywordflow">if</span> (is_object())</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; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160; assert(m_value.object-&gt;find(key) != m_value.object-&gt;end());</div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;find(key)-&gt;second;</div><div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>&#160; }</div><div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>&#160; {</div><div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use operator[] with &quot;</span> + type_name());</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; }</div><div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>&#160;</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> n&gt;</div><div class="line"><a name="l03288"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a140b8251f82e99ad279dcad5c977e26b.html#a140b8251f82e99ad279dcad5c977e26b"> 3288</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_a140b8251f82e99ad279dcad5c977e26b.html#a140b8251f82e99ad279dcad5c977e26b">operator[]</a>(T * (&amp;key)[n])</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="keywordflow">return</span> operator[](static_cast&lt;const T&gt;(key));</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;</div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> n&gt;</div><div class="line"><a name="l03323"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ad9cd312208273fb3fb2adf1f6d8d34ae.html#ad9cd312208273fb3fb2adf1f6d8d34ae"> 3323</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json_ad9cd312208273fb3fb2adf1f6d8d34ae.html#ad9cd312208273fb3fb2adf1f6d8d34ae">operator[]</a>(T * (&amp;key)[n])<span class="keyword"> const</span></div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160; <span class="keywordflow">return</span> operator[](static_cast&lt;const T&gt;(key));</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="l03355"></a><span class="lineno"> 3355</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l03356"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ac7c006e2345a76859c4802db7d130e0e.html#ac7c006e2345a76859c4802db7d130e0e"> 3356</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_ac7c006e2345a76859c4802db7d130e0e.html#ac7c006e2345a76859c4802db7d130e0e">operator[]</a>(T* key)</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160; {</div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160; <span class="comment">// implicitly convert null to object</span></div><div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160; <span class="keywordflow">if</span> (is_null())</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; m_type = value_t::object;</div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160; m_value = value_t::object;</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;</div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160; <span class="comment">// at only works for objects</span></div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160; {</div><div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;operator[](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="keywordflow">else</span></div><div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160; {</div><div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use operator[] with &quot;</span> + type_name());</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="l03404"></a><span class="lineno"> 3404</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l03405"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aa6fd72df1ce9f80e61012784c598456e.html#aa6fd72df1ce9f80e61012784c598456e"> 3405</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json_aa6fd72df1ce9f80e61012784c598456e.html#aa6fd72df1ce9f80e61012784c598456e">operator[]</a>(T* key)<span class="keyword"> const</span></div><div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160; <span class="comment">// at only works for objects</span></div><div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160; {</div><div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160; assert(m_value.object-&gt;find(key) != m_value.object-&gt;end());</div><div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;find(key)-&gt;second;</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">else</span></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="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use operator[] with &quot;</span> + type_name());</div><div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160; }</div><div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160; }</div><div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160;</div><div class="line"><a name="l03468"></a><span class="lineno"> 3468</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>ValueType, <span class="keyword">typename</span></div><div class="line"><a name="l03469"></a><span class="lineno"> 3469</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l03470"></a><span class="lineno"> 3470</span>&#160; std::is_convertible&lt;basic_json_t, ValueType&gt;::value</div><div class="line"><a name="l03471"></a><span class="lineno"> 3471</span>&#160; , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div><div class="line"><a name="l03472"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a0a2cbbd95862a623e7dc5c37e67dead0.html#a0a2cbbd95862a623e7dc5c37e67dead0"> 3472</a></span>&#160; ValueType <a class="code" href="classnlohmann_1_1basic__json_a0a2cbbd95862a623e7dc5c37e67dead0.html#a0a2cbbd95862a623e7dc5c37e67dead0">value</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key, ValueType default_value)<span class="keyword"> const</span></div><div class="line"><a name="l03473"></a><span class="lineno"> 3473</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03474"></a><span class="lineno"> 3474</span>&#160; <span class="comment">// at only works for objects</span></div><div class="line"><a name="l03475"></a><span class="lineno"> 3475</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l03476"></a><span class="lineno"> 3476</span>&#160; {</div><div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>&#160; <span class="comment">// if key is found, return value and given default value otherwise</span></div><div class="line"><a name="l03478"></a><span class="lineno"> 3478</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> it = find(key);</div><div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>&#160; <span class="keywordflow">if</span> (it != end())</div><div class="line"><a name="l03480"></a><span class="lineno"> 3480</span>&#160; {</div><div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>&#160; <span class="keywordflow">return</span> *it;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l03484"></a><span class="lineno"> 3484</span>&#160; {</div><div class="line"><a name="l03485"></a><span class="lineno"> 3485</span>&#160; <span class="keywordflow">return</span> default_value;</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; }</div><div class="line"><a name="l03488"></a><span class="lineno"> 3488</span>&#160; <span class="keywordflow">else</span></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; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use value() with &quot;</span> + type_name());</div><div class="line"><a name="l03491"></a><span class="lineno"> 3491</span>&#160; }</div><div class="line"><a name="l03492"></a><span class="lineno"> 3492</span>&#160; }</div><div class="line"><a name="l03493"></a><span class="lineno"> 3493</span>&#160;</div><div class="line"><a name="l03498"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_af071057ebab57744f5767eb369e99d42.html#af071057ebab57744f5767eb369e99d42"> 3498</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> <a class="code" href="classnlohmann_1_1basic__json_af071057ebab57744f5767eb369e99d42.html#af071057ebab57744f5767eb369e99d42">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="l03499"></a><span class="lineno"> 3499</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03500"></a><span class="lineno"> 3500</span>&#160; <span class="keywordflow">return</span> value(key, <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>(default_value));</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="l03523"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aa45753034bea87f9d2c0c42ace9ff75c.html#aa45753034bea87f9d2c0c42ace9ff75c"> 3523</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_aa45753034bea87f9d2c0c42ace9ff75c.html#aa45753034bea87f9d2c0c42ace9ff75c">front</a>()</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; <span class="keywordflow">return</span> *begin();</div><div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>&#160; }</div><div class="line"><a name="l03527"></a><span class="lineno"> 3527</span>&#160;</div><div class="line"><a name="l03531"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a8032645ce3109a7a4899badd90fa3480.html#a8032645ce3109a7a4899badd90fa3480"> 3531</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json_a8032645ce3109a7a4899badd90fa3480.html#a8032645ce3109a7a4899badd90fa3480">front</a>()<span class="keyword"> const</span></div><div class="line"><a name="l03532"></a><span class="lineno"> 3532</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>&#160; <span class="keywordflow">return</span> *cbegin();</div><div class="line"><a name="l03534"></a><span class="lineno"> 3534</span>&#160; }</div><div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>&#160;</div><div class="line"><a name="l03557"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a71b1d38ef402dfee58fba1fe01fa67f5.html#a71b1d38ef402dfee58fba1fe01fa67f5"> 3557</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_a71b1d38ef402dfee58fba1fe01fa67f5.html#a71b1d38ef402dfee58fba1fe01fa67f5">back</a>()</div><div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>&#160; {</div><div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>&#160; <span class="keyword">auto</span> tmp = end();</div><div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>&#160; --tmp;</div><div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>&#160; <span class="keywordflow">return</span> *tmp;</div><div class="line"><a name="l03562"></a><span class="lineno"> 3562</span>&#160; }</div><div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>&#160;</div><div class="line"><a name="l03567"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a098482190447461f47f80b99bf2519f6.html#a098482190447461f47f80b99bf2519f6"> 3567</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json_a098482190447461f47f80b99bf2519f6.html#a098482190447461f47f80b99bf2519f6">back</a>()<span class="keyword"> const</span></div><div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>&#160; <span class="keyword">auto</span> tmp = cend();</div><div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>&#160; --tmp;</div><div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>&#160; <span class="keywordflow">return</span> *tmp;</div><div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>&#160; }</div><div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>&#160;</div><div class="line"><a name="l03618"></a><span class="lineno"> 3618</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>InteratorType, <span class="keyword">typename</span></div><div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l03620"></a><span class="lineno"> 3620</span>&#160; std::is_same&lt;InteratorType, typename basic_json_t::iterator&gt;::value or</div><div class="line"><a name="l03621"></a><span class="lineno"> 3621</span>&#160; std::is_same&lt;InteratorType, typename basic_json_t::const_iterator&gt;::value</div><div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>&#160; , <span class="keywordtype">int</span>&gt;::type</div><div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>&#160; = 0&gt;</div><div class="line"><a name="l03624"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a45e789042a23138eba2b69f34df9fc45.html#a45e789042a23138eba2b69f34df9fc45"> 3624</a></span>&#160; InteratorType <a class="code" href="classnlohmann_1_1basic__json_a45e789042a23138eba2b69f34df9fc45.html#a45e789042a23138eba2b69f34df9fc45">erase</a>(InteratorType pos)</div><div class="line"><a name="l03625"></a><span class="lineno"> 3625</span>&#160; {</div><div class="line"><a name="l03626"></a><span class="lineno"> 3626</span>&#160; <span class="comment">// make sure iterator fits the current value</span></div><div class="line"><a name="l03627"></a><span class="lineno"> 3627</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">this</span> != pos.m_object)</div><div class="line"><a name="l03628"></a><span class="lineno"> 3628</span>&#160; {</div><div class="line"><a name="l03629"></a><span class="lineno"> 3629</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;iterator does not fit current value&quot;</span>);</div><div class="line"><a name="l03630"></a><span class="lineno"> 3630</span>&#160; }</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; InteratorType result = end();</div><div class="line"><a name="l03633"></a><span class="lineno"> 3633</span>&#160;</div><div class="line"><a name="l03634"></a><span class="lineno"> 3634</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l03635"></a><span class="lineno"> 3635</span>&#160; {</div><div class="line"><a name="l03636"></a><span class="lineno"> 3636</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</div><div class="line"><a name="l03637"></a><span class="lineno"> 3637</span>&#160; <span class="keywordflow">case</span> value_t::number_float:</div><div class="line"><a name="l03638"></a><span class="lineno"> 3638</span>&#160; <span class="keywordflow">case</span> value_t::number_integer:</div><div class="line"><a name="l03639"></a><span class="lineno"> 3639</span>&#160; <span class="keywordflow">case</span> value_t::number_unsigned:</div><div class="line"><a name="l03640"></a><span class="lineno"> 3640</span>&#160; <span class="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l03641"></a><span class="lineno"> 3641</span>&#160; {</div><div class="line"><a name="l03642"></a><span class="lineno"> 3642</span>&#160; <span class="keywordflow">if</span> (not pos.m_it.primitive_iterator.is_begin())</div><div class="line"><a name="l03643"></a><span class="lineno"> 3643</span>&#160; {</div><div class="line"><a name="l03644"></a><span class="lineno"> 3644</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;iterator out of range&quot;</span>);</div><div class="line"><a name="l03645"></a><span class="lineno"> 3645</span>&#160; }</div><div class="line"><a name="l03646"></a><span class="lineno"> 3646</span>&#160;</div><div class="line"><a name="l03647"></a><span class="lineno"> 3647</span>&#160; <span class="keywordflow">if</span> (is_string())</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; <span class="keyword">delete</span> m_value.string;</div><div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>&#160; m_value.string = <span class="keyword">nullptr</span>;</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;</div><div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>&#160; m_type = value_t::null;</div><div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>&#160; <span class="keywordflow">break</span>;</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;</div><div class="line"><a name="l03657"></a><span class="lineno"> 3657</span>&#160; <span class="keywordflow">case</span> value_t::object:</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; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03660"></a><span class="lineno"> 3660</span>&#160; result.m_it.object_iterator = m_value.object-&gt;erase(pos.m_it.object_iterator);</div><div class="line"><a name="l03661"></a><span class="lineno"> 3661</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>&#160; }</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; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>&#160; {</div><div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03667"></a><span class="lineno"> 3667</span>&#160; result.m_it.array_iterator = m_value.array-&gt;erase(pos.m_it.array_iterator);</div><div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>&#160; }</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; <span class="keywordflow">default</span>:</div><div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>&#160; {</div><div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use erase() with &quot;</span> + type_name());</div><div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>&#160; }</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;</div><div class="line"><a name="l03677"></a><span class="lineno"> 3677</span>&#160; <span class="keywordflow">return</span> result;</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;</div><div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>InteratorType, <span class="keyword">typename</span></div><div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>&#160; std::enable_if&lt;</div><div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>&#160; std::is_same&lt;InteratorType, typename basic_json_t::iterator&gt;::value or</div><div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>&#160; std::is_same&lt;InteratorType, typename basic_json_t::const_iterator&gt;::value</div><div class="line"><a name="l03728"></a><span class="lineno"> 3728</span>&#160; , <span class="keywordtype">int</span>&gt;::type</div><div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>&#160; = 0&gt;</div><div class="line"><a name="l03730"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a263a9ecde33a1f2ff63dcd15d5e42cb7.html#a263a9ecde33a1f2ff63dcd15d5e42cb7"> 3730</a></span>&#160; InteratorType <a class="code" href="classnlohmann_1_1basic__json_a263a9ecde33a1f2ff63dcd15d5e42cb7.html#a263a9ecde33a1f2ff63dcd15d5e42cb7">erase</a>(InteratorType first, InteratorType last)</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; <span class="comment">// make sure iterator fits the current value</span></div><div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">this</span> != first.m_object or <span class="keyword">this</span> != last.m_object)</div><div class="line"><a name="l03734"></a><span class="lineno"> 3734</span>&#160; {</div><div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;iterators do not fit current value&quot;</span>);</div><div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>&#160; }</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; InteratorType result = end();</div><div class="line"><a name="l03739"></a><span class="lineno"> 3739</span>&#160;</div><div class="line"><a name="l03740"></a><span class="lineno"> 3740</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>&#160; {</div><div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</div><div class="line"><a name="l03743"></a><span class="lineno"> 3743</span>&#160; <span class="keywordflow">case</span> value_t::number_float:</div><div class="line"><a name="l03744"></a><span class="lineno"> 3744</span>&#160; <span class="keywordflow">case</span> value_t::number_integer:</div><div class="line"><a name="l03745"></a><span class="lineno"> 3745</span>&#160; <span class="keywordflow">case</span> value_t::number_unsigned:</div><div class="line"><a name="l03746"></a><span class="lineno"> 3746</span>&#160; <span class="keywordflow">case</span> value_t::string:</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; <span class="keywordflow">if</span> (not first.m_it.primitive_iterator.is_begin() or not last.m_it.primitive_iterator.is_end())</div><div class="line"><a name="l03749"></a><span class="lineno"> 3749</span>&#160; {</div><div class="line"><a name="l03750"></a><span class="lineno"> 3750</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;iterators out of range&quot;</span>);</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;</div><div class="line"><a name="l03753"></a><span class="lineno"> 3753</span>&#160; <span class="keywordflow">if</span> (is_string())</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="keyword">delete</span> m_value.string;</div><div class="line"><a name="l03756"></a><span class="lineno"> 3756</span>&#160; m_value.string = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l03757"></a><span class="lineno"> 3757</span>&#160; }</div><div class="line"><a name="l03758"></a><span class="lineno"> 3758</span>&#160;</div><div class="line"><a name="l03759"></a><span class="lineno"> 3759</span>&#160; m_type = value_t::null;</div><div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>&#160; <span class="keywordflow">break</span>;</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="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l03764"></a><span class="lineno"> 3764</span>&#160; {</div><div class="line"><a name="l03765"></a><span class="lineno"> 3765</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03766"></a><span class="lineno"> 3766</span>&#160; result.m_it.object_iterator = m_value.object-&gt;erase(first.m_it.object_iterator,</div><div class="line"><a name="l03767"></a><span class="lineno"> 3767</span>&#160; last.m_it.object_iterator);</div><div class="line"><a name="l03768"></a><span class="lineno"> 3768</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03769"></a><span class="lineno"> 3769</span>&#160; }</div><div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>&#160;</div><div class="line"><a name="l03771"></a><span class="lineno"> 3771</span>&#160; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>&#160; {</div><div class="line"><a name="l03773"></a><span class="lineno"> 3773</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03774"></a><span class="lineno"> 3774</span>&#160; result.m_it.array_iterator = m_value.array-&gt;erase(first.m_it.array_iterator,</div><div class="line"><a name="l03775"></a><span class="lineno"> 3775</span>&#160; last.m_it.array_iterator);</div><div class="line"><a name="l03776"></a><span class="lineno"> 3776</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03777"></a><span class="lineno"> 3777</span>&#160; }</div><div class="line"><a name="l03778"></a><span class="lineno"> 3778</span>&#160;</div><div class="line"><a name="l03779"></a><span class="lineno"> 3779</span>&#160; <span class="keywordflow">default</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">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use erase() with &quot;</span> + type_name());</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;</div><div class="line"><a name="l03785"></a><span class="lineno"> 3785</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l03786"></a><span class="lineno"> 3786</span>&#160; }</div><div class="line"><a name="l03787"></a><span class="lineno"> 3787</span>&#160;</div><div class="line"><a name="l03814"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aa36e72ffc3241b960fe9186d19e03bc3.html#aa36e72ffc3241b960fe9186d19e03bc3"> 3814</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json_aa36e72ffc3241b960fe9186d19e03bc3.html#aa36e72ffc3241b960fe9186d19e03bc3">erase</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type&amp; key)</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; <span class="comment">// this erase only works for objects</span></div><div class="line"><a name="l03817"></a><span class="lineno"> 3817</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l03818"></a><span class="lineno"> 3818</span>&#160; {</div><div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03820"></a><span class="lineno"> 3820</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;erase(key);</div><div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>&#160; }</div><div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03823"></a><span class="lineno"> 3823</span>&#160; {</div><div class="line"><a name="l03824"></a><span class="lineno"> 3824</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use erase() with &quot;</span> + type_name());</div><div class="line"><a name="l03825"></a><span class="lineno"> 3825</span>&#160; }</div><div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>&#160; }</div><div class="line"><a name="l03827"></a><span class="lineno"> 3827</span>&#160;</div><div class="line"><a name="l03852"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a3da254c422ede5495f2815c5e48c00c5.html#a3da254c422ede5495f2815c5e48c00c5"> 3852</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json_a3da254c422ede5495f2815c5e48c00c5.html#a3da254c422ede5495f2815c5e48c00c5">erase</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> idx)</div><div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>&#160; {</div><div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>&#160; <span class="comment">// this erase only works for arrays</span></div><div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>&#160; <span class="keywordflow">if</span> (is_array())</div><div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>&#160; {</div><div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>&#160; <span class="keywordflow">if</span> (idx &gt;= size())</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="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;index out of range&quot;</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;</div><div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03863"></a><span class="lineno"> 3863</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_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a><span class="keyword">&gt;</span>(idx));</div><div class="line"><a name="l03864"></a><span class="lineno"> 3864</span>&#160; }</div><div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>&#160; {</div><div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use erase() with &quot;</span> + type_name());</div><div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>&#160; }</div><div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>&#160; }</div><div class="line"><a name="l03870"></a><span class="lineno"> 3870</span>&#160;</div><div class="line"><a name="l03888"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_affe7e160e7bb06eed83c8b437af4692f.html#affe7e160e7bb06eed83c8b437af4692f"> 3888</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_affe7e160e7bb06eed83c8b437af4692f.html#affe7e160e7bb06eed83c8b437af4692f">find</a>(<span class="keyword">typename</span> object_t::key_type key)</div><div class="line"><a name="l03889"></a><span class="lineno"> 3889</span>&#160; {</div><div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>&#160; <span class="keyword">auto</span> result = end();</div><div class="line"><a name="l03891"></a><span class="lineno"> 3891</span>&#160;</div><div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l03893"></a><span class="lineno"> 3893</span>&#160; {</div><div class="line"><a name="l03894"></a><span class="lineno"> 3894</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>&#160; result.m_it.object_iterator = m_value.object-&gt;find(key);</div><div class="line"><a name="l03896"></a><span class="lineno"> 3896</span>&#160; }</div><div class="line"><a name="l03897"></a><span class="lineno"> 3897</span>&#160;</div><div class="line"><a name="l03898"></a><span class="lineno"> 3898</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l03899"></a><span class="lineno"> 3899</span>&#160; }</div><div class="line"><a name="l03900"></a><span class="lineno"> 3900</span>&#160;</div><div class="line"><a name="l03905"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aaa687595d7627925fbf6d6eb97e2021e.html#aaa687595d7627925fbf6d6eb97e2021e"> 3905</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_aaa687595d7627925fbf6d6eb97e2021e.html#aaa687595d7627925fbf6d6eb97e2021e">find</a>(<span class="keyword">typename</span> object_t::key_type key)<span class="keyword"> const</span></div><div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>&#160; <span class="keyword">auto</span> result = cend();</div><div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>&#160;</div><div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>&#160; <span class="keywordflow">if</span> (is_object())</div><div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>&#160; {</div><div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03912"></a><span class="lineno"> 3912</span>&#160; result.m_it.object_iterator = m_value.object-&gt;find(key);</div><div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>&#160; }</div><div class="line"><a name="l03914"></a><span class="lineno"> 3914</span>&#160;</div><div class="line"><a name="l03915"></a><span class="lineno"> 3915</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l03916"></a><span class="lineno"> 3916</span>&#160; }</div><div class="line"><a name="l03917"></a><span class="lineno"> 3917</span>&#160;</div><div class="line"><a name="l03936"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a51b0036310d8aa5858fecc0d91127f27.html#a51b0036310d8aa5858fecc0d91127f27"> 3936</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json_a51b0036310d8aa5858fecc0d91127f27.html#a51b0036310d8aa5858fecc0d91127f27">count</a>(<span class="keyword">typename</span> object_t::key_type key)<span class="keyword"> const</span></div><div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>&#160; <span class="comment">// return 0 for all nonobject types</span></div><div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>&#160; assert(not is_object() or m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>&#160; <span class="keywordflow">return</span> is_object() ? m_value.object-&gt;count(key) : 0;</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="l03944"></a><span class="lineno"> 3944</span>&#160;</div><div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>&#160;</div><div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>&#160; <span class="comment">// iterators //</span></div><div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>&#160;<span class="comment"></span></div><div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>&#160;</div><div class="line"><a name="l03971"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a4cf971f099c8114bb96c9d1c93e683f3.html#a4cf971f099c8114bb96c9d1c93e683f3"> 3971</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_a4cf971f099c8114bb96c9d1c93e683f3.html#a4cf971f099c8114bb96c9d1c93e683f3">begin</a>()</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; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> result(<span class="keyword">this</span>);</div><div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>&#160; result.set_begin();</div><div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>&#160; }</div><div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>&#160;</div><div class="line"><a name="l03981"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ad534f6d0d48bfd1d85f72d7f1b62a46d.html#ad534f6d0d48bfd1d85f72d7f1b62a46d"> 3981</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_ad534f6d0d48bfd1d85f72d7f1b62a46d.html#ad534f6d0d48bfd1d85f72d7f1b62a46d">begin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>&#160; <span class="keywordflow">return</span> cbegin();</div><div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>&#160; }</div><div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>&#160;</div><div class="line"><a name="l04005"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_acbc1c415072afe69b5e69b87f496e44b.html#acbc1c415072afe69b5e69b87f496e44b"> 4005</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_acbc1c415072afe69b5e69b87f496e44b.html#acbc1c415072afe69b5e69b87f496e44b">cbegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l04006"></a><span class="lineno"> 4006</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l04007"></a><span class="lineno"> 4007</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> result(<span class="keyword">this</span>);</div><div class="line"><a name="l04008"></a><span class="lineno"> 4008</span>&#160; result.set_begin();</div><div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>&#160; }</div><div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>&#160;</div><div class="line"><a name="l04030"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a1ec2232bcd43091d49f8dfdd6cfe9865.html#a1ec2232bcd43091d49f8dfdd6cfe9865"> 4030</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_a1ec2232bcd43091d49f8dfdd6cfe9865.html#a1ec2232bcd43091d49f8dfdd6cfe9865">end</a>()</div><div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>&#160; {</div><div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> result(<span class="keyword">this</span>);</div><div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>&#160; result.set_end();</div><div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>&#160; <span class="keywordflow">return</span> result;</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;</div><div class="line"><a name="l04040"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_abc13258393358cb75a32fac86480bc9c.html#abc13258393358cb75a32fac86480bc9c"> 4040</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_abc13258393358cb75a32fac86480bc9c.html#abc13258393358cb75a32fac86480bc9c">end</a>()<span class="keyword"> const</span></div><div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l04042"></a><span class="lineno"> 4042</span>&#160; <span class="keywordflow">return</span> cend();</div><div class="line"><a name="l04043"></a><span class="lineno"> 4043</span>&#160; }</div><div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>&#160;</div><div class="line"><a name="l04064"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ae129dc8ccd58cc3c64614db7d40a7dc9.html#ae129dc8ccd58cc3c64614db7d40a7dc9"> 4064</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_ae129dc8ccd58cc3c64614db7d40a7dc9.html#ae129dc8ccd58cc3c64614db7d40a7dc9">cend</a>()<span class="keyword"> const</span></div><div class="line"><a name="l04065"></a><span class="lineno"> 4065</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l04066"></a><span class="lineno"> 4066</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> result(<span class="keyword">this</span>);</div><div class="line"><a name="l04067"></a><span class="lineno"> 4067</span>&#160; result.set_end();</div><div class="line"><a name="l04068"></a><span class="lineno"> 4068</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l04069"></a><span class="lineno"> 4069</span>&#160; }</div><div class="line"><a name="l04070"></a><span class="lineno"> 4070</span>&#160;</div><div class="line"><a name="l04088"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a7f53f3afd83a13c949c6c42e66e9c4b4.html#a7f53f3afd83a13c949c6c42e66e9c4b4"> 4088</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_a7f53f3afd83a13c949c6c42e66e9c4b4.html#a7f53f3afd83a13c949c6c42e66e9c4b4">rbegin</a>()</div><div class="line"><a name="l04089"></a><span class="lineno"> 4089</span>&#160; {</div><div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">reverse_iterator</a>(end());</div><div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>&#160; }</div><div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>&#160;</div><div class="line"><a name="l04096"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a9c01092601b6229eee4f971aad263133.html#a9c01092601b6229eee4f971aad263133"> 4096</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_a9c01092601b6229eee4f971aad263133.html#a9c01092601b6229eee4f971aad263133">rbegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l04097"></a><span class="lineno"> 4097</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l04098"></a><span class="lineno"> 4098</span>&#160; <span class="keywordflow">return</span> crbegin();</div><div class="line"><a name="l04099"></a><span class="lineno"> 4099</span>&#160; }</div><div class="line"><a name="l04100"></a><span class="lineno"> 4100</span>&#160;</div><div class="line"><a name="l04119"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ad101425649dbc5c2e851fdb52c31741d.html#ad101425649dbc5c2e851fdb52c31741d"> 4119</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_ad101425649dbc5c2e851fdb52c31741d.html#ad101425649dbc5c2e851fdb52c31741d">rend</a>()</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; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">reverse_iterator</a>(begin());</div><div class="line"><a name="l04122"></a><span class="lineno"> 4122</span>&#160; }</div><div class="line"><a name="l04123"></a><span class="lineno"> 4123</span>&#160;</div><div class="line"><a name="l04127"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a0a60ef55808edb545f4f46e49656d035.html#a0a60ef55808edb545f4f46e49656d035"> 4127</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_a0a60ef55808edb545f4f46e49656d035.html#a0a60ef55808edb545f4f46e49656d035">rend</a>()<span class="keyword"> const</span></div><div class="line"><a name="l04128"></a><span class="lineno"> 4128</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l04129"></a><span class="lineno"> 4129</span>&#160; <span class="keywordflow">return</span> crend();</div><div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>&#160; }</div><div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>&#160;</div><div class="line"><a name="l04150"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a3da0951c80c8f4b26497aba38cb3e463.html#a3da0951c80c8f4b26497aba38cb3e463"> 4150</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_a3da0951c80c8f4b26497aba38cb3e463.html#a3da0951c80c8f4b26497aba38cb3e463">crbegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l04151"></a><span class="lineno"> 4151</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">const_reverse_iterator</a>(cend());</div><div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>&#160; }</div><div class="line"><a name="l04154"></a><span class="lineno"> 4154</span>&#160;</div><div class="line"><a name="l04173"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a1846cc6db1f38f5918c8200d9ce31896.html#a1846cc6db1f38f5918c8200d9ce31896"> 4173</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_a1846cc6db1f38f5918c8200d9ce31896.html#a1846cc6db1f38f5918c8200d9ce31896">crend</a>()<span class="keyword"> const</span></div><div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">const_reverse_iterator</a>(cbegin());</div><div class="line"><a name="l04176"></a><span class="lineno"> 4176</span>&#160; }</div><div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>&#160;</div><div class="line"><a name="l04178"></a><span class="lineno"> 4178</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l04179"></a><span class="lineno"> 4179</span>&#160; <span class="comment">// forward declaration</span></div><div class="line"><a name="l04180"></a><span class="lineno"> 4180</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="l04181"></a><span class="lineno"> 4181</span>&#160;</div><div class="line"><a name="l04182"></a><span class="lineno"> 4182</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l04194"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ab936779c70bec68343ef440ed13251e5.html#ab936779c70bec68343ef440ed13251e5"> 4194</a></span>&#160; <span class="keyword">static</span> iteration_proxy&lt;iterator&gt; <a class="code" href="classnlohmann_1_1basic__json_ab936779c70bec68343ef440ed13251e5.html#ab936779c70bec68343ef440ed13251e5">iterator_wrapper</a>(<a class="code" href="classnlohmann_1_1basic__json.html">reference</a> cont)</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; <span class="keywordflow">return</span> iteration_proxy&lt;iterator&gt;(cont);</div><div class="line"><a name="l04197"></a><span class="lineno"> 4197</span>&#160; }</div><div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>&#160;</div><div class="line"><a name="l04202"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_af148cdab12df5bf86119fac735ccaac5.html#af148cdab12df5bf86119fac735ccaac5"> 4202</a></span>&#160; <span class="keyword">static</span> iteration_proxy&lt;const_iterator&gt; <a class="code" href="classnlohmann_1_1basic__json_af148cdab12df5bf86119fac735ccaac5.html#af148cdab12df5bf86119fac735ccaac5">iterator_wrapper</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> cont)</div><div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>&#160; {</div><div class="line"><a name="l04204"></a><span class="lineno"> 4204</span>&#160; <span class="keywordflow">return</span> iteration_proxy&lt;const_iterator&gt;(cont);</div><div class="line"><a name="l04205"></a><span class="lineno"> 4205</span>&#160; }</div><div class="line"><a name="l04206"></a><span class="lineno"> 4206</span>&#160;</div><div class="line"><a name="l04208"></a><span class="lineno"> 4208</span>&#160;</div><div class="line"><a name="l04209"></a><span class="lineno"> 4209</span>&#160;</div><div class="line"><a name="l04211"></a><span class="lineno"> 4211</span>&#160; <span class="comment">// capacity //</span></div><div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>&#160;</div><div class="line"><a name="l04246"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a90239431815c94b0a334f7f4c55eb859.html#a90239431815c94b0a334f7f4c55eb859"> 4246</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a90239431815c94b0a334f7f4c55eb859.html#a90239431815c94b0a334f7f4c55eb859">empty</a>() const noexcept</div><div class="line"><a name="l04247"></a><span class="lineno"> 4247</span>&#160; {</div><div class="line"><a name="l04248"></a><span class="lineno"> 4248</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l04249"></a><span class="lineno"> 4249</span>&#160; {</div><div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>&#160; <span class="keywordflow">case</span> value_t::null:</div><div class="line"><a name="l04251"></a><span class="lineno"> 4251</span>&#160; {</div><div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>&#160; <span class="comment">// null values are empty</span></div><div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l04254"></a><span class="lineno"> 4254</span>&#160; }</div><div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>&#160;</div><div class="line"><a name="l04256"></a><span class="lineno"> 4256</span>&#160; <span class="keywordflow">case</span> value_t::array:</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; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;empty();</div><div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>&#160; }</div><div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>&#160;</div><div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>&#160; <span class="keywordflow">case</span> value_t::object:</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; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;empty();</div><div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>&#160; }</div><div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>&#160;</div><div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>&#160; {</div><div class="line"><a name="l04270"></a><span class="lineno"> 4270</span>&#160; <span class="comment">// all other types are nonempty</span></div><div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>&#160; }</div><div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>&#160; }</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;</div><div class="line"><a name="l04304"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a01833b332b68d9af1f7cd7a816c39e49.html#a01833b332b68d9af1f7cd7a816c39e49"> 4304</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json_a01833b332b68d9af1f7cd7a816c39e49.html#a01833b332b68d9af1f7cd7a816c39e49">size</a>() const noexcept</div><div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>&#160; {</div><div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l04307"></a><span class="lineno"> 4307</span>&#160; {</div><div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>&#160; <span class="keywordflow">case</span> value_t::null:</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="comment">// null values are empty</span></div><div class="line"><a name="l04311"></a><span class="lineno"> 4311</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04312"></a><span class="lineno"> 4312</span>&#160; }</div><div class="line"><a name="l04313"></a><span class="lineno"> 4313</span>&#160;</div><div class="line"><a name="l04314"></a><span class="lineno"> 4314</span>&#160; <span class="keywordflow">case</span> value_t::array:</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; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;size();</div><div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>&#160; }</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; <span class="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l04321"></a><span class="lineno"> 4321</span>&#160; {</div><div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;size();</div><div class="line"><a name="l04324"></a><span class="lineno"> 4324</span>&#160; }</div><div class="line"><a name="l04325"></a><span class="lineno"> 4325</span>&#160;</div><div class="line"><a name="l04326"></a><span class="lineno"> 4326</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l04327"></a><span class="lineno"> 4327</span>&#160; {</div><div class="line"><a name="l04328"></a><span class="lineno"> 4328</span>&#160; <span class="comment">// all other types have size 1</span></div><div class="line"><a name="l04329"></a><span class="lineno"> 4329</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l04330"></a><span class="lineno"> 4330</span>&#160; }</div><div class="line"><a name="l04331"></a><span class="lineno"> 4331</span>&#160; }</div><div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>&#160; }</div><div class="line"><a name="l04333"></a><span class="lineno"> 4333</span>&#160;</div><div class="line"><a name="l04366"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ad5514a7435f246fc5335856465022a7a.html#ad5514a7435f246fc5335856465022a7a"> 4366</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json_ad5514a7435f246fc5335856465022a7a.html#ad5514a7435f246fc5335856465022a7a">max_size</a>() const noexcept</div><div class="line"><a name="l04367"></a><span class="lineno"> 4367</span>&#160; {</div><div class="line"><a name="l04368"></a><span class="lineno"> 4368</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>&#160; {</div><div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>&#160; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l04371"></a><span class="lineno"> 4371</span>&#160; {</div><div class="line"><a name="l04372"></a><span class="lineno"> 4372</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04373"></a><span class="lineno"> 4373</span>&#160; <span class="keywordflow">return</span> m_value.array-&gt;max_size();</div><div class="line"><a name="l04374"></a><span class="lineno"> 4374</span>&#160; }</div><div class="line"><a name="l04375"></a><span class="lineno"> 4375</span>&#160;</div><div class="line"><a name="l04376"></a><span class="lineno"> 4376</span>&#160; <span class="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l04377"></a><span class="lineno"> 4377</span>&#160; {</div><div class="line"><a name="l04378"></a><span class="lineno"> 4378</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04379"></a><span class="lineno"> 4379</span>&#160; <span class="keywordflow">return</span> m_value.object-&gt;max_size();</div><div class="line"><a name="l04380"></a><span class="lineno"> 4380</span>&#160; }</div><div class="line"><a name="l04381"></a><span class="lineno"> 4381</span>&#160;</div><div class="line"><a name="l04382"></a><span class="lineno"> 4382</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l04383"></a><span class="lineno"> 4383</span>&#160; {</div><div class="line"><a name="l04384"></a><span class="lineno"> 4384</span>&#160; <span class="comment">// all other types have max_size() == size()</span></div><div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>&#160; <span class="keywordflow">return</span> size();</div><div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>&#160; }</div><div class="line"><a name="l04387"></a><span class="lineno"> 4387</span>&#160; }</div><div class="line"><a name="l04388"></a><span class="lineno"> 4388</span>&#160; }</div><div class="line"><a name="l04389"></a><span class="lineno"> 4389</span>&#160;</div><div class="line"><a name="l04391"></a><span class="lineno"> 4391</span>&#160;</div><div class="line"><a name="l04392"></a><span class="lineno"> 4392</span>&#160;</div><div class="line"><a name="l04394"></a><span class="lineno"> 4394</span>&#160; <span class="comment">// modifiers //</span></div><div class="line"><a name="l04396"></a><span class="lineno"> 4396</span>&#160;<span class="comment"></span></div><div class="line"><a name="l04399"></a><span class="lineno"> 4399</span>&#160;</div><div class="line"><a name="l04425"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ad6e51670e9c0052856f3fee01df5c44f.html#ad6e51670e9c0052856f3fee01df5c44f"> 4425</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json_ad6e51670e9c0052856f3fee01df5c44f.html#ad6e51670e9c0052856f3fee01df5c44f">clear</a>() noexcept</div><div class="line"><a name="l04426"></a><span class="lineno"> 4426</span>&#160; {</div><div class="line"><a name="l04427"></a><span class="lineno"> 4427</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l04428"></a><span class="lineno"> 4428</span>&#160; {</div><div class="line"><a name="l04429"></a><span class="lineno"> 4429</span>&#160; <span class="keywordflow">case</span> value_t::number_integer:</div><div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>&#160; {</div><div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>&#160; m_value.number_integer = 0;</div><div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>&#160; <span class="keywordflow">break</span>;</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;</div><div class="line"><a name="l04435"></a><span class="lineno"> 4435</span>&#160; <span class="keywordflow">case</span> value_t::number_unsigned:</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; m_value.number_unsigned = 0;</div><div class="line"><a name="l04438"></a><span class="lineno"> 4438</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04439"></a><span class="lineno"> 4439</span>&#160; }</div><div class="line"><a name="l04440"></a><span class="lineno"> 4440</span>&#160;</div><div class="line"><a name="l04441"></a><span class="lineno"> 4441</span>&#160; <span class="keywordflow">case</span> value_t::number_float:</div><div class="line"><a name="l04442"></a><span class="lineno"> 4442</span>&#160; {</div><div class="line"><a name="l04443"></a><span class="lineno"> 4443</span>&#160; m_value.number_float = 0.0;</div><div class="line"><a name="l04444"></a><span class="lineno"> 4444</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04445"></a><span class="lineno"> 4445</span>&#160; }</div><div class="line"><a name="l04446"></a><span class="lineno"> 4446</span>&#160;</div><div class="line"><a name="l04447"></a><span class="lineno"> 4447</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</div><div class="line"><a name="l04448"></a><span class="lineno"> 4448</span>&#160; {</div><div class="line"><a name="l04449"></a><span class="lineno"> 4449</span>&#160; m_value.boolean = <span class="keyword">false</span>;</div><div class="line"><a name="l04450"></a><span class="lineno"> 4450</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04451"></a><span class="lineno"> 4451</span>&#160; }</div><div class="line"><a name="l04452"></a><span class="lineno"> 4452</span>&#160;</div><div class="line"><a name="l04453"></a><span class="lineno"> 4453</span>&#160; <span class="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l04454"></a><span class="lineno"> 4454</span>&#160; {</div><div class="line"><a name="l04455"></a><span class="lineno"> 4455</span>&#160; assert(m_value.string != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>&#160; m_value.string-&gt;clear();</div><div class="line"><a name="l04457"></a><span class="lineno"> 4457</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04458"></a><span class="lineno"> 4458</span>&#160; }</div><div class="line"><a name="l04459"></a><span class="lineno"> 4459</span>&#160;</div><div class="line"><a name="l04460"></a><span class="lineno"> 4460</span>&#160; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l04461"></a><span class="lineno"> 4461</span>&#160; {</div><div class="line"><a name="l04462"></a><span class="lineno"> 4462</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04463"></a><span class="lineno"> 4463</span>&#160; m_value.array-&gt;clear();</div><div class="line"><a name="l04464"></a><span class="lineno"> 4464</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04465"></a><span class="lineno"> 4465</span>&#160; }</div><div class="line"><a name="l04466"></a><span class="lineno"> 4466</span>&#160;</div><div class="line"><a name="l04467"></a><span class="lineno"> 4467</span>&#160; <span class="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l04468"></a><span class="lineno"> 4468</span>&#160; {</div><div class="line"><a name="l04469"></a><span class="lineno"> 4469</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04470"></a><span class="lineno"> 4470</span>&#160; m_value.object-&gt;clear();</div><div class="line"><a name="l04471"></a><span class="lineno"> 4471</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04472"></a><span class="lineno"> 4472</span>&#160; }</div><div class="line"><a name="l04473"></a><span class="lineno"> 4473</span>&#160;</div><div class="line"><a name="l04474"></a><span class="lineno"> 4474</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l04475"></a><span class="lineno"> 4475</span>&#160; {</div><div class="line"><a name="l04476"></a><span class="lineno"> 4476</span>&#160; <span class="keywordflow">break</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"> 4478</span>&#160; }</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;</div><div class="line"><a name="l04501"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a486b96adbf4886c38e38c952394a220f.html#a486b96adbf4886c38e38c952394a220f"> 4501</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json_a486b96adbf4886c38e38c952394a220f.html#a486b96adbf4886c38e38c952394a220f">push_back</a>(basic_json&amp;&amp; val)</div><div class="line"><a name="l04502"></a><span class="lineno"> 4502</span>&#160; {</div><div class="line"><a name="l04503"></a><span class="lineno"> 4503</span>&#160; <span class="comment">// push_back only works for null objects or arrays</span></div><div class="line"><a name="l04504"></a><span class="lineno"> 4504</span>&#160; <span class="keywordflow">if</span> (not(is_null() or is_array()))</div><div class="line"><a name="l04505"></a><span class="lineno"> 4505</span>&#160; {</div><div class="line"><a name="l04506"></a><span class="lineno"> 4506</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use push_back() with &quot;</span> + type_name());</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"> 4508</span>&#160;</div><div class="line"><a name="l04509"></a><span class="lineno"> 4509</span>&#160; <span class="comment">// transform null object into an array</span></div><div class="line"><a name="l04510"></a><span class="lineno"> 4510</span>&#160; <span class="keywordflow">if</span> (is_null())</div><div class="line"><a name="l04511"></a><span class="lineno"> 4511</span>&#160; {</div><div class="line"><a name="l04512"></a><span class="lineno"> 4512</span>&#160; m_type = value_t::array;</div><div class="line"><a name="l04513"></a><span class="lineno"> 4513</span>&#160; m_value = value_t::array;</div><div class="line"><a name="l04514"></a><span class="lineno"> 4514</span>&#160; }</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; <span class="comment">// add element to array (move semantics)</span></div><div class="line"><a name="l04517"></a><span class="lineno"> 4517</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04518"></a><span class="lineno"> 4518</span>&#160; m_value.array-&gt;push_back(std::move(val));</div><div class="line"><a name="l04519"></a><span class="lineno"> 4519</span>&#160; <span class="comment">// invalidate object</span></div><div class="line"><a name="l04520"></a><span class="lineno"> 4520</span>&#160; val.m_type = value_t::null;</div><div class="line"><a name="l04521"></a><span class="lineno"> 4521</span>&#160; }</div><div class="line"><a name="l04522"></a><span class="lineno"> 4522</span>&#160;</div><div class="line"><a name="l04527"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a1c1aa2d148a3e4ce0d4e50cf5b894f41.html#a1c1aa2d148a3e4ce0d4e50cf5b894f41"> 4527</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_a1c1aa2d148a3e4ce0d4e50cf5b894f41.html#a1c1aa2d148a3e4ce0d4e50cf5b894f41">operator+=</a>(basic_json&amp;&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; push_back(std::move(val));</div><div class="line"><a name="l04530"></a><span class="lineno"> 4530</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04531"></a><span class="lineno"> 4531</span>&#160; }</div><div class="line"><a name="l04532"></a><span class="lineno"> 4532</span>&#160;</div><div class="line"><a name="l04537"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a6f3dfd3e83a1e907d7946b47fcd7ceba.html#a6f3dfd3e83a1e907d7946b47fcd7ceba"> 4537</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json_a6f3dfd3e83a1e907d7946b47fcd7ceba.html#a6f3dfd3e83a1e907d7946b47fcd7ceba">push_back</a>(<span class="keyword">const</span> basic_json&amp; val)</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; <span class="comment">// push_back only works for null objects or arrays</span></div><div class="line"><a name="l04540"></a><span class="lineno"> 4540</span>&#160; <span class="keywordflow">if</span> (not(is_null() or is_array()))</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; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use push_back() with &quot;</span> + type_name());</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;</div><div class="line"><a name="l04545"></a><span class="lineno"> 4545</span>&#160; <span class="comment">// transform null object into an array</span></div><div class="line"><a name="l04546"></a><span class="lineno"> 4546</span>&#160; <span class="keywordflow">if</span> (is_null())</div><div class="line"><a name="l04547"></a><span class="lineno"> 4547</span>&#160; {</div><div class="line"><a name="l04548"></a><span class="lineno"> 4548</span>&#160; m_type = value_t::array;</div><div class="line"><a name="l04549"></a><span class="lineno"> 4549</span>&#160; m_value = value_t::array;</div><div class="line"><a name="l04550"></a><span class="lineno"> 4550</span>&#160; }</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; <span class="comment">// add element to array</span></div><div class="line"><a name="l04553"></a><span class="lineno"> 4553</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04554"></a><span class="lineno"> 4554</span>&#160; m_value.array-&gt;push_back(val);</div><div class="line"><a name="l04555"></a><span class="lineno"> 4555</span>&#160; }</div><div class="line"><a name="l04556"></a><span class="lineno"> 4556</span>&#160;</div><div class="line"><a name="l04561"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a80c21170db6b5ffd9274b3f351cebadc.html#a80c21170db6b5ffd9274b3f351cebadc"> 4561</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_a80c21170db6b5ffd9274b3f351cebadc.html#a80c21170db6b5ffd9274b3f351cebadc">operator+=</a>(<span class="keyword">const</span> basic_json&amp; val)</div><div class="line"><a name="l04562"></a><span class="lineno"> 4562</span>&#160; {</div><div class="line"><a name="l04563"></a><span class="lineno"> 4563</span>&#160; push_back(val);</div><div class="line"><a name="l04564"></a><span class="lineno"> 4564</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04565"></a><span class="lineno"> 4565</span>&#160; }</div><div class="line"><a name="l04566"></a><span class="lineno"> 4566</span>&#160;</div><div class="line"><a name="l04587"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a5212588544f6d2266384c3be9bfda0c5.html#a5212588544f6d2266384c3be9bfda0c5"> 4587</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json_a5212588544f6d2266384c3be9bfda0c5.html#a5212588544f6d2266384c3be9bfda0c5">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="l04588"></a><span class="lineno"> 4588</span>&#160; {</div><div class="line"><a name="l04589"></a><span class="lineno"> 4589</span>&#160; <span class="comment">// push_back only works for null objects or objects</span></div><div class="line"><a name="l04590"></a><span class="lineno"> 4590</span>&#160; <span class="keywordflow">if</span> (not(is_null() or is_object()))</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="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use push_back() with &quot;</span> + type_name());</div><div class="line"><a name="l04593"></a><span class="lineno"> 4593</span>&#160; }</div><div class="line"><a name="l04594"></a><span class="lineno"> 4594</span>&#160;</div><div class="line"><a name="l04595"></a><span class="lineno"> 4595</span>&#160; <span class="comment">// transform null object into an object</span></div><div class="line"><a name="l04596"></a><span class="lineno"> 4596</span>&#160; <span class="keywordflow">if</span> (is_null())</div><div class="line"><a name="l04597"></a><span class="lineno"> 4597</span>&#160; {</div><div class="line"><a name="l04598"></a><span class="lineno"> 4598</span>&#160; m_type = value_t::object;</div><div class="line"><a name="l04599"></a><span class="lineno"> 4599</span>&#160; m_value = value_t::object;</div><div class="line"><a name="l04600"></a><span class="lineno"> 4600</span>&#160; }</div><div class="line"><a name="l04601"></a><span class="lineno"> 4601</span>&#160;</div><div class="line"><a name="l04602"></a><span class="lineno"> 4602</span>&#160; <span class="comment">// add element to array</span></div><div class="line"><a name="l04603"></a><span class="lineno"> 4603</span>&#160; assert(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04604"></a><span class="lineno"> 4604</span>&#160; m_value.object-&gt;insert(val);</div><div class="line"><a name="l04605"></a><span class="lineno"> 4605</span>&#160; }</div><div class="line"><a name="l04606"></a><span class="lineno"> 4606</span>&#160;</div><div class="line"><a name="l04611"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a9486a272e034c0548305d7a12f3045e6.html#a9486a272e034c0548305d7a12f3045e6"> 4611</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json_a9486a272e034c0548305d7a12f3045e6.html#a9486a272e034c0548305d7a12f3045e6">operator+=</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::value_type&amp; val)</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; push_back(val);</div><div class="line"><a name="l04614"></a><span class="lineno"> 4614</span>&#160; <span class="keywordflow">return</span> operator[](val.first);</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="l04639"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a7f7bbb3a9efef2e2442f538a24c1c47b.html#a7f7bbb3a9efef2e2442f538a24c1c47b"> 4639</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_a7f7bbb3a9efef2e2442f538a24c1c47b.html#a7f7bbb3a9efef2e2442f538a24c1c47b">insert</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> pos, <span class="keyword">const</span> basic_json&amp; val)</div><div class="line"><a name="l04640"></a><span class="lineno"> 4640</span>&#160; {</div><div class="line"><a name="l04641"></a><span class="lineno"> 4641</span>&#160; <span class="comment">// insert only works for arrays</span></div><div class="line"><a name="l04642"></a><span class="lineno"> 4642</span>&#160; <span class="keywordflow">if</span> (is_array())</div><div class="line"><a name="l04643"></a><span class="lineno"> 4643</span>&#160; {</div><div class="line"><a name="l04644"></a><span class="lineno"> 4644</span>&#160; <span class="comment">// check if iterator pos fits to this JSON value</span></div><div class="line"><a name="l04645"></a><span class="lineno"> 4645</span>&#160; <span class="keywordflow">if</span> (pos.m_object != <span class="keyword">this</span>)</div><div class="line"><a name="l04646"></a><span class="lineno"> 4646</span>&#160; {</div><div class="line"><a name="l04647"></a><span class="lineno"> 4647</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;iterator does not fit current value&quot;</span>);</div><div class="line"><a name="l04648"></a><span class="lineno"> 4648</span>&#160; }</div><div class="line"><a name="l04649"></a><span class="lineno"> 4649</span>&#160;</div><div class="line"><a name="l04650"></a><span class="lineno"> 4650</span>&#160; <span class="comment">// insert to array and return iterator</span></div><div class="line"><a name="l04651"></a><span class="lineno"> 4651</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> result(<span class="keyword">this</span>);</div><div class="line"><a name="l04652"></a><span class="lineno"> 4652</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04653"></a><span class="lineno"> 4653</span>&#160; result.m_it.array_iterator = m_value.array-&gt;insert(pos.m_it.array_iterator, val);</div><div class="line"><a name="l04654"></a><span class="lineno"> 4654</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l04655"></a><span class="lineno"> 4655</span>&#160; }</div><div class="line"><a name="l04656"></a><span class="lineno"> 4656</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l04657"></a><span class="lineno"> 4657</span>&#160; {</div><div class="line"><a name="l04658"></a><span class="lineno"> 4658</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use insert() with &quot;</span> + type_name());</div><div class="line"><a name="l04659"></a><span class="lineno"> 4659</span>&#160; }</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"> 4661</span>&#160;</div><div class="line"><a name="l04666"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a8468efcfcd95db15f46887b29924ed5c.html#a8468efcfcd95db15f46887b29924ed5c"> 4666</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_a8468efcfcd95db15f46887b29924ed5c.html#a8468efcfcd95db15f46887b29924ed5c">insert</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> pos, basic_json&amp;&amp; val)</div><div class="line"><a name="l04667"></a><span class="lineno"> 4667</span>&#160; {</div><div class="line"><a name="l04668"></a><span class="lineno"> 4668</span>&#160; <span class="keywordflow">return</span> insert(pos, val);</div><div class="line"><a name="l04669"></a><span class="lineno"> 4669</span>&#160; }</div><div class="line"><a name="l04670"></a><span class="lineno"> 4670</span>&#160;</div><div class="line"><a name="l04695"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a624025acfcf64364d98424402b837bc6.html#a624025acfcf64364d98424402b837bc6"> 4695</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_a624025acfcf64364d98424402b837bc6.html#a624025acfcf64364d98424402b837bc6">insert</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> pos, <a class="code" href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">size_type</a> cnt, <span class="keyword">const</span> basic_json&amp; val)</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"> 4697</span>&#160; <span class="comment">// insert only works for arrays</span></div><div class="line"><a name="l04698"></a><span class="lineno"> 4698</span>&#160; <span class="keywordflow">if</span> (is_array())</div><div class="line"><a name="l04699"></a><span class="lineno"> 4699</span>&#160; {</div><div class="line"><a name="l04700"></a><span class="lineno"> 4700</span>&#160; <span class="comment">// check if iterator pos fits to this JSON value</span></div><div class="line"><a name="l04701"></a><span class="lineno"> 4701</span>&#160; <span class="keywordflow">if</span> (pos.m_object != <span class="keyword">this</span>)</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="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;iterator does not fit current value&quot;</span>);</div><div class="line"><a name="l04704"></a><span class="lineno"> 4704</span>&#160; }</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">// insert to array and return iterator</span></div><div class="line"><a name="l04707"></a><span class="lineno"> 4707</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> result(<span class="keyword">this</span>);</div><div class="line"><a name="l04708"></a><span class="lineno"> 4708</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04709"></a><span class="lineno"> 4709</span>&#160; result.m_it.array_iterator = m_value.array-&gt;insert(pos.m_it.array_iterator, cnt, val);</div><div class="line"><a name="l04710"></a><span class="lineno"> 4710</span>&#160; <span class="keywordflow">return</span> result;</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">else</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; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use insert() with &quot;</span> + type_name());</div><div class="line"><a name="l04715"></a><span class="lineno"> 4715</span>&#160; }</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;</div><div class="line"><a name="l04748"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aeaa0644fd6b99af364e772092268dfd6.html#aeaa0644fd6b99af364e772092268dfd6"> 4748</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_aeaa0644fd6b99af364e772092268dfd6.html#aeaa0644fd6b99af364e772092268dfd6">insert</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> pos, <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> first, <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> last)</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="comment">// insert only works for arrays</span></div><div class="line"><a name="l04751"></a><span class="lineno"> 4751</span>&#160; <span class="keywordflow">if</span> (not is_array())</div><div class="line"><a name="l04752"></a><span class="lineno"> 4752</span>&#160; {</div><div class="line"><a name="l04753"></a><span class="lineno"> 4753</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use insert() with &quot;</span> + type_name());</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; <span class="comment">// check if iterator pos fits to this JSON value</span></div><div class="line"><a name="l04757"></a><span class="lineno"> 4757</span>&#160; <span class="keywordflow">if</span> (pos.m_object != <span class="keyword">this</span>)</div><div class="line"><a name="l04758"></a><span class="lineno"> 4758</span>&#160; {</div><div class="line"><a name="l04759"></a><span class="lineno"> 4759</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;iterator does not fit current value&quot;</span>);</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"> 4761</span>&#160;</div><div class="line"><a name="l04762"></a><span class="lineno"> 4762</span>&#160; <span class="keywordflow">if</span> (first.m_object != last.m_object)</div><div class="line"><a name="l04763"></a><span class="lineno"> 4763</span>&#160; {</div><div class="line"><a name="l04764"></a><span class="lineno"> 4764</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;iterators do not fit&quot;</span>);</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;</div><div class="line"><a name="l04767"></a><span class="lineno"> 4767</span>&#160; <span class="keywordflow">if</span> (first.m_object == <span class="keyword">this</span> or last.m_object == <span class="keyword">this</span>)</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="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;passed iterators may not belong to container&quot;</span>);</div><div class="line"><a name="l04770"></a><span class="lineno"> 4770</span>&#160; }</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; <span class="comment">// insert to array and return iterator</span></div><div class="line"><a name="l04773"></a><span class="lineno"> 4773</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> result(<span class="keyword">this</span>);</div><div class="line"><a name="l04774"></a><span class="lineno"> 4774</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04775"></a><span class="lineno"> 4775</span>&#160; result.m_it.array_iterator = m_value.array-&gt;insert(</div><div class="line"><a name="l04776"></a><span class="lineno"> 4776</span>&#160; pos.m_it.array_iterator,</div><div class="line"><a name="l04777"></a><span class="lineno"> 4777</span>&#160; first.m_it.array_iterator,</div><div class="line"><a name="l04778"></a><span class="lineno"> 4778</span>&#160; last.m_it.array_iterator);</div><div class="line"><a name="l04779"></a><span class="lineno"> 4779</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l04780"></a><span class="lineno"> 4780</span>&#160; }</div><div class="line"><a name="l04781"></a><span class="lineno"> 4781</span>&#160;</div><div class="line"><a name="l04806"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aadb4e5be88221e5e28cdb752332f3d13.html#aadb4e5be88221e5e28cdb752332f3d13"> 4806</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_aadb4e5be88221e5e28cdb752332f3d13.html#aadb4e5be88221e5e28cdb752332f3d13">insert</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> pos, std::initializer_list&lt;basic_json&gt; ilist)</div><div class="line"><a name="l04807"></a><span class="lineno"> 4807</span>&#160; {</div><div class="line"><a name="l04808"></a><span class="lineno"> 4808</span>&#160; <span class="comment">// insert only works for arrays</span></div><div class="line"><a name="l04809"></a><span class="lineno"> 4809</span>&#160; <span class="keywordflow">if</span> (not is_array())</div><div class="line"><a name="l04810"></a><span class="lineno"> 4810</span>&#160; {</div><div class="line"><a name="l04811"></a><span class="lineno"> 4811</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use insert() with &quot;</span> + type_name());</div><div class="line"><a name="l04812"></a><span class="lineno"> 4812</span>&#160; }</div><div class="line"><a name="l04813"></a><span class="lineno"> 4813</span>&#160;</div><div class="line"><a name="l04814"></a><span class="lineno"> 4814</span>&#160; <span class="comment">// check if iterator pos fits to this JSON value</span></div><div class="line"><a name="l04815"></a><span class="lineno"> 4815</span>&#160; <span class="keywordflow">if</span> (pos.m_object != <span class="keyword">this</span>)</div><div class="line"><a name="l04816"></a><span class="lineno"> 4816</span>&#160; {</div><div class="line"><a name="l04817"></a><span class="lineno"> 4817</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;iterator does not fit current value&quot;</span>);</div><div class="line"><a name="l04818"></a><span class="lineno"> 4818</span>&#160; }</div><div class="line"><a name="l04819"></a><span class="lineno"> 4819</span>&#160;</div><div class="line"><a name="l04820"></a><span class="lineno"> 4820</span>&#160; <span class="comment">// insert to array and return iterator</span></div><div class="line"><a name="l04821"></a><span class="lineno"> 4821</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> result(<span class="keyword">this</span>);</div><div class="line"><a name="l04822"></a><span class="lineno"> 4822</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04823"></a><span class="lineno"> 4823</span>&#160; result.m_it.array_iterator = m_value.array-&gt;insert(pos.m_it.array_iterator, ilist);</div><div class="line"><a name="l04824"></a><span class="lineno"> 4824</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l04825"></a><span class="lineno"> 4825</span>&#160; }</div><div class="line"><a name="l04826"></a><span class="lineno"> 4826</span>&#160;</div><div class="line"><a name="l04844"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_af77614992e38b355b9213940051cc582.html#af77614992e38b355b9213940051cc582"> 4844</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json_af77614992e38b355b9213940051cc582.html#af77614992e38b355b9213940051cc582">swap</a>(<a class="code" href="classnlohmann_1_1basic__json.html">reference</a> other) noexcept (</div><div class="line"><a name="l04845"></a><span class="lineno"> 4845</span>&#160; std::is_nothrow_move_constructible&lt;value_t&gt;::value and</div><div class="line"><a name="l04846"></a><span class="lineno"> 4846</span>&#160; std::is_nothrow_move_assignable&lt;value_t&gt;::value and</div><div class="line"><a name="l04847"></a><span class="lineno"> 4847</span>&#160; std::is_nothrow_move_constructible&lt;json_value&gt;::value and</div><div class="line"><a name="l04848"></a><span class="lineno"> 4848</span>&#160; std::is_nothrow_move_assignable&lt;json_value&gt;::value</div><div class="line"><a name="l04849"></a><span class="lineno"> 4849</span>&#160; )</div><div class="line"><a name="l04850"></a><span class="lineno"> 4850</span>&#160; {</div><div class="line"><a name="l04851"></a><span class="lineno"> 4851</span>&#160; std::swap(m_type, other.m_type);</div><div class="line"><a name="l04852"></a><span class="lineno"> 4852</span>&#160; std::swap(m_value, other.m_value);</div><div class="line"><a name="l04853"></a><span class="lineno"> 4853</span>&#160; }</div><div class="line"><a name="l04854"></a><span class="lineno"> 4854</span>&#160;</div><div class="line"><a name="l04875"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a8209621de6184d9eabe136b7c8f61935.html#a8209621de6184d9eabe136b7c8f61935"> 4875</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json_a8209621de6184d9eabe136b7c8f61935.html#a8209621de6184d9eabe136b7c8f61935">swap</a>(<a class="code" href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">array_t</a>&amp; other)</div><div class="line"><a name="l04876"></a><span class="lineno"> 4876</span>&#160; {</div><div class="line"><a name="l04877"></a><span class="lineno"> 4877</span>&#160; <span class="comment">// swap only works for arrays</span></div><div class="line"><a name="l04878"></a><span class="lineno"> 4878</span>&#160; <span class="keywordflow">if</span> (is_array())</div><div class="line"><a name="l04879"></a><span class="lineno"> 4879</span>&#160; {</div><div class="line"><a name="l04880"></a><span class="lineno"> 4880</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04881"></a><span class="lineno"> 4881</span>&#160; std::swap(*(m_value.array), other);</div><div class="line"><a name="l04882"></a><span class="lineno"> 4882</span>&#160; }</div><div class="line"><a name="l04883"></a><span class="lineno"> 4883</span>&#160; <span class="keywordflow">else</span></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="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use swap() with &quot;</span> + type_name());</div><div class="line"><a name="l04886"></a><span class="lineno"> 4886</span>&#160; }</div><div class="line"><a name="l04887"></a><span class="lineno"> 4887</span>&#160; }</div><div class="line"><a name="l04888"></a><span class="lineno"> 4888</span>&#160;</div><div class="line"><a name="l04909"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a38ee0f09a318d003add75e0787040794.html#a38ee0f09a318d003add75e0787040794"> 4909</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json_a38ee0f09a318d003add75e0787040794.html#a38ee0f09a318d003add75e0787040794">swap</a>(<a class="code" href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">object_t</a>&amp; other)</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="comment">// swap only works for objects</span></div><div class="line"><a name="l04912"></a><span class="lineno"> 4912</span>&#160; <span class="keywordflow">if</span> (is_object())</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(m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04915"></a><span class="lineno"> 4915</span>&#160; std::swap(*(m_value.object), other);</div><div class="line"><a name="l04916"></a><span class="lineno"> 4916</span>&#160; }</div><div class="line"><a name="l04917"></a><span class="lineno"> 4917</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l04918"></a><span class="lineno"> 4918</span>&#160; {</div><div class="line"><a name="l04919"></a><span class="lineno"> 4919</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use swap() with &quot;</span> + type_name());</div><div class="line"><a name="l04920"></a><span class="lineno"> 4920</span>&#160; }</div><div class="line"><a name="l04921"></a><span class="lineno"> 4921</span>&#160; }</div><div class="line"><a name="l04922"></a><span class="lineno"> 4922</span>&#160;</div><div class="line"><a name="l04943"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a86089c703a2e563b9f760c2f8408efa7.html#a86089c703a2e563b9f760c2f8408efa7"> 4943</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json_a86089c703a2e563b9f760c2f8408efa7.html#a86089c703a2e563b9f760c2f8408efa7">swap</a>(<a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>&amp; other)</div><div class="line"><a name="l04944"></a><span class="lineno"> 4944</span>&#160; {</div><div class="line"><a name="l04945"></a><span class="lineno"> 4945</span>&#160; <span class="comment">// swap only works for strings</span></div><div class="line"><a name="l04946"></a><span class="lineno"> 4946</span>&#160; <span class="keywordflow">if</span> (is_string())</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"> 4948</span>&#160; assert(m_value.string != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l04949"></a><span class="lineno"> 4949</span>&#160; std::swap(*(m_value.string), other);</div><div class="line"><a name="l04950"></a><span class="lineno"> 4950</span>&#160; }</div><div class="line"><a name="l04951"></a><span class="lineno"> 4951</span>&#160; <span class="keywordflow">else</span></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"> 4953</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use swap() with &quot;</span> + type_name());</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; }</div><div class="line"><a name="l04956"></a><span class="lineno"> 4956</span>&#160;</div><div class="line"><a name="l04958"></a><span class="lineno"> 4958</span>&#160;</div><div class="line"><a name="l04959"></a><span class="lineno"> 4959</span>&#160;</div><div class="line"><a name="l04961"></a><span class="lineno"> 4961</span>&#160; <span class="comment">// lexicographical comparison operators //</span></div><div class="line"><a name="l04963"></a><span class="lineno"> 4963</span>&#160;<span class="comment"></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; <span class="keyword">private</span>:</div><div class="line"><a name="l04977"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aac185a137428a7337aa620de07bfbbd7.html#aac185a137428a7337aa620de07bfbbd7"> 4977</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_aac185a137428a7337aa620de07bfbbd7.html#aac185a137428a7337aa620de07bfbbd7">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a> lhs, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a> rhs)</div><div class="line"><a name="l04978"></a><span class="lineno"> 4978</span>&#160; {</div><div class="line"><a name="l04979"></a><span class="lineno"> 4979</span>&#160; <span class="keyword">static</span> constexpr std::array&lt;uint8_t, 8&gt; order = {{</div><div class="line"><a name="l04980"></a><span class="lineno"> 4980</span>&#160; 0, <span class="comment">// null</span></div><div class="line"><a name="l04981"></a><span class="lineno"> 4981</span>&#160; 3, <span class="comment">// object</span></div><div class="line"><a name="l04982"></a><span class="lineno"> 4982</span>&#160; 4, <span class="comment">// array</span></div><div class="line"><a name="l04983"></a><span class="lineno"> 4983</span>&#160; 5, <span class="comment">// string</span></div><div class="line"><a name="l04984"></a><span class="lineno"> 4984</span>&#160; 1, <span class="comment">// boolean</span></div><div class="line"><a name="l04985"></a><span class="lineno"> 4985</span>&#160; 2, <span class="comment">// integer</span></div><div class="line"><a name="l04986"></a><span class="lineno"> 4986</span>&#160; 2, <span class="comment">// unsigned</span></div><div class="line"><a name="l04987"></a><span class="lineno"> 4987</span>&#160; 2, <span class="comment">// float</span></div><div class="line"><a name="l04988"></a><span class="lineno"> 4988</span>&#160; }</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;</div><div class="line"><a name="l04991"></a><span class="lineno"> 4991</span>&#160; <span class="comment">// discarded values are not comparable</span></div><div class="line"><a name="l04992"></a><span class="lineno"> 4992</span>&#160; <span class="keywordflow">if</span> (lhs == value_t::discarded or rhs == value_t::discarded)</div><div class="line"><a name="l04993"></a><span class="lineno"> 4993</span>&#160; {</div><div class="line"><a name="l04994"></a><span class="lineno"> 4994</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l04995"></a><span class="lineno"> 4995</span>&#160; }</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; <span class="keywordflow">return</span> order[<span class="keyword">static_cast&lt;</span>std::size_t<span class="keyword">&gt;</span>(lhs)] &lt; order[static_cast&lt;std::size_t&gt;(rhs)];</div><div class="line"><a name="l04998"></a><span class="lineno"> 4998</span>&#160; }</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="keyword">public</span>:</div><div class="line"><a name="l05024"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.html#a122640e7e2db1814fc7bbb3c122ec76e"> 5024</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.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="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">const</span> <span class="keyword">auto</span> lhs_type = lhs.type();</div><div class="line"><a name="l05027"></a><span class="lineno"> 5027</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> rhs_type = rhs.type();</div><div class="line"><a name="l05028"></a><span class="lineno"> 5028</span>&#160;</div><div class="line"><a name="l05029"></a><span class="lineno"> 5029</span>&#160; <span class="keywordflow">if</span> (lhs_type == rhs_type)</div><div class="line"><a name="l05030"></a><span class="lineno"> 5030</span>&#160; {</div><div class="line"><a name="l05031"></a><span class="lineno"> 5031</span>&#160; <span class="keywordflow">switch</span> (lhs_type)</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="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l05034"></a><span class="lineno"> 5034</span>&#160; {</div><div class="line"><a name="l05035"></a><span class="lineno"> 5035</span>&#160; assert(lhs.m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05036"></a><span class="lineno"> 5036</span>&#160; assert(rhs.m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05037"></a><span class="lineno"> 5037</span>&#160; <span class="keywordflow">return</span> *lhs.m_value.array == *rhs.m_value.array;</div><div class="line"><a name="l05038"></a><span class="lineno"> 5038</span>&#160; }</div><div class="line"><a name="l05039"></a><span class="lineno"> 5039</span>&#160; <span class="keywordflow">case</span> value_t::object:</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; assert(lhs.m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05042"></a><span class="lineno"> 5042</span>&#160; assert(rhs.m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05043"></a><span class="lineno"> 5043</span>&#160; <span class="keywordflow">return</span> *lhs.m_value.object == *rhs.m_value.object;</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="keywordflow">case</span> value_t::null:</div><div class="line"><a name="l05046"></a><span class="lineno"> 5046</span>&#160; {</div><div class="line"><a name="l05047"></a><span class="lineno"> 5047</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l05050"></a><span class="lineno"> 5050</span>&#160; {</div><div class="line"><a name="l05051"></a><span class="lineno"> 5051</span>&#160; assert(lhs.m_value.string != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05052"></a><span class="lineno"> 5052</span>&#160; assert(rhs.m_value.string != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05053"></a><span class="lineno"> 5053</span>&#160; <span class="keywordflow">return</span> *lhs.m_value.string == *rhs.m_value.string;</div><div class="line"><a name="l05054"></a><span class="lineno"> 5054</span>&#160; }</div><div class="line"><a name="l05055"></a><span class="lineno"> 5055</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</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="keywordflow">return</span> lhs.m_value.boolean == rhs.m_value.boolean;</div><div class="line"><a name="l05058"></a><span class="lineno"> 5058</span>&#160; }</div><div class="line"><a name="l05059"></a><span class="lineno"> 5059</span>&#160; <span class="keywordflow">case</span> value_t::number_integer:</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="keywordflow">return</span> lhs.m_value.number_integer == rhs.m_value.number_integer;</div><div class="line"><a name="l05062"></a><span class="lineno"> 5062</span>&#160; }</div><div class="line"><a name="l05063"></a><span class="lineno"> 5063</span>&#160; <span class="keywordflow">case</span> value_t::number_unsigned:</div><div class="line"><a name="l05064"></a><span class="lineno"> 5064</span>&#160; {</div><div class="line"><a name="l05065"></a><span class="lineno"> 5065</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_unsigned == rhs.m_value.number_unsigned;</div><div class="line"><a name="l05066"></a><span class="lineno"> 5066</span>&#160; }</div><div class="line"><a name="l05067"></a><span class="lineno"> 5067</span>&#160; <span class="keywordflow">case</span> value_t::number_float:</div><div class="line"><a name="l05068"></a><span class="lineno"> 5068</span>&#160; {</div><div class="line"><a name="l05069"></a><span class="lineno"> 5069</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_float == rhs.m_value.number_float;</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="keywordflow">default</span>:</div><div class="line"><a name="l05072"></a><span class="lineno"> 5072</span>&#160; {</div><div class="line"><a name="l05073"></a><span class="lineno"> 5073</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05074"></a><span class="lineno"> 5074</span>&#160; }</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; }</div><div class="line"><a name="l05077"></a><span class="lineno"> 5077</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)</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="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">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="l05080"></a><span class="lineno"> 5080</span>&#160; }</div><div class="line"><a name="l05081"></a><span class="lineno"> 5081</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)</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="keywordflow">return</span> lhs.m_value.number_float == <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_integer);</div><div class="line"><a name="l05084"></a><span class="lineno"> 5084</span>&#160; }</div><div class="line"><a name="l05085"></a><span class="lineno"> 5085</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)</div><div class="line"><a name="l05086"></a><span class="lineno"> 5086</span>&#160; {</div><div class="line"><a name="l05087"></a><span class="lineno"> 5087</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">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="l05088"></a><span class="lineno"> 5088</span>&#160; }</div><div class="line"><a name="l05089"></a><span class="lineno"> 5089</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)</div><div class="line"><a name="l05090"></a><span class="lineno"> 5090</span>&#160; {</div><div class="line"><a name="l05091"></a><span class="lineno"> 5091</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_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_unsigned);</div><div class="line"><a name="l05092"></a><span class="lineno"> 5092</span>&#160; }</div><div class="line"><a name="l05093"></a><span class="lineno"> 5093</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)</div><div class="line"><a name="l05094"></a><span class="lineno"> 5094</span>&#160; {</div><div class="line"><a name="l05095"></a><span class="lineno"> 5095</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">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="l05096"></a><span class="lineno"> 5096</span>&#160; }</div><div class="line"><a name="l05097"></a><span class="lineno"> 5097</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)</div><div class="line"><a name="l05098"></a><span class="lineno"> 5098</span>&#160; {</div><div class="line"><a name="l05099"></a><span class="lineno"> 5099</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_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_unsigned);</div><div class="line"><a name="l05100"></a><span class="lineno"> 5100</span>&#160; }</div><div class="line"><a name="l05101"></a><span class="lineno"> 5101</span>&#160;</div><div class="line"><a name="l05102"></a><span class="lineno"> 5102</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05103"></a><span class="lineno"> 5103</span>&#160; }</div><div class="line"><a name="l05104"></a><span class="lineno"> 5104</span>&#160;</div><div class="line"><a name="l05123"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html#a9730b9f7bc2150e641fe20198d4477c7"> 5123</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html#a9730b9f7bc2150e641fe20198d4477c7">operator==</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> v, std::nullptr_t) noexcept</div><div class="line"><a name="l05124"></a><span class="lineno"> 5124</span>&#160; {</div><div class="line"><a name="l05125"></a><span class="lineno"> 5125</span>&#160; <span class="keywordflow">return</span> v.<a class="code" href="classnlohmann_1_1basic__json_a5ffdd3a9d2e02ebcbad13cb90af57523.html#a5ffdd3a9d2e02ebcbad13cb90af57523">is_null</a>();</div><div class="line"><a name="l05126"></a><span class="lineno"> 5126</span>&#160; }</div><div class="line"><a name="l05127"></a><span class="lineno"> 5127</span>&#160;</div><div class="line"><a name="l05132"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html#a98e05a2c9b8f74bd60442772cddeee52"> 5132</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html#a98e05a2c9b8f74bd60442772cddeee52">operator==</a>(std::nullptr_t, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> v) noexcept</div><div class="line"><a name="l05133"></a><span class="lineno"> 5133</span>&#160; {</div><div class="line"><a name="l05134"></a><span class="lineno"> 5134</span>&#160; <span class="keywordflow">return</span> v.is_null();</div><div class="line"><a name="l05135"></a><span class="lineno"> 5135</span>&#160; }</div><div class="line"><a name="l05136"></a><span class="lineno"> 5136</span>&#160;</div><div class="line"><a name="l05153"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.html#a6e2e21da48f5d9471716cd868a068327"> 5153</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.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="l05154"></a><span class="lineno"> 5154</span>&#160; {</div><div class="line"><a name="l05155"></a><span class="lineno"> 5155</span>&#160; <span class="keywordflow">return</span> not (lhs == rhs);</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;</div><div class="line"><a name="l05176"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ae347859ec88176ef76a0cbe5b4514fcf.html#ae347859ec88176ef76a0cbe5b4514fcf"> 5176</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_ae347859ec88176ef76a0cbe5b4514fcf.html#ae347859ec88176ef76a0cbe5b4514fcf">operator!=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> v, std::nullptr_t) noexcept</div><div class="line"><a name="l05177"></a><span class="lineno"> 5177</span>&#160; {</div><div class="line"><a name="l05178"></a><span class="lineno"> 5178</span>&#160; <span class="keywordflow">return</span> not v.<a class="code" href="classnlohmann_1_1basic__json_a5ffdd3a9d2e02ebcbad13cb90af57523.html#a5ffdd3a9d2e02ebcbad13cb90af57523">is_null</a>();</div><div class="line"><a name="l05179"></a><span class="lineno"> 5179</span>&#160; }</div><div class="line"><a name="l05180"></a><span class="lineno"> 5180</span>&#160;</div><div class="line"><a name="l05185"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html#a7f97a91ad8f1d5cf0b9213bd24f247c4"> 5185</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html#a7f97a91ad8f1d5cf0b9213bd24f247c4">operator!=</a>(std::nullptr_t, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> v) noexcept</div><div class="line"><a name="l05186"></a><span class="lineno"> 5186</span>&#160; {</div><div class="line"><a name="l05187"></a><span class="lineno"> 5187</span>&#160; <span class="keywordflow">return</span> not v.is_null();</div><div class="line"><a name="l05188"></a><span class="lineno"> 5188</span>&#160; }</div><div class="line"><a name="l05189"></a><span class="lineno"> 5189</span>&#160;</div><div class="line"><a name="l05214"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aacd442b66140c764c594ac8ad7dfd5b3.html#aacd442b66140c764c594ac8ad7dfd5b3"> 5214</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_aacd442b66140c764c594ac8ad7dfd5b3.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="l05215"></a><span class="lineno"> 5215</span>&#160; {</div><div class="line"><a name="l05216"></a><span class="lineno"> 5216</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> lhs_type = lhs.type();</div><div class="line"><a name="l05217"></a><span class="lineno"> 5217</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> rhs_type = rhs.type();</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">if</span> (lhs_type == rhs_type)</div><div class="line"><a name="l05220"></a><span class="lineno"> 5220</span>&#160; {</div><div class="line"><a name="l05221"></a><span class="lineno"> 5221</span>&#160; <span class="keywordflow">switch</span> (lhs_type)</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> value_t::array:</div><div class="line"><a name="l05224"></a><span class="lineno"> 5224</span>&#160; {</div><div class="line"><a name="l05225"></a><span class="lineno"> 5225</span>&#160; assert(lhs.m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05226"></a><span class="lineno"> 5226</span>&#160; assert(rhs.m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05227"></a><span class="lineno"> 5227</span>&#160; <span class="keywordflow">return</span> *lhs.m_value.array &lt; *rhs.m_value.array;</div><div class="line"><a name="l05228"></a><span class="lineno"> 5228</span>&#160; }</div><div class="line"><a name="l05229"></a><span class="lineno"> 5229</span>&#160; <span class="keywordflow">case</span> value_t::object:</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; assert(lhs.m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05232"></a><span class="lineno"> 5232</span>&#160; assert(rhs.m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05233"></a><span class="lineno"> 5233</span>&#160; <span class="keywordflow">return</span> *lhs.m_value.object &lt; *rhs.m_value.object;</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">case</span> value_t::null:</div><div class="line"><a name="l05236"></a><span class="lineno"> 5236</span>&#160; {</div><div class="line"><a name="l05237"></a><span class="lineno"> 5237</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l05240"></a><span class="lineno"> 5240</span>&#160; {</div><div class="line"><a name="l05241"></a><span class="lineno"> 5241</span>&#160; assert(lhs.m_value.string != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05242"></a><span class="lineno"> 5242</span>&#160; assert(rhs.m_value.string != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05243"></a><span class="lineno"> 5243</span>&#160; <span class="keywordflow">return</span> *lhs.m_value.string &lt; *rhs.m_value.string;</div><div class="line"><a name="l05244"></a><span class="lineno"> 5244</span>&#160; }</div><div class="line"><a name="l05245"></a><span class="lineno"> 5245</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</div><div class="line"><a name="l05246"></a><span class="lineno"> 5246</span>&#160; {</div><div class="line"><a name="l05247"></a><span class="lineno"> 5247</span>&#160; <span class="keywordflow">return</span> lhs.m_value.boolean &lt; rhs.m_value.boolean;</div><div class="line"><a name="l05248"></a><span class="lineno"> 5248</span>&#160; }</div><div class="line"><a name="l05249"></a><span class="lineno"> 5249</span>&#160; <span class="keywordflow">case</span> value_t::number_integer:</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">return</span> lhs.m_value.number_integer &lt; rhs.m_value.number_integer;</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">case</span> value_t::number_unsigned:</div><div class="line"><a name="l05254"></a><span class="lineno"> 5254</span>&#160; {</div><div class="line"><a name="l05255"></a><span class="lineno"> 5255</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_unsigned &lt; rhs.m_value.number_unsigned;</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; <span class="keywordflow">case</span> value_t::number_float:</div><div class="line"><a name="l05258"></a><span class="lineno"> 5258</span>&#160; {</div><div class="line"><a name="l05259"></a><span class="lineno"> 5259</span>&#160; <span class="keywordflow">return</span> lhs.m_value.number_float &lt; rhs.m_value.number_float;</div><div class="line"><a name="l05260"></a><span class="lineno"> 5260</span>&#160; }</div><div class="line"><a name="l05261"></a><span class="lineno"> 5261</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l05262"></a><span class="lineno"> 5262</span>&#160; {</div><div class="line"><a name="l05263"></a><span class="lineno"> 5263</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l05264"></a><span class="lineno"> 5264</span>&#160; }</div><div class="line"><a name="l05265"></a><span class="lineno"> 5265</span>&#160; }</div><div class="line"><a name="l05266"></a><span class="lineno"> 5266</span>&#160; }</div><div class="line"><a name="l05267"></a><span class="lineno"> 5267</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)</div><div class="line"><a name="l05268"></a><span class="lineno"> 5268</span>&#160; {</div><div class="line"><a name="l05269"></a><span class="lineno"> 5269</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">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="l05270"></a><span class="lineno"> 5270</span>&#160; }</div><div class="line"><a name="l05271"></a><span class="lineno"> 5271</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)</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="keywordflow">return</span> lhs.m_value.number_float &lt; <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_integer);</div><div class="line"><a name="l05274"></a><span class="lineno"> 5274</span>&#160; }</div><div class="line"><a name="l05275"></a><span class="lineno"> 5275</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)</div><div class="line"><a name="l05276"></a><span class="lineno"> 5276</span>&#160; {</div><div class="line"><a name="l05277"></a><span class="lineno"> 5277</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">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="l05278"></a><span class="lineno"> 5278</span>&#160; }</div><div class="line"><a name="l05279"></a><span class="lineno"> 5279</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)</div><div class="line"><a name="l05280"></a><span class="lineno"> 5280</span>&#160; {</div><div class="line"><a name="l05281"></a><span class="lineno"> 5281</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_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">number_float_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_unsigned);</div><div class="line"><a name="l05282"></a><span class="lineno"> 5282</span>&#160; }</div><div class="line"><a name="l05283"></a><span class="lineno"> 5283</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)</div><div class="line"><a name="l05284"></a><span class="lineno"> 5284</span>&#160; {</div><div class="line"><a name="l05285"></a><span class="lineno"> 5285</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_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">number_integer_t</a><span class="keyword">&gt;</span>(rhs.m_value.number_unsigned);</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">else</span> <span class="keywordflow">if</span> (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)</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">static_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">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="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="comment">// We only reach this line if we cannot compare values. In that case,</span></div><div class="line"><a name="l05293"></a><span class="lineno"> 5293</span>&#160; <span class="comment">// we compare types. Note we have to call the operator explicitly,</span></div><div class="line"><a name="l05294"></a><span class="lineno"> 5294</span>&#160; <span class="comment">// because MSVC has problems otherwise.</span></div><div class="line"><a name="l05295"></a><span class="lineno"> 5295</span>&#160; <span class="keywordflow">return</span> operator&lt;(lhs_type, rhs_type);</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;</div><div class="line"><a name="l05315"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a5c8bb5200f5eac10d31e26be46e5b1ac.html#a5c8bb5200f5eac10d31e26be46e5b1ac"> 5315</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a5c8bb5200f5eac10d31e26be46e5b1ac.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="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">return</span> not (rhs &lt; lhs);</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;</div><div class="line"><a name="l05337"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a87db51b6b936fb2ea293cdbc8702dcb8.html#a87db51b6b936fb2ea293cdbc8702dcb8"> 5337</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a87db51b6b936fb2ea293cdbc8702dcb8.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="l05338"></a><span class="lineno"> 5338</span>&#160; {</div><div class="line"><a name="l05339"></a><span class="lineno"> 5339</span>&#160; <span class="keywordflow">return</span> not (lhs &lt;= rhs);</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;</div><div class="line"><a name="l05359"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.html#a74a943800c7f103d0990d7eef82c6453"> 5359</a></span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.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="l05360"></a><span class="lineno"> 5360</span>&#160; {</div><div class="line"><a name="l05361"></a><span class="lineno"> 5361</span>&#160; <span class="keywordflow">return</span> not (lhs &lt; rhs);</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;</div><div class="line"><a name="l05365"></a><span class="lineno"> 5365</span>&#160;</div><div class="line"><a name="l05366"></a><span class="lineno"> 5366</span>&#160;</div><div class="line"><a name="l05368"></a><span class="lineno"> 5368</span>&#160; <span class="comment">// serialization //</span></div><div class="line"><a name="l05370"></a><span class="lineno"> 5370</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05373"></a><span class="lineno"> 5373</span>&#160;</div><div class="line"><a name="l05396"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"> 5396</a></span>&#160; <span class="keyword">friend</span> std::ostream&amp; <a class="code" href="classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405">operator&lt;&lt;</a>(std::ostream&amp; o, <span class="keyword">const</span> basic_json&amp; j)</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="comment">// read width member and use it as indentation parameter if nonzero</span></div><div class="line"><a name="l05399"></a><span class="lineno"> 5399</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> pretty_print = (o.width() &gt; 0);</div><div class="line"><a name="l05400"></a><span class="lineno"> 5400</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> indentation = (pretty_print ? o.width() : 0);</div><div class="line"><a name="l05401"></a><span class="lineno"> 5401</span>&#160;</div><div class="line"><a name="l05402"></a><span class="lineno"> 5402</span>&#160; <span class="comment">// reset width to 0 for subsequent calls to this stream</span></div><div class="line"><a name="l05403"></a><span class="lineno"> 5403</span>&#160; o.width(0);</div><div class="line"><a name="l05404"></a><span class="lineno"> 5404</span>&#160;</div><div class="line"><a name="l05405"></a><span class="lineno"> 5405</span>&#160; <span class="comment">// do the actual serialization</span></div><div class="line"><a name="l05406"></a><span class="lineno"> 5406</span>&#160; j.<a class="code" href="classnlohmann_1_1basic__json_a805e3f3a2f374da0e14942eec7400e40.html#a805e3f3a2f374da0e14942eec7400e40">dump</a>(o, pretty_print, static_cast&lt;unsigned int&gt;(indentation));</div><div class="line"><a name="l05407"></a><span class="lineno"> 5407</span>&#160; <span class="keywordflow">return</span> o;</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="l05414"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b"> 5414</a></span>&#160; <span class="keyword">friend</span> std::ostream&amp; <a class="code" href="classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b">operator&gt;&gt;</a>(<span class="keyword">const</span> basic_json&amp; j, std::ostream&amp; o)</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; <span class="keywordflow">return</span> o &lt;&lt; j;</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="l05420"></a><span class="lineno"> 5420</span>&#160;</div><div class="line"><a name="l05421"></a><span class="lineno"> 5421</span>&#160;</div><div class="line"><a name="l05423"></a><span class="lineno"> 5423</span>&#160; <span class="comment">// deserialization //</span></div><div class="line"><a name="l05425"></a><span class="lineno"> 5425</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05428"></a><span class="lineno"> 5428</span>&#160;</div><div class="line"><a name="l05453"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a35303ad045a06c2a79dc28ac29652e86.html#a35303ad045a06c2a79dc28ac29652e86"> 5453</a></span>&#160; <span class="keyword">static</span> basic_json <a class="code" href="classnlohmann_1_1basic__json_a35303ad045a06c2a79dc28ac29652e86.html#a35303ad045a06c2a79dc28ac29652e86">parse</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>&amp; s, <a class="code" href="classnlohmann_1_1basic__json_a9e35475e2027520a78e09f460dbe048a.html#a9e35475e2027520a78e09f460dbe048a">parser_callback_t</a> cb = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l05454"></a><span class="lineno"> 5454</span>&#160; {</div><div class="line"><a name="l05455"></a><span class="lineno"> 5455</span>&#160; <span class="keywordflow">return</span> parser(s, cb).<a class="code" href="classnlohmann_1_1basic__json_a35303ad045a06c2a79dc28ac29652e86.html#a35303ad045a06c2a79dc28ac29652e86">parse</a>();</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;</div><div class="line"><a name="l05482"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a13c4d2ab4e7ee2f92be785a7b12948ff.html#a13c4d2ab4e7ee2f92be785a7b12948ff"> 5482</a></span>&#160; <span class="keyword">static</span> basic_json <a class="code" href="classnlohmann_1_1basic__json_a13c4d2ab4e7ee2f92be785a7b12948ff.html#a13c4d2ab4e7ee2f92be785a7b12948ff">parse</a>(std::istream&amp; i, <a class="code" href="classnlohmann_1_1basic__json_a9e35475e2027520a78e09f460dbe048a.html#a9e35475e2027520a78e09f460dbe048a">parser_callback_t</a> cb = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l05483"></a><span class="lineno"> 5483</span>&#160; {</div><div class="line"><a name="l05484"></a><span class="lineno"> 5484</span>&#160; <span class="keywordflow">return</span> parser(i, cb).<a class="code" href="classnlohmann_1_1basic__json_a35303ad045a06c2a79dc28ac29652e86.html#a35303ad045a06c2a79dc28ac29652e86">parse</a>();</div><div class="line"><a name="l05485"></a><span class="lineno"> 5485</span>&#160; }</div><div class="line"><a name="l05486"></a><span class="lineno"> 5486</span>&#160;</div><div class="line"><a name="l05490"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_ab81f2801779e6cb9d98770860af2e39a.html#ab81f2801779e6cb9d98770860af2e39a"> 5490</a></span>&#160; <span class="keyword">static</span> basic_json <a class="code" href="classnlohmann_1_1basic__json_ab81f2801779e6cb9d98770860af2e39a.html#ab81f2801779e6cb9d98770860af2e39a">parse</a>(std::istream&amp;&amp; i, <a class="code" href="classnlohmann_1_1basic__json_a9e35475e2027520a78e09f460dbe048a.html#a9e35475e2027520a78e09f460dbe048a">parser_callback_t</a> cb = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l05491"></a><span class="lineno"> 5491</span>&#160; {</div><div class="line"><a name="l05492"></a><span class="lineno"> 5492</span>&#160; <span class="keywordflow">return</span> parser(i, cb).<a class="code" href="classnlohmann_1_1basic__json_a35303ad045a06c2a79dc28ac29652e86.html#a35303ad045a06c2a79dc28ac29652e86">parse</a>();</div><div class="line"><a name="l05493"></a><span class="lineno"> 5493</span>&#160; }</div><div class="line"><a name="l05494"></a><span class="lineno"> 5494</span>&#160;</div><div class="line"><a name="l05518"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6"> 5518</a></span>&#160; <span class="keyword">friend</span> std::istream&amp; <a class="code" href="classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6">operator&lt;&lt;</a>(basic_json&amp; j, std::istream&amp; i)</div><div class="line"><a name="l05519"></a><span class="lineno"> 5519</span>&#160; {</div><div class="line"><a name="l05520"></a><span class="lineno"> 5520</span>&#160; j = parser(i).<a class="code" href="classnlohmann_1_1basic__json_a35303ad045a06c2a79dc28ac29652e86.html#a35303ad045a06c2a79dc28ac29652e86">parse</a>();</div><div class="line"><a name="l05521"></a><span class="lineno"> 5521</span>&#160; <span class="keywordflow">return</span> i;</div><div class="line"><a name="l05522"></a><span class="lineno"> 5522</span>&#160; }</div><div class="line"><a name="l05523"></a><span class="lineno"> 5523</span>&#160;</div><div class="line"><a name="l05528"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"> 5528</a></span>&#160; <span class="keyword">friend</span> std::istream&amp; <a class="code" href="classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8">operator&gt;&gt;</a>(std::istream&amp; i, basic_json&amp; j)</div><div class="line"><a name="l05529"></a><span class="lineno"> 5529</span>&#160; {</div><div class="line"><a name="l05530"></a><span class="lineno"> 5530</span>&#160; j = parser(i).<a class="code" href="classnlohmann_1_1basic__json_a35303ad045a06c2a79dc28ac29652e86.html#a35303ad045a06c2a79dc28ac29652e86">parse</a>();</div><div class="line"><a name="l05531"></a><span class="lineno"> 5531</span>&#160; <span class="keywordflow">return</span> i;</div><div class="line"><a name="l05532"></a><span class="lineno"> 5532</span>&#160; }</div><div class="line"><a name="l05533"></a><span class="lineno"> 5533</span>&#160;</div><div class="line"><a name="l05535"></a><span class="lineno"> 5535</span>&#160;</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; <span class="keyword">private</span>:</div><div class="line"><a name="l05539"></a><span class="lineno"> 5539</span>&#160; <span class="comment">// convenience functions //</span></div><div class="line"><a name="l05541"></a><span class="lineno"> 5541</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05543"></a><span class="lineno"> 5543</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> type_name()<span class="keyword"> const</span></div><div class="line"><a name="l05544"></a><span class="lineno"> 5544</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l05545"></a><span class="lineno"> 5545</span>&#160; <span class="keywordflow">switch</span> (m_type)</div><div class="line"><a name="l05546"></a><span class="lineno"> 5546</span>&#160; {</div><div class="line"><a name="l05547"></a><span class="lineno"> 5547</span>&#160; <span class="keywordflow">case</span> value_t::null:</div><div class="line"><a name="l05548"></a><span class="lineno"> 5548</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;null&quot;</span>;</div><div class="line"><a name="l05549"></a><span class="lineno"> 5549</span>&#160; <span class="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l05550"></a><span class="lineno"> 5550</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;object&quot;</span>;</div><div class="line"><a name="l05551"></a><span class="lineno"> 5551</span>&#160; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l05552"></a><span class="lineno"> 5552</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;array&quot;</span>;</div><div class="line"><a name="l05553"></a><span class="lineno"> 5553</span>&#160; <span class="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l05554"></a><span class="lineno"> 5554</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;string&quot;</span>;</div><div class="line"><a name="l05555"></a><span class="lineno"> 5555</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</div><div class="line"><a name="l05556"></a><span class="lineno"> 5556</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;boolean&quot;</span>;</div><div class="line"><a name="l05557"></a><span class="lineno"> 5557</span>&#160; <span class="keywordflow">case</span> value_t::discarded:</div><div class="line"><a name="l05558"></a><span class="lineno"> 5558</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;discarded&quot;</span>;</div><div class="line"><a name="l05559"></a><span class="lineno"> 5559</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l05560"></a><span class="lineno"> 5560</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;number&quot;</span>;</div><div class="line"><a name="l05561"></a><span class="lineno"> 5561</span>&#160; }</div><div class="line"><a name="l05562"></a><span class="lineno"> 5562</span>&#160; }</div><div class="line"><a name="l05563"></a><span class="lineno"> 5563</span>&#160;</div><div class="line"><a name="l05572"></a><span class="lineno"> 5572</span>&#160; <span class="keyword">static</span> std::size_t extra_space(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>&amp; s) noexcept</div><div class="line"><a name="l05573"></a><span class="lineno"> 5573</span>&#160; {</div><div class="line"><a name="l05574"></a><span class="lineno"> 5574</span>&#160; std::size_t result = 0;</div><div class="line"><a name="l05575"></a><span class="lineno"> 5575</span>&#160;</div><div class="line"><a name="l05576"></a><span class="lineno"> 5576</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; c : s)</div><div class="line"><a name="l05577"></a><span class="lineno"> 5577</span>&#160; {</div><div class="line"><a name="l05578"></a><span class="lineno"> 5578</span>&#160; <span class="keywordflow">switch</span> (c)</div><div class="line"><a name="l05579"></a><span class="lineno"> 5579</span>&#160; {</div><div class="line"><a name="l05580"></a><span class="lineno"> 5580</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&quot;&#39;</span>:</div><div class="line"><a name="l05581"></a><span class="lineno"> 5581</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>:</div><div class="line"><a name="l05582"></a><span class="lineno"> 5582</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\b&#39;</span>:</div><div class="line"><a name="l05583"></a><span class="lineno"> 5583</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\f&#39;</span>:</div><div class="line"><a name="l05584"></a><span class="lineno"> 5584</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\n&#39;</span>:</div><div class="line"><a name="l05585"></a><span class="lineno"> 5585</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\r&#39;</span>:</div><div class="line"><a name="l05586"></a><span class="lineno"> 5586</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\t&#39;</span>:</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; <span class="comment">// from c (1 byte) to \x (2 bytes)</span></div><div class="line"><a name="l05589"></a><span class="lineno"> 5589</span>&#160; result += 1;</div><div class="line"><a name="l05590"></a><span class="lineno"> 5590</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l05591"></a><span class="lineno"> 5591</span>&#160; }</div><div class="line"><a name="l05592"></a><span class="lineno"> 5592</span>&#160;</div><div class="line"><a name="l05593"></a><span class="lineno"> 5593</span>&#160; <span class="keywordflow">default</span>:</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">if</span> (c &gt;= 0x00 and c &lt;= 0x1f)</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; <span class="comment">// from c (1 byte) to \uxxxx (6 bytes)</span></div><div class="line"><a name="l05598"></a><span class="lineno"> 5598</span>&#160; result += 5;</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; <span class="keywordflow">break</span>;</div><div class="line"><a name="l05601"></a><span class="lineno"> 5601</span>&#160; }</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; }</div><div class="line"><a name="l05604"></a><span class="lineno"> 5604</span>&#160;</div><div class="line"><a name="l05605"></a><span class="lineno"> 5605</span>&#160; <span class="keywordflow">return</span> result;</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="l05621"></a><span class="lineno"> 5621</span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> escape_string(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>&amp; s) noexcept</div><div class="line"><a name="l05622"></a><span class="lineno"> 5622</span>&#160; {</div><div class="line"><a name="l05623"></a><span class="lineno"> 5623</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> space = extra_space(s);</div><div class="line"><a name="l05624"></a><span class="lineno"> 5624</span>&#160; <span class="keywordflow">if</span> (space == 0)</div><div class="line"><a name="l05625"></a><span class="lineno"> 5625</span>&#160; {</div><div class="line"><a name="l05626"></a><span class="lineno"> 5626</span>&#160; <span class="keywordflow">return</span> s;</div><div class="line"><a name="l05627"></a><span class="lineno"> 5627</span>&#160; }</div><div class="line"><a name="l05628"></a><span class="lineno"> 5628</span>&#160;</div><div class="line"><a name="l05629"></a><span class="lineno"> 5629</span>&#160; <span class="comment">// create a result string of necessary size</span></div><div class="line"><a name="l05630"></a><span class="lineno"> 5630</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> result(s.size() + space, <span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l05631"></a><span class="lineno"> 5631</span>&#160; std::size_t pos = 0;</div><div class="line"><a name="l05632"></a><span class="lineno"> 5632</span>&#160;</div><div class="line"><a name="l05633"></a><span class="lineno"> 5633</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; c : s)</div><div class="line"><a name="l05634"></a><span class="lineno"> 5634</span>&#160; {</div><div class="line"><a name="l05635"></a><span class="lineno"> 5635</span>&#160; <span class="keywordflow">switch</span> (c)</div><div class="line"><a name="l05636"></a><span class="lineno"> 5636</span>&#160; {</div><div class="line"><a name="l05637"></a><span class="lineno"> 5637</span>&#160; <span class="comment">// quotation mark (0x22)</span></div><div class="line"><a name="l05638"></a><span class="lineno"> 5638</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&quot;&#39;</span>:</div><div class="line"><a name="l05639"></a><span class="lineno"> 5639</span>&#160; {</div><div class="line"><a name="l05640"></a><span class="lineno"> 5640</span>&#160; result[pos + 1] = <span class="charliteral">&#39;&quot;&#39;</span>;</div><div class="line"><a name="l05641"></a><span class="lineno"> 5641</span>&#160; pos += 2;</div><div class="line"><a name="l05642"></a><span class="lineno"> 5642</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l05643"></a><span class="lineno"> 5643</span>&#160; }</div><div class="line"><a name="l05644"></a><span class="lineno"> 5644</span>&#160;</div><div class="line"><a name="l05645"></a><span class="lineno"> 5645</span>&#160; <span class="comment">// reverse solidus (0x5c)</span></div><div class="line"><a name="l05646"></a><span class="lineno"> 5646</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>:</div><div class="line"><a name="l05647"></a><span class="lineno"> 5647</span>&#160; {</div><div class="line"><a name="l05648"></a><span class="lineno"> 5648</span>&#160; <span class="comment">// nothing to change</span></div><div class="line"><a name="l05649"></a><span class="lineno"> 5649</span>&#160; pos += 2;</div><div class="line"><a name="l05650"></a><span class="lineno"> 5650</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l05651"></a><span class="lineno"> 5651</span>&#160; }</div><div class="line"><a name="l05652"></a><span class="lineno"> 5652</span>&#160;</div><div class="line"><a name="l05653"></a><span class="lineno"> 5653</span>&#160; <span class="comment">// backspace (0x08)</span></div><div class="line"><a name="l05654"></a><span class="lineno"> 5654</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\b&#39;</span>:</div><div class="line"><a name="l05655"></a><span class="lineno"> 5655</span>&#160; {</div><div class="line"><a name="l05656"></a><span class="lineno"> 5656</span>&#160; result[pos + 1] = <span class="charliteral">&#39;b&#39;</span>;</div><div class="line"><a name="l05657"></a><span class="lineno"> 5657</span>&#160; pos += 2;</div><div class="line"><a name="l05658"></a><span class="lineno"> 5658</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l05659"></a><span class="lineno"> 5659</span>&#160; }</div><div class="line"><a name="l05660"></a><span class="lineno"> 5660</span>&#160;</div><div class="line"><a name="l05661"></a><span class="lineno"> 5661</span>&#160; <span class="comment">// formfeed (0x0c)</span></div><div class="line"><a name="l05662"></a><span class="lineno"> 5662</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\f&#39;</span>:</div><div class="line"><a name="l05663"></a><span class="lineno"> 5663</span>&#160; {</div><div class="line"><a name="l05664"></a><span class="lineno"> 5664</span>&#160; result[pos + 1] = <span class="charliteral">&#39;f&#39;</span>;</div><div class="line"><a name="l05665"></a><span class="lineno"> 5665</span>&#160; pos += 2;</div><div class="line"><a name="l05666"></a><span class="lineno"> 5666</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l05667"></a><span class="lineno"> 5667</span>&#160; }</div><div class="line"><a name="l05668"></a><span class="lineno"> 5668</span>&#160;</div><div class="line"><a name="l05669"></a><span class="lineno"> 5669</span>&#160; <span class="comment">// newline (0x0a)</span></div><div class="line"><a name="l05670"></a><span class="lineno"> 5670</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\n&#39;</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; result[pos + 1] = <span class="charliteral">&#39;n&#39;</span>;</div><div class="line"><a name="l05673"></a><span class="lineno"> 5673</span>&#160; pos += 2;</div><div class="line"><a name="l05674"></a><span class="lineno"> 5674</span>&#160; <span class="keywordflow">break</span>;</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;</div><div class="line"><a name="l05677"></a><span class="lineno"> 5677</span>&#160; <span class="comment">// carriage return (0x0d)</span></div><div class="line"><a name="l05678"></a><span class="lineno"> 5678</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\r&#39;</span>:</div><div class="line"><a name="l05679"></a><span class="lineno"> 5679</span>&#160; {</div><div class="line"><a name="l05680"></a><span class="lineno"> 5680</span>&#160; result[pos + 1] = <span class="charliteral">&#39;r&#39;</span>;</div><div class="line"><a name="l05681"></a><span class="lineno"> 5681</span>&#160; pos += 2;</div><div class="line"><a name="l05682"></a><span class="lineno"> 5682</span>&#160; <span class="keywordflow">break</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;</div><div class="line"><a name="l05685"></a><span class="lineno"> 5685</span>&#160; <span class="comment">// horizontal tab (0x09)</span></div><div class="line"><a name="l05686"></a><span class="lineno"> 5686</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\t&#39;</span>:</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; result[pos + 1] = <span class="charliteral">&#39;t&#39;</span>;</div><div class="line"><a name="l05689"></a><span class="lineno"> 5689</span>&#160; pos += 2;</div><div class="line"><a name="l05690"></a><span class="lineno"> 5690</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l05691"></a><span class="lineno"> 5691</span>&#160; }</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; <span class="keywordflow">default</span>:</div><div class="line"><a name="l05694"></a><span class="lineno"> 5694</span>&#160; {</div><div class="line"><a name="l05695"></a><span class="lineno"> 5695</span>&#160; <span class="keywordflow">if</span> (c &gt;= 0x00 and c &lt;= 0x1f)</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">// convert a number 0..15 to its hex representation (0..f)</span></div><div class="line"><a name="l05698"></a><span class="lineno"> 5698</span>&#160; <span class="keyword">auto</span> hexify = [](<span class="keyword">const</span> <span class="keywordtype">char</span> v) -&gt; <span class="keywordtype">char</span></div><div class="line"><a name="l05699"></a><span class="lineno"> 5699</span>&#160; {</div><div class="line"><a name="l05700"></a><span class="lineno"> 5700</span>&#160; <span class="keywordflow">return</span> (v &lt; 10) ? (<span class="charliteral">&#39;0&#39;</span> + v) : (<span class="charliteral">&#39;a&#39;</span> + v - 10);</div><div class="line"><a name="l05701"></a><span class="lineno"> 5701</span>&#160; };</div><div class="line"><a name="l05702"></a><span class="lineno"> 5702</span>&#160;</div><div class="line"><a name="l05703"></a><span class="lineno"> 5703</span>&#160; <span class="comment">// print character c as \uxxxx</span></div><div class="line"><a name="l05704"></a><span class="lineno"> 5704</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span> m :</div><div class="line"><a name="l05705"></a><span class="lineno"> 5705</span>&#160; { <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;0&#39;</span>, hexify(c &gt;&gt; 4), hexify(c &amp; 0x0f)</div><div class="line"><a name="l05706"></a><span class="lineno"> 5706</span>&#160; })</div><div class="line"><a name="l05707"></a><span class="lineno"> 5707</span>&#160; {</div><div class="line"><a name="l05708"></a><span class="lineno"> 5708</span>&#160; result[++pos] = m;</div><div class="line"><a name="l05709"></a><span class="lineno"> 5709</span>&#160; }</div><div class="line"><a name="l05710"></a><span class="lineno"> 5710</span>&#160;</div><div class="line"><a name="l05711"></a><span class="lineno"> 5711</span>&#160; ++pos;</div><div class="line"><a name="l05712"></a><span class="lineno"> 5712</span>&#160; }</div><div class="line"><a name="l05713"></a><span class="lineno"> 5713</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l05714"></a><span class="lineno"> 5714</span>&#160; {</div><div class="line"><a name="l05715"></a><span class="lineno"> 5715</span>&#160; <span class="comment">// all other characters are added as-is</span></div><div class="line"><a name="l05716"></a><span class="lineno"> 5716</span>&#160; result[pos++] = c;</div><div class="line"><a name="l05717"></a><span class="lineno"> 5717</span>&#160; }</div><div class="line"><a name="l05718"></a><span class="lineno"> 5718</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l05719"></a><span class="lineno"> 5719</span>&#160; }</div><div class="line"><a name="l05720"></a><span class="lineno"> 5720</span>&#160; }</div><div class="line"><a name="l05721"></a><span class="lineno"> 5721</span>&#160; }</div><div class="line"><a name="l05722"></a><span class="lineno"> 5722</span>&#160;</div><div class="line"><a name="l05723"></a><span class="lineno"> 5723</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l05724"></a><span class="lineno"> 5724</span>&#160; }</div><div class="line"><a name="l05725"></a><span class="lineno"> 5725</span>&#160;</div><div class="line"><a name="l05743"></a><span class="lineno"> 5743</span>&#160; <span class="keywordtype">void</span> dump(std::ostream&amp; o,</div><div class="line"><a name="l05744"></a><span class="lineno"> 5744</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> pretty_print,</div><div class="line"><a name="l05745"></a><span class="lineno"> 5745</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="l05746"></a><span class="lineno"> 5746</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_indent = 0)<span class="keyword"> const</span></div><div class="line"><a name="l05747"></a><span class="lineno"> 5747</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l05748"></a><span class="lineno"> 5748</span>&#160; <span class="comment">// variable to hold indentation for recursive calls</span></div><div class="line"><a name="l05749"></a><span class="lineno"> 5749</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_indent = current_indent;</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">switch</span> (m_type)</div><div class="line"><a name="l05752"></a><span class="lineno"> 5752</span>&#160; {</div><div class="line"><a name="l05753"></a><span class="lineno"> 5753</span>&#160; <span class="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l05754"></a><span class="lineno"> 5754</span>&#160; {</div><div class="line"><a name="l05755"></a><span class="lineno"> 5755</span>&#160; assert(m_value.object != <span class="keyword">nullptr</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">if</span> (m_value.object-&gt;empty())</div><div class="line"><a name="l05758"></a><span class="lineno"> 5758</span>&#160; {</div><div class="line"><a name="l05759"></a><span class="lineno"> 5759</span>&#160; o &lt;&lt; <span class="stringliteral">&quot;{}&quot;</span>;</div><div class="line"><a name="l05760"></a><span class="lineno"> 5760</span>&#160; <span class="keywordflow">return</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;</div><div class="line"><a name="l05763"></a><span class="lineno"> 5763</span>&#160; o &lt;&lt; <span class="stringliteral">&quot;{&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="comment">// increase indentation</span></div><div class="line"><a name="l05766"></a><span class="lineno"> 5766</span>&#160; <span class="keywordflow">if</span> (pretty_print)</div><div class="line"><a name="l05767"></a><span class="lineno"> 5767</span>&#160; {</div><div class="line"><a name="l05768"></a><span class="lineno"> 5768</span>&#160; new_indent += indent_step;</div><div class="line"><a name="l05769"></a><span class="lineno"> 5769</span>&#160; o &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l05770"></a><span class="lineno"> 5770</span>&#160; }</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; <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = m_value.object-&gt;cbegin(); i != m_value.object-&gt;cend(); ++i)</div><div class="line"><a name="l05773"></a><span class="lineno"> 5773</span>&#160; {</div><div class="line"><a name="l05774"></a><span class="lineno"> 5774</span>&#160; <span class="keywordflow">if</span> (i != m_value.object-&gt;cbegin())</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; o &lt;&lt; (pretty_print ? <span class="stringliteral">&quot;,\n&quot;</span> : <span class="stringliteral">&quot;,&quot;</span>);</div><div class="line"><a name="l05777"></a><span class="lineno"> 5777</span>&#160; }</div><div class="line"><a name="l05778"></a><span class="lineno"> 5778</span>&#160; o &lt;&lt; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>(new_indent, <span class="charliteral">&#39; &#39;</span>) &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span></div><div class="line"><a name="l05779"></a><span class="lineno"> 5779</span>&#160; &lt;&lt; escape_string(i-&gt;first) &lt;&lt; <span class="stringliteral">&quot;\&quot;:&quot;</span></div><div class="line"><a name="l05780"></a><span class="lineno"> 5780</span>&#160; &lt;&lt; (pretty_print ? <span class="stringliteral">&quot; &quot;</span> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l05781"></a><span class="lineno"> 5781</span>&#160; i-&gt;second.dump(o, pretty_print, indent_step, new_indent);</div><div class="line"><a name="l05782"></a><span class="lineno"> 5782</span>&#160; }</div><div class="line"><a name="l05783"></a><span class="lineno"> 5783</span>&#160;</div><div class="line"><a name="l05784"></a><span class="lineno"> 5784</span>&#160; <span class="comment">// decrease indentation</span></div><div class="line"><a name="l05785"></a><span class="lineno"> 5785</span>&#160; <span class="keywordflow">if</span> (pretty_print)</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; new_indent -= indent_step;</div><div class="line"><a name="l05788"></a><span class="lineno"> 5788</span>&#160; o &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l05789"></a><span class="lineno"> 5789</span>&#160; }</div><div class="line"><a name="l05790"></a><span class="lineno"> 5790</span>&#160;</div><div class="line"><a name="l05791"></a><span class="lineno"> 5791</span>&#160; o &lt;&lt; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>(new_indent, <span class="charliteral">&#39; &#39;</span>) + <span class="stringliteral">&quot;}&quot;</span>;</div><div class="line"><a name="l05792"></a><span class="lineno"> 5792</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l05793"></a><span class="lineno"> 5793</span>&#160; }</div><div class="line"><a name="l05794"></a><span class="lineno"> 5794</span>&#160;</div><div class="line"><a name="l05795"></a><span class="lineno"> 5795</span>&#160; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l05796"></a><span class="lineno"> 5796</span>&#160; {</div><div class="line"><a name="l05797"></a><span class="lineno"> 5797</span>&#160; assert(m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05798"></a><span class="lineno"> 5798</span>&#160;</div><div class="line"><a name="l05799"></a><span class="lineno"> 5799</span>&#160; <span class="keywordflow">if</span> (m_value.array-&gt;empty())</div><div class="line"><a name="l05800"></a><span class="lineno"> 5800</span>&#160; {</div><div class="line"><a name="l05801"></a><span class="lineno"> 5801</span>&#160; o &lt;&lt; <span class="stringliteral">&quot;[]&quot;</span>;</div><div class="line"><a name="l05802"></a><span class="lineno"> 5802</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l05803"></a><span class="lineno"> 5803</span>&#160; }</div><div class="line"><a name="l05804"></a><span class="lineno"> 5804</span>&#160;</div><div class="line"><a name="l05805"></a><span class="lineno"> 5805</span>&#160; o &lt;&lt; <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; <span class="comment">// increase indentation</span></div><div class="line"><a name="l05808"></a><span class="lineno"> 5808</span>&#160; <span class="keywordflow">if</span> (pretty_print)</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; new_indent += indent_step;</div><div class="line"><a name="l05811"></a><span class="lineno"> 5811</span>&#160; o &lt;&lt; <span class="stringliteral">&quot;\n&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">for</span> (<span class="keyword">auto</span> i = m_value.array-&gt;cbegin(); i != m_value.array-&gt;cend(); ++i)</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="keywordflow">if</span> (i != m_value.array-&gt;cbegin())</div><div class="line"><a name="l05817"></a><span class="lineno"> 5817</span>&#160; {</div><div class="line"><a name="l05818"></a><span class="lineno"> 5818</span>&#160; o &lt;&lt; (pretty_print ? <span class="stringliteral">&quot;,\n&quot;</span> : <span class="stringliteral">&quot;,&quot;</span>);</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; o &lt;&lt; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>(new_indent, <span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l05821"></a><span class="lineno"> 5821</span>&#160; i-&gt;dump(o, pretty_print, indent_step, new_indent);</div><div class="line"><a name="l05822"></a><span class="lineno"> 5822</span>&#160; }</div><div class="line"><a name="l05823"></a><span class="lineno"> 5823</span>&#160;</div><div class="line"><a name="l05824"></a><span class="lineno"> 5824</span>&#160; <span class="comment">// decrease indentation</span></div><div class="line"><a name="l05825"></a><span class="lineno"> 5825</span>&#160; <span class="keywordflow">if</span> (pretty_print)</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; new_indent -= indent_step;</div><div class="line"><a name="l05828"></a><span class="lineno"> 5828</span>&#160; o &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l05829"></a><span class="lineno"> 5829</span>&#160; }</div><div class="line"><a name="l05830"></a><span class="lineno"> 5830</span>&#160;</div><div class="line"><a name="l05831"></a><span class="lineno"> 5831</span>&#160; o &lt;&lt; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>(new_indent, <span class="charliteral">&#39; &#39;</span>) &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l05832"></a><span class="lineno"> 5832</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l05833"></a><span class="lineno"> 5833</span>&#160; }</div><div class="line"><a name="l05834"></a><span class="lineno"> 5834</span>&#160;</div><div class="line"><a name="l05835"></a><span class="lineno"> 5835</span>&#160; <span class="keywordflow">case</span> value_t::string:</div><div class="line"><a name="l05836"></a><span class="lineno"> 5836</span>&#160; {</div><div class="line"><a name="l05837"></a><span class="lineno"> 5837</span>&#160; assert(m_value.string != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l05838"></a><span class="lineno"> 5838</span>&#160; o &lt;&lt; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>(<span class="stringliteral">&quot;\&quot;&quot;</span>) &lt;&lt; escape_string(*m_value.string) &lt;&lt; <span class="stringliteral">&quot;\&quot;&quot;</span>;</div><div class="line"><a name="l05839"></a><span class="lineno"> 5839</span>&#160; <span class="keywordflow">return</span>;</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;</div><div class="line"><a name="l05842"></a><span class="lineno"> 5842</span>&#160; <span class="keywordflow">case</span> value_t::boolean:</div><div class="line"><a name="l05843"></a><span class="lineno"> 5843</span>&#160; {</div><div class="line"><a name="l05844"></a><span class="lineno"> 5844</span>&#160; o &lt;&lt; (m_value.boolean ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>);</div><div class="line"><a name="l05845"></a><span class="lineno"> 5845</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l05846"></a><span class="lineno"> 5846</span>&#160; }</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="keywordflow">case</span> value_t::number_integer:</div><div class="line"><a name="l05849"></a><span class="lineno"> 5849</span>&#160; {</div><div class="line"><a name="l05850"></a><span class="lineno"> 5850</span>&#160; o &lt;&lt; m_value.number_integer;</div><div class="line"><a name="l05851"></a><span class="lineno"> 5851</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l05852"></a><span class="lineno"> 5852</span>&#160; }</div><div class="line"><a name="l05853"></a><span class="lineno"> 5853</span>&#160;</div><div class="line"><a name="l05854"></a><span class="lineno"> 5854</span>&#160; <span class="keywordflow">case</span> value_t::number_unsigned:</div><div class="line"><a name="l05855"></a><span class="lineno"> 5855</span>&#160; {</div><div class="line"><a name="l05856"></a><span class="lineno"> 5856</span>&#160; o &lt;&lt; m_value.number_unsigned;</div><div class="line"><a name="l05857"></a><span class="lineno"> 5857</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l05858"></a><span class="lineno"> 5858</span>&#160; }</div><div class="line"><a name="l05859"></a><span class="lineno"> 5859</span>&#160;</div><div class="line"><a name="l05860"></a><span class="lineno"> 5860</span>&#160; <span class="keywordflow">case</span> value_t::number_float:</div><div class="line"><a name="l05861"></a><span class="lineno"> 5861</span>&#160; {</div><div class="line"><a name="l05862"></a><span class="lineno"> 5862</span>&#160; <span class="comment">// If the number is an integer then output as a fixed with with</span></div><div class="line"><a name="l05863"></a><span class="lineno"> 5863</span>&#160; <span class="comment">// precision 1 to output &quot;0.0&quot;, &quot;1.0&quot; etc as expected for some</span></div><div class="line"><a name="l05864"></a><span class="lineno"> 5864</span>&#160; <span class="comment">// round trip tests otherwise 15 digits of precision allows</span></div><div class="line"><a name="l05865"></a><span class="lineno"> 5865</span>&#160; <span class="comment">// round-trip IEEE 754 string-&gt;double-&gt;string; to be safe, we</span></div><div class="line"><a name="l05866"></a><span class="lineno"> 5866</span>&#160; <span class="comment">// read this value from</span></div><div class="line"><a name="l05867"></a><span class="lineno"> 5867</span>&#160; <span class="comment">// std::numeric_limits&lt;number_float_t&gt;::digits10</span></div><div class="line"><a name="l05868"></a><span class="lineno"> 5868</span>&#160; <span class="keywordflow">if</span> (std::fmod(m_value.number_float, 1) == 0)</div><div class="line"><a name="l05869"></a><span class="lineno"> 5869</span>&#160; {</div><div class="line"><a name="l05870"></a><span class="lineno"> 5870</span>&#160; o &lt;&lt; std::fixed &lt;&lt; std::setprecision(1);</div><div class="line"><a name="l05871"></a><span class="lineno"> 5871</span>&#160; }</div><div class="line"><a name="l05872"></a><span class="lineno"> 5872</span>&#160; <span class="keywordflow">else</span></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="comment">// std::defaultfloat not supported in gcc version &lt; 5</span></div><div class="line"><a name="l05875"></a><span class="lineno"> 5875</span>&#160; o.unsetf(std::ios_base::floatfield);</div><div class="line"><a name="l05876"></a><span class="lineno"> 5876</span>&#160; o &lt;&lt; std::setprecision(std::numeric_limits&lt;double&gt;::digits10);</div><div class="line"><a name="l05877"></a><span class="lineno"> 5877</span>&#160; }</div><div class="line"><a name="l05878"></a><span class="lineno"> 5878</span>&#160; o &lt;&lt; m_value.number_float;</div><div class="line"><a name="l05879"></a><span class="lineno"> 5879</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l05880"></a><span class="lineno"> 5880</span>&#160; }</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; <span class="keywordflow">case</span> value_t::discarded:</div><div class="line"><a name="l05883"></a><span class="lineno"> 5883</span>&#160; {</div><div class="line"><a name="l05884"></a><span class="lineno"> 5884</span>&#160; o &lt;&lt; <span class="stringliteral">&quot;&lt;discarded&gt;&quot;</span>;</div><div class="line"><a name="l05885"></a><span class="lineno"> 5885</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l05886"></a><span class="lineno"> 5886</span>&#160; }</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; <span class="keywordflow">case</span> value_t::null:</div><div class="line"><a name="l05889"></a><span class="lineno"> 5889</span>&#160; {</div><div class="line"><a name="l05890"></a><span class="lineno"> 5890</span>&#160; o &lt;&lt; <span class="stringliteral">&quot;null&quot;</span>;</div><div class="line"><a name="l05891"></a><span class="lineno"> 5891</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l05892"></a><span class="lineno"> 5892</span>&#160; }</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;</div><div class="line"><a name="l05896"></a><span class="lineno"> 5896</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l05898"></a><span class="lineno"> 5898</span>&#160; <span class="comment">// member variables //</span></div><div class="line"><a name="l05900"></a><span class="lineno"> 5900</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05902"></a><span class="lineno"> 5902</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">value_t</a> m_type = value_t::null;</div><div class="line"><a name="l05903"></a><span class="lineno"> 5903</span>&#160;</div><div class="line"><a name="l05905"></a><span class="lineno"> 5905</span>&#160; json_value m_value = {};</div><div class="line"><a name="l05906"></a><span class="lineno"> 5906</span>&#160;</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="keyword">private</span>:</div><div class="line"><a name="l05910"></a><span class="lineno"> 5910</span>&#160; <span class="comment">// iterators //</span></div><div class="line"><a name="l05912"></a><span class="lineno"> 5912</span>&#160;<span class="comment"></span></div><div class="line"><a name="l05922"></a><span class="lineno"> 5922</span>&#160; <span class="keyword">class </span>primitive_iterator_t</div><div class="line"><a name="l05923"></a><span class="lineno"> 5923</span>&#160; {</div><div class="line"><a name="l05924"></a><span class="lineno"> 5924</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l05926"></a><span class="lineno"> 5926</span>&#160; <span class="keywordtype">void</span> set_begin()</div><div class="line"><a name="l05927"></a><span class="lineno"> 5927</span>&#160; {</div><div class="line"><a name="l05928"></a><span class="lineno"> 5928</span>&#160; m_it = begin_value;</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;</div><div class="line"><a name="l05932"></a><span class="lineno"> 5932</span>&#160; <span class="keywordtype">void</span> set_end()</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; m_it = end_value;</div><div class="line"><a name="l05935"></a><span class="lineno"> 5935</span>&#160; }</div><div class="line"><a name="l05936"></a><span class="lineno"> 5936</span>&#160;</div><div class="line"><a name="l05938"></a><span class="lineno"> 5938</span>&#160; <span class="keywordtype">bool</span> is_begin()<span class="keyword"> const</span></div><div class="line"><a name="l05939"></a><span class="lineno"> 5939</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l05940"></a><span class="lineno"> 5940</span>&#160; <span class="keywordflow">return</span> (m_it == begin_value);</div><div class="line"><a name="l05941"></a><span class="lineno"> 5941</span>&#160; }</div><div class="line"><a name="l05942"></a><span class="lineno"> 5942</span>&#160;</div><div class="line"><a name="l05944"></a><span class="lineno"> 5944</span>&#160; <span class="keywordtype">bool</span> is_end()<span class="keyword"> const</span></div><div class="line"><a name="l05945"></a><span class="lineno"> 5945</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l05946"></a><span class="lineno"> 5946</span>&#160; <span class="keywordflow">return</span> (m_it == end_value);</div><div class="line"><a name="l05947"></a><span class="lineno"> 5947</span>&#160; }</div><div class="line"><a name="l05948"></a><span class="lineno"> 5948</span>&#160;</div><div class="line"><a name="l05950"></a><span class="lineno"> 5950</span>&#160; <span class="keyword">operator</span> <a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a>&amp; ()</div><div class="line"><a name="l05951"></a><span class="lineno"> 5951</span>&#160; {</div><div class="line"><a name="l05952"></a><span class="lineno"> 5952</span>&#160; <span class="keywordflow">return</span> m_it;</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="l05956"></a><span class="lineno"> 5956</span>&#160; <span class="keyword">operator</span> <a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a> ()<span class="keyword"> const</span></div><div class="line"><a name="l05957"></a><span class="lineno"> 5957</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l05958"></a><span class="lineno"> 5958</span>&#160; <span class="keywordflow">return</span> m_it;</div><div class="line"><a name="l05959"></a><span class="lineno"> 5959</span>&#160; }</div><div class="line"><a name="l05960"></a><span class="lineno"> 5960</span>&#160;</div><div class="line"><a name="l05961"></a><span class="lineno"> 5961</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l05962"></a><span class="lineno"> 5962</span>&#160; <span class="keyword">static</span> constexpr <a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a> begin_value = 0;</div><div class="line"><a name="l05963"></a><span class="lineno"> 5963</span>&#160; <span class="keyword">static</span> constexpr <a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a> end_value = begin_value + 1;</div><div class="line"><a name="l05964"></a><span class="lineno"> 5964</span>&#160;</div><div class="line"><a name="l05966"></a><span class="lineno"> 5966</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a> m_it = std::numeric_limits&lt;std::ptrdiff_t&gt;::denorm_min();</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;</div><div class="line"><a name="l05976"></a><span class="lineno"> 5976</span>&#160; <span class="keyword">struct </span>internal_iterator</div><div class="line"><a name="l05977"></a><span class="lineno"> 5977</span>&#160; {</div><div class="line"><a name="l05979"></a><span class="lineno"> 5979</span>&#160; <span class="keyword">typename</span> object_t::iterator object_iterator;</div><div class="line"><a name="l05981"></a><span class="lineno"> 5981</span>&#160; <span class="keyword">typename</span> array_t::iterator array_iterator;</div><div class="line"><a name="l05983"></a><span class="lineno"> 5983</span>&#160; primitive_iterator_t primitive_iterator;</div><div class="line"><a name="l05984"></a><span class="lineno"> 5984</span>&#160;</div><div class="line"><a name="l05986"></a><span class="lineno"> 5986</span>&#160; internal_iterator()</div><div class="line"><a name="l05987"></a><span class="lineno"> 5987</span>&#160; : object_iterator(), array_iterator(), primitive_iterator()</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; };</div><div class="line"><a name="l05990"></a><span class="lineno"> 5990</span>&#160;</div><div class="line"><a name="l05992"></a><span class="lineno"> 5992</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> IteratorType&gt;</div><div class="line"><a name="l05993"></a><span class="lineno"> 5993</span>&#160; <span class="keyword">class </span>iteration_proxy</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="keyword">private</span>:</div><div class="line"><a name="l05997"></a><span class="lineno"> 5997</span>&#160; <span class="keyword">class </span>iteration_proxy_internal</div><div class="line"><a name="l05998"></a><span class="lineno"> 5998</span>&#160; {</div><div class="line"><a name="l05999"></a><span class="lineno"> 5999</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l06001"></a><span class="lineno"> 6001</span>&#160; IteratorType anchor;</div><div class="line"><a name="l06003"></a><span class="lineno"> 6003</span>&#160; <span class="keywordtype">size_t</span> array_index = 0;</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; <span class="keyword">public</span>:</div><div class="line"><a name="l06006"></a><span class="lineno"> 6006</span>&#160; iteration_proxy_internal(IteratorType it)</div><div class="line"><a name="l06007"></a><span class="lineno"> 6007</span>&#160; : anchor(it)</div><div class="line"><a name="l06008"></a><span class="lineno"> 6008</span>&#160; {}</div><div class="line"><a name="l06009"></a><span class="lineno"> 6009</span>&#160;</div><div class="line"><a name="l06011"></a><span class="lineno"> 6011</span>&#160; iteration_proxy_internal&amp; operator*()</div><div class="line"><a name="l06012"></a><span class="lineno"> 6012</span>&#160; {</div><div class="line"><a name="l06013"></a><span class="lineno"> 6013</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06014"></a><span class="lineno"> 6014</span>&#160; }</div><div class="line"><a name="l06015"></a><span class="lineno"> 6015</span>&#160;</div><div class="line"><a name="l06017"></a><span class="lineno"> 6017</span>&#160; iteration_proxy_internal&amp; operator++()</div><div class="line"><a name="l06018"></a><span class="lineno"> 6018</span>&#160; {</div><div class="line"><a name="l06019"></a><span class="lineno"> 6019</span>&#160; ++anchor;</div><div class="line"><a name="l06020"></a><span class="lineno"> 6020</span>&#160; ++array_index;</div><div class="line"><a name="l06021"></a><span class="lineno"> 6021</span>&#160;</div><div class="line"><a name="l06022"></a><span class="lineno"> 6022</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</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;</div><div class="line"><a name="l06026"></a><span class="lineno"> 6026</span>&#160; <span class="keywordtype">bool</span> operator!= (<span class="keyword">const</span> iteration_proxy_internal&amp; o)<span class="keyword"> const</span></div><div class="line"><a name="l06027"></a><span class="lineno"> 6027</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06028"></a><span class="lineno"> 6028</span>&#160; <span class="keywordflow">return</span> anchor != o.anchor;</div><div class="line"><a name="l06029"></a><span class="lineno"> 6029</span>&#160; }</div><div class="line"><a name="l06030"></a><span class="lineno"> 6030</span>&#160;</div><div class="line"><a name="l06032"></a><span class="lineno"> 6032</span>&#160; <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">basic_json::string_t</a> key()<span class="keyword"> const</span></div><div class="line"><a name="l06033"></a><span class="lineno"> 6033</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06034"></a><span class="lineno"> 6034</span>&#160; assert(anchor.m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06035"></a><span class="lineno"> 6035</span>&#160;</div><div class="line"><a name="l06036"></a><span class="lineno"> 6036</span>&#160; <span class="keywordflow">switch</span> (anchor.m_object-&gt;type())</div><div class="line"><a name="l06037"></a><span class="lineno"> 6037</span>&#160; {</div><div class="line"><a name="l06038"></a><span class="lineno"> 6038</span>&#160; <span class="comment">// use integer array index as key</span></div><div class="line"><a name="l06039"></a><span class="lineno"> 6039</span>&#160; <span class="keywordflow">case</span> value_t::array:</div><div class="line"><a name="l06040"></a><span class="lineno"> 6040</span>&#160; {</div><div class="line"><a name="l06041"></a><span class="lineno"> 6041</span>&#160; <span class="keywordflow">return</span> std::to_string(array_index);</div><div class="line"><a name="l06042"></a><span class="lineno"> 6042</span>&#160; }</div><div class="line"><a name="l06043"></a><span class="lineno"> 6043</span>&#160;</div><div class="line"><a name="l06044"></a><span class="lineno"> 6044</span>&#160; <span class="comment">// use key from the object</span></div><div class="line"><a name="l06045"></a><span class="lineno"> 6045</span>&#160; <span class="keywordflow">case</span> value_t::object:</div><div class="line"><a name="l06046"></a><span class="lineno"> 6046</span>&#160; {</div><div class="line"><a name="l06047"></a><span class="lineno"> 6047</span>&#160; <span class="keywordflow">return</span> anchor.key();</div><div class="line"><a name="l06048"></a><span class="lineno"> 6048</span>&#160; }</div><div class="line"><a name="l06049"></a><span class="lineno"> 6049</span>&#160;</div><div class="line"><a name="l06050"></a><span class="lineno"> 6050</span>&#160; <span class="comment">// use an empty key for all primitive types</span></div><div class="line"><a name="l06051"></a><span class="lineno"> 6051</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l06052"></a><span class="lineno"> 6052</span>&#160; {</div><div class="line"><a name="l06053"></a><span class="lineno"> 6053</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l06054"></a><span class="lineno"> 6054</span>&#160; }</div><div class="line"><a name="l06055"></a><span class="lineno"> 6055</span>&#160; }</div><div class="line"><a name="l06056"></a><span class="lineno"> 6056</span>&#160; }</div><div class="line"><a name="l06057"></a><span class="lineno"> 6057</span>&#160;</div><div class="line"><a name="l06059"></a><span class="lineno"> 6059</span>&#160; <span class="keyword">typename</span> IteratorType::reference value()<span class="keyword"> const</span></div><div class="line"><a name="l06060"></a><span class="lineno"> 6060</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06061"></a><span class="lineno"> 6061</span>&#160; <span class="keywordflow">return</span> anchor.value();</div><div class="line"><a name="l06062"></a><span class="lineno"> 6062</span>&#160; }</div><div class="line"><a name="l06063"></a><span class="lineno"> 6063</span>&#160; };</div><div class="line"><a name="l06064"></a><span class="lineno"> 6064</span>&#160;</div><div class="line"><a name="l06066"></a><span class="lineno"> 6066</span>&#160; <span class="keyword">typename</span> IteratorType::reference container;</div><div class="line"><a name="l06067"></a><span class="lineno"> 6067</span>&#160;</div><div class="line"><a name="l06068"></a><span class="lineno"> 6068</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l06070"></a><span class="lineno"> 6070</span>&#160; iteration_proxy(<span class="keyword">typename</span> IteratorType::reference cont)</div><div class="line"><a name="l06071"></a><span class="lineno"> 6071</span>&#160; : container(cont)</div><div class="line"><a name="l06072"></a><span class="lineno"> 6072</span>&#160; {}</div><div class="line"><a name="l06073"></a><span class="lineno"> 6073</span>&#160;</div><div class="line"><a name="l06075"></a><span class="lineno"> 6075</span>&#160; iteration_proxy_internal begin()</div><div class="line"><a name="l06076"></a><span class="lineno"> 6076</span>&#160; {</div><div class="line"><a name="l06077"></a><span class="lineno"> 6077</span>&#160; <span class="keywordflow">return</span> iteration_proxy_internal(container.begin());</div><div class="line"><a name="l06078"></a><span class="lineno"> 6078</span>&#160; }</div><div class="line"><a name="l06079"></a><span class="lineno"> 6079</span>&#160;</div><div class="line"><a name="l06081"></a><span class="lineno"> 6081</span>&#160; iteration_proxy_internal end()</div><div class="line"><a name="l06082"></a><span class="lineno"> 6082</span>&#160; {</div><div class="line"><a name="l06083"></a><span class="lineno"> 6083</span>&#160; <span class="keywordflow">return</span> iteration_proxy_internal(container.end());</div><div class="line"><a name="l06084"></a><span class="lineno"> 6084</span>&#160; }</div><div class="line"><a name="l06085"></a><span class="lineno"> 6085</span>&#160; };</div><div class="line"><a name="l06086"></a><span class="lineno"> 6086</span>&#160;</div><div class="line"><a name="l06087"></a><span class="lineno"> 6087</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l06101"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator.html"> 6101</a></span>&#160; <span class="keyword">class </span><a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> : <span class="keyword">public</span> std::iterator&lt;std::random_access_iterator_tag, const basic_json&gt;</div><div class="line"><a name="l06102"></a><span class="lineno"> 6102</span>&#160; {</div><div class="line"><a name="l06104"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_ada3100cdb8700566051828f1355fa745.html#ada3100cdb8700566051828f1355fa745"> 6104</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span>basic_json;</div><div class="line"><a name="l06105"></a><span class="lineno"> 6105</span>&#160;</div><div class="line"><a name="l06106"></a><span class="lineno"> 6106</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l06108"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a9ea0497199b1e96ce9cadd1f202ec343.html#a9ea0497199b1e96ce9cadd1f202ec343"> 6108</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a9ea0497199b1e96ce9cadd1f202ec343.html#a9ea0497199b1e96ce9cadd1f202ec343">value_type</a> = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1basic__json_ac8d45b57874b4a6e9c07f7d3b5daa1f9.html#ac8d45b57874b4a6e9c07f7d3b5daa1f9">basic_json::value_type</a>;</div><div class="line"><a name="l06110"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f"> 6110</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">basic_json::difference_type</a>;</div><div class="line"><a name="l06112"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389.html#a1da96fc3054d547e7706d3a2f073f389"> 6112</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389.html#a1da96fc3054d547e7706d3a2f073f389">pointer</a> = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1basic__json_a06efb200b69942eacd1ea22d0f6ccebb.html#a06efb200b69942eacd1ea22d0f6ccebb">basic_json::const_pointer</a>;</div><div class="line"><a name="l06114"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2"> 6114</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a> = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1basic__json_af677a29b0e66edc9f66e5167e4667071.html#af677a29b0e66edc9f66e5167e4667071">basic_json::const_reference</a>;</div><div class="line"><a name="l06116"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a821560d64f50525162097f19b1392e7f.html#a821560d64f50525162097f19b1392e7f"> 6116</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a821560d64f50525162097f19b1392e7f.html#a821560d64f50525162097f19b1392e7f">iterator_category</a> = std::bidirectional_iterator_tag;</div><div class="line"><a name="l06117"></a><span class="lineno"> 6117</span>&#160;</div><div class="line"><a name="l06119"></a><span class="lineno"> 6119</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l06120"></a><span class="lineno"> 6120</span>&#160;</div><div class="line"><a name="l06122"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a72761de693f95edc195956197f4e5569.html#a72761de693f95edc195956197f4e5569"> 6122</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a72761de693f95edc195956197f4e5569.html#a72761de693f95edc195956197f4e5569">const_iterator</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389.html#a1da96fc3054d547e7706d3a2f073f389">pointer</a> <span class="keywordtype">object</span>) : m_object(object)</div><div class="line"><a name="l06123"></a><span class="lineno"> 6123</span>&#160; {</div><div class="line"><a name="l06124"></a><span class="lineno"> 6124</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06125"></a><span class="lineno"> 6125</span>&#160;</div><div class="line"><a name="l06126"></a><span class="lineno"> 6126</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div><div class="line"><a name="l06127"></a><span class="lineno"> 6127</span>&#160; {</div><div class="line"><a name="l06128"></a><span class="lineno"> 6128</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</div><div class="line"><a name="l06129"></a><span class="lineno"> 6129</span>&#160; {</div><div class="line"><a name="l06130"></a><span class="lineno"> 6130</span>&#160; m_it.object_iterator = <span class="keyword">typename</span> object_t::iterator();</div><div class="line"><a name="l06131"></a><span class="lineno"> 6131</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06132"></a><span class="lineno"> 6132</span>&#160; }</div><div class="line"><a name="l06133"></a><span class="lineno"> 6133</span>&#160;</div><div class="line"><a name="l06134"></a><span class="lineno"> 6134</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06135"></a><span class="lineno"> 6135</span>&#160; {</div><div class="line"><a name="l06136"></a><span class="lineno"> 6136</span>&#160; m_it.array_iterator = <span class="keyword">typename</span> array_t::iterator();</div><div class="line"><a name="l06137"></a><span class="lineno"> 6137</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06138"></a><span class="lineno"> 6138</span>&#160; }</div><div class="line"><a name="l06139"></a><span class="lineno"> 6139</span>&#160;</div><div class="line"><a name="l06140"></a><span class="lineno"> 6140</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l06141"></a><span class="lineno"> 6141</span>&#160; {</div><div class="line"><a name="l06142"></a><span class="lineno"> 6142</span>&#160; m_it.primitive_iterator = primitive_iterator_t();</div><div class="line"><a name="l06143"></a><span class="lineno"> 6143</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06144"></a><span class="lineno"> 6144</span>&#160; }</div><div class="line"><a name="l06145"></a><span class="lineno"> 6145</span>&#160; }</div><div class="line"><a name="l06146"></a><span class="lineno"> 6146</span>&#160; }</div><div class="line"><a name="l06147"></a><span class="lineno"> 6147</span>&#160;</div><div class="line"><a name="l06149"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_ac6f4562e16e99b60820d100880b4c3c8.html#ac6f4562e16e99b60820d100880b4c3c8"> 6149</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_ac6f4562e16e99b60820d100880b4c3c8.html#ac6f4562e16e99b60820d100880b4c3c8">const_iterator</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a>&amp; other) : m_object(other.m_object)</div><div class="line"><a name="l06150"></a><span class="lineno"> 6150</span>&#160; {</div><div class="line"><a name="l06151"></a><span class="lineno"> 6151</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06152"></a><span class="lineno"> 6152</span>&#160;</div><div class="line"><a name="l06153"></a><span class="lineno"> 6153</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</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="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</div><div class="line"><a name="l06156"></a><span class="lineno"> 6156</span>&#160; {</div><div class="line"><a name="l06157"></a><span class="lineno"> 6157</span>&#160; m_it.object_iterator = other.m_it.object_iterator;</div><div class="line"><a name="l06158"></a><span class="lineno"> 6158</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06159"></a><span class="lineno"> 6159</span>&#160; }</div><div class="line"><a name="l06160"></a><span class="lineno"> 6160</span>&#160;</div><div class="line"><a name="l06161"></a><span class="lineno"> 6161</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06162"></a><span class="lineno"> 6162</span>&#160; {</div><div class="line"><a name="l06163"></a><span class="lineno"> 6163</span>&#160; m_it.array_iterator = other.m_it.array_iterator;</div><div class="line"><a name="l06164"></a><span class="lineno"> 6164</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06165"></a><span class="lineno"> 6165</span>&#160; }</div><div class="line"><a name="l06166"></a><span class="lineno"> 6166</span>&#160;</div><div class="line"><a name="l06167"></a><span class="lineno"> 6167</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l06168"></a><span class="lineno"> 6168</span>&#160; {</div><div class="line"><a name="l06169"></a><span class="lineno"> 6169</span>&#160; m_it.primitive_iterator = other.m_it.primitive_iterator;</div><div class="line"><a name="l06170"></a><span class="lineno"> 6170</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06171"></a><span class="lineno"> 6171</span>&#160; }</div><div class="line"><a name="l06172"></a><span class="lineno"> 6172</span>&#160; }</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;</div><div class="line"><a name="l06176"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a18c35a6735d3da96b4fc026421c05dd8.html#a18c35a6735d3da96b4fc026421c05dd8"> 6176</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a18c35a6735d3da96b4fc026421c05dd8.html#a18c35a6735d3da96b4fc026421c05dd8">const_iterator</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; other) noexcept</div><div class="line"><a name="l06177"></a><span class="lineno"> 6177</span>&#160; : m_object(other.m_object), m_it(other.m_it)</div><div class="line"><a name="l06178"></a><span class="lineno"> 6178</span>&#160; {}</div><div class="line"><a name="l06179"></a><span class="lineno"> 6179</span>&#160;</div><div class="line"><a name="l06181"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a5521515067b6597cb0b55a9c547a7a2b.html#a5521515067b6597cb0b55a9c547a7a2b"> 6181</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a5521515067b6597cb0b55a9c547a7a2b.html#a5521515067b6597cb0b55a9c547a7a2b">operator=</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> other) noexcept(</div><div class="line"><a name="l06182"></a><span class="lineno"> 6182</span>&#160; std::is_nothrow_move_constructible&lt;pointer&gt;::value and</div><div class="line"><a name="l06183"></a><span class="lineno"> 6183</span>&#160; std::is_nothrow_move_assignable&lt;pointer&gt;::value and</div><div class="line"><a name="l06184"></a><span class="lineno"> 6184</span>&#160; std::is_nothrow_move_constructible&lt;internal_iterator&gt;::value and</div><div class="line"><a name="l06185"></a><span class="lineno"> 6185</span>&#160; std::is_nothrow_move_assignable&lt;internal_iterator&gt;::value</div><div class="line"><a name="l06186"></a><span class="lineno"> 6186</span>&#160; )</div><div class="line"><a name="l06187"></a><span class="lineno"> 6187</span>&#160; {</div><div class="line"><a name="l06188"></a><span class="lineno"> 6188</span>&#160; std::swap(m_object, other.m_object);</div><div class="line"><a name="l06189"></a><span class="lineno"> 6189</span>&#160; std::swap(m_it, other.m_it);</div><div class="line"><a name="l06190"></a><span class="lineno"> 6190</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06191"></a><span class="lineno"> 6191</span>&#160; }</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="keyword">private</span>:</div><div class="line"><a name="l06195"></a><span class="lineno"> 6195</span>&#160; <span class="keywordtype">void</span> set_begin()</div><div class="line"><a name="l06196"></a><span class="lineno"> 6196</span>&#160; {</div><div class="line"><a name="l06197"></a><span class="lineno"> 6197</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06198"></a><span class="lineno"> 6198</span>&#160;</div><div class="line"><a name="l06199"></a><span class="lineno"> 6199</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div><div class="line"><a name="l06200"></a><span class="lineno"> 6200</span>&#160; {</div><div class="line"><a name="l06201"></a><span class="lineno"> 6201</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</div><div class="line"><a name="l06202"></a><span class="lineno"> 6202</span>&#160; {</div><div class="line"><a name="l06203"></a><span class="lineno"> 6203</span>&#160; assert(m_object-&gt;m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06204"></a><span class="lineno"> 6204</span>&#160; m_it.object_iterator = m_object-&gt;m_value.object-&gt;begin();</div><div class="line"><a name="l06205"></a><span class="lineno"> 6205</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06206"></a><span class="lineno"> 6206</span>&#160; }</div><div class="line"><a name="l06207"></a><span class="lineno"> 6207</span>&#160;</div><div class="line"><a name="l06208"></a><span class="lineno"> 6208</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06209"></a><span class="lineno"> 6209</span>&#160; {</div><div class="line"><a name="l06210"></a><span class="lineno"> 6210</span>&#160; assert(m_object-&gt;m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06211"></a><span class="lineno"> 6211</span>&#160; m_it.array_iterator = m_object-&gt;m_value.array-&gt;begin();</div><div class="line"><a name="l06212"></a><span class="lineno"> 6212</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06213"></a><span class="lineno"> 6213</span>&#160; }</div><div class="line"><a name="l06214"></a><span class="lineno"> 6214</span>&#160;</div><div class="line"><a name="l06215"></a><span class="lineno"> 6215</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522a37a6259cc0c1dae299a7866489dff0bd">basic_json::value_t::null</a>:</div><div class="line"><a name="l06216"></a><span class="lineno"> 6216</span>&#160; {</div><div class="line"><a name="l06217"></a><span class="lineno"> 6217</span>&#160; <span class="comment">// set to end so begin()==end() is true: null is empty</span></div><div class="line"><a name="l06218"></a><span class="lineno"> 6218</span>&#160; m_it.primitive_iterator.set_end();</div><div class="line"><a name="l06219"></a><span class="lineno"> 6219</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06220"></a><span class="lineno"> 6220</span>&#160; }</div><div class="line"><a name="l06221"></a><span class="lineno"> 6221</span>&#160;</div><div class="line"><a name="l06222"></a><span class="lineno"> 6222</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l06223"></a><span class="lineno"> 6223</span>&#160; {</div><div class="line"><a name="l06224"></a><span class="lineno"> 6224</span>&#160; m_it.primitive_iterator.set_begin();</div><div class="line"><a name="l06225"></a><span class="lineno"> 6225</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06226"></a><span class="lineno"> 6226</span>&#160; }</div><div class="line"><a name="l06227"></a><span class="lineno"> 6227</span>&#160; }</div><div class="line"><a name="l06228"></a><span class="lineno"> 6228</span>&#160; }</div><div class="line"><a name="l06229"></a><span class="lineno"> 6229</span>&#160;</div><div class="line"><a name="l06231"></a><span class="lineno"> 6231</span>&#160; <span class="keywordtype">void</span> set_end()</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; assert(m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06234"></a><span class="lineno"> 6234</span>&#160;</div><div class="line"><a name="l06235"></a><span class="lineno"> 6235</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</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> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</div><div class="line"><a name="l06238"></a><span class="lineno"> 6238</span>&#160; {</div><div class="line"><a name="l06239"></a><span class="lineno"> 6239</span>&#160; assert(m_object-&gt;m_value.object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06240"></a><span class="lineno"> 6240</span>&#160; m_it.object_iterator = m_object-&gt;m_value.object-&gt;end();</div><div class="line"><a name="l06241"></a><span class="lineno"> 6241</span>&#160; <span class="keywordflow">break</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;</div><div class="line"><a name="l06244"></a><span class="lineno"> 6244</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06245"></a><span class="lineno"> 6245</span>&#160; {</div><div class="line"><a name="l06246"></a><span class="lineno"> 6246</span>&#160; assert(m_object-&gt;m_value.array != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06247"></a><span class="lineno"> 6247</span>&#160; m_it.array_iterator = m_object-&gt;m_value.array-&gt;end();</div><div class="line"><a name="l06248"></a><span class="lineno"> 6248</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06249"></a><span class="lineno"> 6249</span>&#160; }</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="keywordflow">default</span>:</div><div class="line"><a name="l06252"></a><span class="lineno"> 6252</span>&#160; {</div><div class="line"><a name="l06253"></a><span class="lineno"> 6253</span>&#160; m_it.primitive_iterator.set_end();</div><div class="line"><a name="l06254"></a><span class="lineno"> 6254</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06255"></a><span class="lineno"> 6255</span>&#160; }</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; }</div><div class="line"><a name="l06258"></a><span class="lineno"> 6258</span>&#160;</div><div class="line"><a name="l06259"></a><span class="lineno"> 6259</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l06261"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_ab3029a1a83cf46dc28ad443bbad0c74d.html#ab3029a1a83cf46dc28ad443bbad0c74d"> 6261</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_ab3029a1a83cf46dc28ad443bbad0c74d.html#ab3029a1a83cf46dc28ad443bbad0c74d">operator*</a>()<span class="keyword"> const</span></div><div class="line"><a name="l06262"></a><span class="lineno"> 6262</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06263"></a><span class="lineno"> 6263</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06264"></a><span class="lineno"> 6264</span>&#160;</div><div class="line"><a name="l06265"></a><span class="lineno"> 6265</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</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> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</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; assert(m_object-&gt;m_value.object);</div><div class="line"><a name="l06270"></a><span class="lineno"> 6270</span>&#160; assert(m_it.object_iterator != m_object-&gt;m_value.object-&gt;end());</div><div class="line"><a name="l06271"></a><span class="lineno"> 6271</span>&#160; <span class="keywordflow">return</span> m_it.object_iterator-&gt;second;</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;</div><div class="line"><a name="l06274"></a><span class="lineno"> 6274</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06275"></a><span class="lineno"> 6275</span>&#160; {</div><div class="line"><a name="l06276"></a><span class="lineno"> 6276</span>&#160; assert(m_object-&gt;m_value.array);</div><div class="line"><a name="l06277"></a><span class="lineno"> 6277</span>&#160; assert(m_it.array_iterator != m_object-&gt;m_value.array-&gt;end());</div><div class="line"><a name="l06278"></a><span class="lineno"> 6278</span>&#160; <span class="keywordflow">return</span> *m_it.array_iterator;</div><div class="line"><a name="l06279"></a><span class="lineno"> 6279</span>&#160; }</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; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522a37a6259cc0c1dae299a7866489dff0bd">basic_json::value_t::null</a>:</div><div class="line"><a name="l06282"></a><span class="lineno"> 6282</span>&#160; {</div><div class="line"><a name="l06283"></a><span class="lineno"> 6283</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;cannot get value&quot;</span>);</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;</div><div class="line"><a name="l06286"></a><span class="lineno"> 6286</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l06287"></a><span class="lineno"> 6287</span>&#160; {</div><div class="line"><a name="l06288"></a><span class="lineno"> 6288</span>&#160; <span class="keywordflow">if</span> (m_it.primitive_iterator.is_begin())</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; <span class="keywordflow">return</span> *m_object;</div><div class="line"><a name="l06291"></a><span class="lineno"> 6291</span>&#160; }</div><div class="line"><a name="l06292"></a><span class="lineno"> 6292</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l06293"></a><span class="lineno"> 6293</span>&#160; {</div><div class="line"><a name="l06294"></a><span class="lineno"> 6294</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;cannot get value&quot;</span>);</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; }</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;</div><div class="line"><a name="l06301"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a8be837e4d902887676dd837abe9098d3.html#a8be837e4d902887676dd837abe9098d3"> 6301</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389.html#a1da96fc3054d547e7706d3a2f073f389">pointer</a> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a8be837e4d902887676dd837abe9098d3.html#a8be837e4d902887676dd837abe9098d3">operator-&gt;</a>()<span class="keyword"> const</span></div><div class="line"><a name="l06302"></a><span class="lineno"> 6302</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06303"></a><span class="lineno"> 6303</span>&#160; assert(m_object != <span class="keyword">nullptr</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; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div><div class="line"><a name="l06306"></a><span class="lineno"> 6306</span>&#160; {</div><div class="line"><a name="l06307"></a><span class="lineno"> 6307</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</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; assert(m_object-&gt;m_value.object);</div><div class="line"><a name="l06310"></a><span class="lineno"> 6310</span>&#160; assert(m_it.object_iterator != m_object-&gt;m_value.object-&gt;end());</div><div class="line"><a name="l06311"></a><span class="lineno"> 6311</span>&#160; <span class="keywordflow">return</span> &amp;(m_it.object_iterator-&gt;second);</div><div class="line"><a name="l06312"></a><span class="lineno"> 6312</span>&#160; }</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; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06315"></a><span class="lineno"> 6315</span>&#160; {</div><div class="line"><a name="l06316"></a><span class="lineno"> 6316</span>&#160; assert(m_object-&gt;m_value.array);</div><div class="line"><a name="l06317"></a><span class="lineno"> 6317</span>&#160; assert(m_it.array_iterator != m_object-&gt;m_value.array-&gt;end());</div><div class="line"><a name="l06318"></a><span class="lineno"> 6318</span>&#160; <span class="keywordflow">return</span> &amp;*m_it.array_iterator;</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">default</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; <span class="keywordflow">if</span> (m_it.primitive_iterator.is_begin())</div><div class="line"><a name="l06324"></a><span class="lineno"> 6324</span>&#160; {</div><div class="line"><a name="l06325"></a><span class="lineno"> 6325</span>&#160; <span class="keywordflow">return</span> m_object;</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="keywordflow">else</span></div><div class="line"><a name="l06328"></a><span class="lineno"> 6328</span>&#160; {</div><div class="line"><a name="l06329"></a><span class="lineno"> 6329</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;cannot get value&quot;</span>);</div><div class="line"><a name="l06330"></a><span class="lineno"> 6330</span>&#160; }</div><div class="line"><a name="l06331"></a><span class="lineno"> 6331</span>&#160; }</div><div class="line"><a name="l06332"></a><span class="lineno"> 6332</span>&#160; }</div><div class="line"><a name="l06333"></a><span class="lineno"> 6333</span>&#160; }</div><div class="line"><a name="l06334"></a><span class="lineno"> 6334</span>&#160;</div><div class="line"><a name="l06336"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a8dbaec5bf8ccba3225520356629061cb.html#a8dbaec5bf8ccba3225520356629061cb"> 6336</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a8dbaec5bf8ccba3225520356629061cb.html#a8dbaec5bf8ccba3225520356629061cb">operator++</a>(<span class="keywordtype">int</span>)</div><div class="line"><a name="l06337"></a><span class="lineno"> 6337</span>&#160; {</div><div class="line"><a name="l06338"></a><span class="lineno"> 6338</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div><div class="line"><a name="l06339"></a><span class="lineno"> 6339</span>&#160; ++(*this);</div><div class="line"><a name="l06340"></a><span class="lineno"> 6340</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l06341"></a><span class="lineno"> 6341</span>&#160; }</div><div class="line"><a name="l06342"></a><span class="lineno"> 6342</span>&#160;</div><div class="line"><a name="l06344"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a8fbb15efd97599209a7def77af8e748e.html#a8fbb15efd97599209a7def77af8e748e"> 6344</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a8fbb15efd97599209a7def77af8e748e.html#a8fbb15efd97599209a7def77af8e748e">operator++</a>()</div><div class="line"><a name="l06345"></a><span class="lineno"> 6345</span>&#160; {</div><div class="line"><a name="l06346"></a><span class="lineno"> 6346</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06347"></a><span class="lineno"> 6347</span>&#160;</div><div class="line"><a name="l06348"></a><span class="lineno"> 6348</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div><div class="line"><a name="l06349"></a><span class="lineno"> 6349</span>&#160; {</div><div class="line"><a name="l06350"></a><span class="lineno"> 6350</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</div><div class="line"><a name="l06351"></a><span class="lineno"> 6351</span>&#160; {</div><div class="line"><a name="l06352"></a><span class="lineno"> 6352</span>&#160; ++m_it.object_iterator;</div><div class="line"><a name="l06353"></a><span class="lineno"> 6353</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06354"></a><span class="lineno"> 6354</span>&#160; }</div><div class="line"><a name="l06355"></a><span class="lineno"> 6355</span>&#160;</div><div class="line"><a name="l06356"></a><span class="lineno"> 6356</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06357"></a><span class="lineno"> 6357</span>&#160; {</div><div class="line"><a name="l06358"></a><span class="lineno"> 6358</span>&#160; ++m_it.array_iterator;</div><div class="line"><a name="l06359"></a><span class="lineno"> 6359</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06360"></a><span class="lineno"> 6360</span>&#160; }</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>:</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; ++m_it.primitive_iterator;</div><div class="line"><a name="l06365"></a><span class="lineno"> 6365</span>&#160; <span class="keywordflow">break</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; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06370"></a><span class="lineno"> 6370</span>&#160; }</div><div class="line"><a name="l06371"></a><span class="lineno"> 6371</span>&#160;</div><div class="line"><a name="l06373"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a6cab1c2ed7e2a014980e2a5717f43a64.html#a6cab1c2ed7e2a014980e2a5717f43a64"> 6373</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a6cab1c2ed7e2a014980e2a5717f43a64.html#a6cab1c2ed7e2a014980e2a5717f43a64">operator--</a>(<span class="keywordtype">int</span>)</div><div class="line"><a name="l06374"></a><span class="lineno"> 6374</span>&#160; {</div><div class="line"><a name="l06375"></a><span class="lineno"> 6375</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div><div class="line"><a name="l06376"></a><span class="lineno"> 6376</span>&#160; --(*this);</div><div class="line"><a name="l06377"></a><span class="lineno"> 6377</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l06378"></a><span class="lineno"> 6378</span>&#160; }</div><div class="line"><a name="l06379"></a><span class="lineno"> 6379</span>&#160;</div><div class="line"><a name="l06381"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_adeb2ff3fdf3cc301b72db109934c9199.html#adeb2ff3fdf3cc301b72db109934c9199"> 6381</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_adeb2ff3fdf3cc301b72db109934c9199.html#adeb2ff3fdf3cc301b72db109934c9199">operator--</a>()</div><div class="line"><a name="l06382"></a><span class="lineno"> 6382</span>&#160; {</div><div class="line"><a name="l06383"></a><span class="lineno"> 6383</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06384"></a><span class="lineno"> 6384</span>&#160;</div><div class="line"><a name="l06385"></a><span class="lineno"> 6385</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</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">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</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; --m_it.object_iterator;</div><div class="line"><a name="l06390"></a><span class="lineno"> 6390</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06391"></a><span class="lineno"> 6391</span>&#160; }</div><div class="line"><a name="l06392"></a><span class="lineno"> 6392</span>&#160;</div><div class="line"><a name="l06393"></a><span class="lineno"> 6393</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06394"></a><span class="lineno"> 6394</span>&#160; {</div><div class="line"><a name="l06395"></a><span class="lineno"> 6395</span>&#160; --m_it.array_iterator;</div><div class="line"><a name="l06396"></a><span class="lineno"> 6396</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06397"></a><span class="lineno"> 6397</span>&#160; }</div><div class="line"><a name="l06398"></a><span class="lineno"> 6398</span>&#160;</div><div class="line"><a name="l06399"></a><span class="lineno"> 6399</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l06400"></a><span class="lineno"> 6400</span>&#160; {</div><div class="line"><a name="l06401"></a><span class="lineno"> 6401</span>&#160; --m_it.primitive_iterator;</div><div class="line"><a name="l06402"></a><span class="lineno"> 6402</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06403"></a><span class="lineno"> 6403</span>&#160; }</div><div class="line"><a name="l06404"></a><span class="lineno"> 6404</span>&#160; }</div><div class="line"><a name="l06405"></a><span class="lineno"> 6405</span>&#160;</div><div class="line"><a name="l06406"></a><span class="lineno"> 6406</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06407"></a><span class="lineno"> 6407</span>&#160; }</div><div class="line"><a name="l06408"></a><span class="lineno"> 6408</span>&#160;</div><div class="line"><a name="l06410"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_ab4c0b9baaec9ebc4837158e272f6c803.html#ab4c0b9baaec9ebc4837158e272f6c803"> 6410</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_ab4c0b9baaec9ebc4837158e272f6c803.html#ab4c0b9baaec9ebc4837158e272f6c803">operator==</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; other)<span class="keyword"> const</span></div><div class="line"><a name="l06411"></a><span class="lineno"> 6411</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06412"></a><span class="lineno"> 6412</span>&#160; <span class="comment">// if objects are not the same, the comparison is undefined</span></div><div class="line"><a name="l06413"></a><span class="lineno"> 6413</span>&#160; <span class="keywordflow">if</span> (m_object != other.m_object)</div><div class="line"><a name="l06414"></a><span class="lineno"> 6414</span>&#160; {</div><div class="line"><a name="l06415"></a><span class="lineno"> 6415</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot compare iterators of different containers&quot;</span>);</div><div class="line"><a name="l06416"></a><span class="lineno"> 6416</span>&#160; }</div><div class="line"><a name="l06417"></a><span class="lineno"> 6417</span>&#160;</div><div class="line"><a name="l06418"></a><span class="lineno"> 6418</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06419"></a><span class="lineno"> 6419</span>&#160;</div><div class="line"><a name="l06420"></a><span class="lineno"> 6420</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</div><div class="line"><a name="l06421"></a><span class="lineno"> 6421</span>&#160; {</div><div class="line"><a name="l06422"></a><span class="lineno"> 6422</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</div><div class="line"><a name="l06423"></a><span class="lineno"> 6423</span>&#160; {</div><div class="line"><a name="l06424"></a><span class="lineno"> 6424</span>&#160; <span class="keywordflow">return</span> (m_it.object_iterator == other.m_it.object_iterator);</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;</div><div class="line"><a name="l06427"></a><span class="lineno"> 6427</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06428"></a><span class="lineno"> 6428</span>&#160; {</div><div class="line"><a name="l06429"></a><span class="lineno"> 6429</span>&#160; <span class="keywordflow">return</span> (m_it.array_iterator == other.m_it.array_iterator);</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">default</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; <span class="keywordflow">return</span> (m_it.primitive_iterator == other.m_it.primitive_iterator);</div><div class="line"><a name="l06435"></a><span class="lineno"> 6435</span>&#160; }</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;</div><div class="line"><a name="l06440"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a9e4c6e48e3c2f3ff357ef8215b8c8fca.html#a9e4c6e48e3c2f3ff357ef8215b8c8fca"> 6440</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a9e4c6e48e3c2f3ff357ef8215b8c8fca.html#a9e4c6e48e3c2f3ff357ef8215b8c8fca">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; other)<span class="keyword"> const</span></div><div class="line"><a name="l06441"></a><span class="lineno"> 6441</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06442"></a><span class="lineno"> 6442</span>&#160; <span class="keywordflow">return</span> not operator==(other);</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;</div><div class="line"><a name="l06446"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a65f491b515e5967e9c0b40289e3c0ff3.html#a65f491b515e5967e9c0b40289e3c0ff3"> 6446</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a65f491b515e5967e9c0b40289e3c0ff3.html#a65f491b515e5967e9c0b40289e3c0ff3">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; other)<span class="keyword"> const</span></div><div class="line"><a name="l06447"></a><span class="lineno"> 6447</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06448"></a><span class="lineno"> 6448</span>&#160; <span class="comment">// if objects are not the same, the comparison is undefined</span></div><div class="line"><a name="l06449"></a><span class="lineno"> 6449</span>&#160; <span class="keywordflow">if</span> (m_object != other.m_object)</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; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot compare iterators of different containers&quot;</span>);</div><div class="line"><a name="l06452"></a><span class="lineno"> 6452</span>&#160; }</div><div class="line"><a name="l06453"></a><span class="lineno"> 6453</span>&#160;</div><div class="line"><a name="l06454"></a><span class="lineno"> 6454</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06455"></a><span class="lineno"> 6455</span>&#160;</div><div class="line"><a name="l06456"></a><span class="lineno"> 6456</span>&#160; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</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">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</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">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot compare order of object iterators&quot;</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">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</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">return</span> (m_it.array_iterator &lt; other.m_it.array_iterator);</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;</div><div class="line"><a name="l06468"></a><span class="lineno"> 6468</span>&#160; <span class="keywordflow">default</span>:</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; <span class="keywordflow">return</span> (m_it.primitive_iterator &lt; other.m_it.primitive_iterator);</div><div class="line"><a name="l06471"></a><span class="lineno"> 6471</span>&#160; }</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="l06474"></a><span class="lineno"> 6474</span>&#160;</div><div class="line"><a name="l06476"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a6b682f09787eff62f03493d45aa05902.html#a6b682f09787eff62f03493d45aa05902"> 6476</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a6b682f09787eff62f03493d45aa05902.html#a6b682f09787eff62f03493d45aa05902">operator&lt;=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; other)<span class="keyword"> const</span></div><div class="line"><a name="l06477"></a><span class="lineno"> 6477</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06478"></a><span class="lineno"> 6478</span>&#160; <span class="keywordflow">return</span> not other.operator &lt; (*this);</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;</div><div class="line"><a name="l06482"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_acb6cd0ff760933afeb7f93e5207f3646.html#acb6cd0ff760933afeb7f93e5207f3646"> 6482</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_acb6cd0ff760933afeb7f93e5207f3646.html#acb6cd0ff760933afeb7f93e5207f3646">operator&gt;</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; other)<span class="keyword"> const</span></div><div class="line"><a name="l06483"></a><span class="lineno"> 6483</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06484"></a><span class="lineno"> 6484</span>&#160; <span class="keywordflow">return</span> not operator&lt;=(other);</div><div class="line"><a name="l06485"></a><span class="lineno"> 6485</span>&#160; }</div><div class="line"><a name="l06486"></a><span class="lineno"> 6486</span>&#160;</div><div class="line"><a name="l06488"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_af6941c3711dabb2e64960dd57e00d201.html#af6941c3711dabb2e64960dd57e00d201"> 6488</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_af6941c3711dabb2e64960dd57e00d201.html#af6941c3711dabb2e64960dd57e00d201">operator&gt;=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; other)<span class="keyword"> const</span></div><div class="line"><a name="l06489"></a><span class="lineno"> 6489</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06490"></a><span class="lineno"> 6490</span>&#160; <span class="keywordflow">return</span> not operator&lt;(other);</div><div class="line"><a name="l06491"></a><span class="lineno"> 6491</span>&#160; }</div><div class="line"><a name="l06492"></a><span class="lineno"> 6492</span>&#160;</div><div class="line"><a name="l06494"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a0d5820d1dda9dea3bbeb029cacf68522.html#a0d5820d1dda9dea3bbeb029cacf68522"> 6494</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a0d5820d1dda9dea3bbeb029cacf68522.html#a0d5820d1dda9dea3bbeb029cacf68522">operator+=</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> i)</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; assert(m_object != <span class="keyword">nullptr</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; <span class="keywordflow">switch</span> (m_object-&gt;m_type)</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; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</div><div class="line"><a name="l06501"></a><span class="lineno"> 6501</span>&#160; {</div><div class="line"><a name="l06502"></a><span class="lineno"> 6502</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use offsets with object iterators&quot;</span>);</div><div class="line"><a name="l06503"></a><span class="lineno"> 6503</span>&#160; }</div><div class="line"><a name="l06504"></a><span class="lineno"> 6504</span>&#160;</div><div class="line"><a name="l06505"></a><span class="lineno"> 6505</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06506"></a><span class="lineno"> 6506</span>&#160; {</div><div class="line"><a name="l06507"></a><span class="lineno"> 6507</span>&#160; m_it.array_iterator += i;</div><div class="line"><a name="l06508"></a><span class="lineno"> 6508</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06509"></a><span class="lineno"> 6509</span>&#160; }</div><div class="line"><a name="l06510"></a><span class="lineno"> 6510</span>&#160;</div><div class="line"><a name="l06511"></a><span class="lineno"> 6511</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l06512"></a><span class="lineno"> 6512</span>&#160; {</div><div class="line"><a name="l06513"></a><span class="lineno"> 6513</span>&#160; m_it.primitive_iterator += i;</div><div class="line"><a name="l06514"></a><span class="lineno"> 6514</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l06515"></a><span class="lineno"> 6515</span>&#160; }</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;</div><div class="line"><a name="l06518"></a><span class="lineno"> 6518</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06519"></a><span class="lineno"> 6519</span>&#160; }</div><div class="line"><a name="l06520"></a><span class="lineno"> 6520</span>&#160;</div><div class="line"><a name="l06522"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_aefac8f3e390ac917f021761f4a8f8e71.html#aefac8f3e390ac917f021761f4a8f8e71"> 6522</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefac8f3e390ac917f021761f4a8f8e71.html#aefac8f3e390ac917f021761f4a8f8e71">operator-=</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> i)</div><div class="line"><a name="l06523"></a><span class="lineno"> 6523</span>&#160; {</div><div class="line"><a name="l06524"></a><span class="lineno"> 6524</span>&#160; <span class="keywordflow">return</span> operator+=(-i);</div><div class="line"><a name="l06525"></a><span class="lineno"> 6525</span>&#160; }</div><div class="line"><a name="l06526"></a><span class="lineno"> 6526</span>&#160;</div><div class="line"><a name="l06528"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a7a80257f2303210b0a5d056fc0b30b40.html#a7a80257f2303210b0a5d056fc0b30b40"> 6528</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a7a80257f2303210b0a5d056fc0b30b40.html#a7a80257f2303210b0a5d056fc0b30b40">operator+</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> i)</div><div class="line"><a name="l06529"></a><span class="lineno"> 6529</span>&#160; {</div><div class="line"><a name="l06530"></a><span class="lineno"> 6530</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div><div class="line"><a name="l06531"></a><span class="lineno"> 6531</span>&#160; result += i;</div><div class="line"><a name="l06532"></a><span class="lineno"> 6532</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l06533"></a><span class="lineno"> 6533</span>&#160; }</div><div class="line"><a name="l06534"></a><span class="lineno"> 6534</span>&#160;</div><div class="line"><a name="l06536"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_abc4552ba2fe39e7901a83dd6d4dec151.html#abc4552ba2fe39e7901a83dd6d4dec151"> 6536</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_abc4552ba2fe39e7901a83dd6d4dec151.html#abc4552ba2fe39e7901a83dd6d4dec151">operator-</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> i)</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; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div><div class="line"><a name="l06539"></a><span class="lineno"> 6539</span>&#160; result -= i;</div><div class="line"><a name="l06540"></a><span class="lineno"> 6540</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l06541"></a><span class="lineno"> 6541</span>&#160; }</div><div class="line"><a name="l06542"></a><span class="lineno"> 6542</span>&#160;</div><div class="line"><a name="l06544"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a5e4d98a8f95e2eccde8cd48c19efa196.html#a5e4d98a8f95e2eccde8cd48c19efa196"> 6544</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a5e4d98a8f95e2eccde8cd48c19efa196.html#a5e4d98a8f95e2eccde8cd48c19efa196">operator-</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>&amp; other)<span class="keyword"> const</span></div><div class="line"><a name="l06545"></a><span class="lineno"> 6545</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06546"></a><span class="lineno"> 6546</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</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">switch</span> (m_object-&gt;m_type)</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; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</div><div class="line"><a name="l06551"></a><span class="lineno"> 6551</span>&#160; {</div><div class="line"><a name="l06552"></a><span class="lineno"> 6552</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use offsets with object iterators&quot;</span>);</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;</div><div class="line"><a name="l06555"></a><span class="lineno"> 6555</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06556"></a><span class="lineno"> 6556</span>&#160; {</div><div class="line"><a name="l06557"></a><span class="lineno"> 6557</span>&#160; <span class="keywordflow">return</span> m_it.array_iterator - other.m_it.array_iterator;</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">default</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; <span class="keywordflow">return</span> m_it.primitive_iterator - other.m_it.primitive_iterator;</div><div class="line"><a name="l06563"></a><span class="lineno"> 6563</span>&#160; }</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;</div><div class="line"><a name="l06568"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a7bd530bfbbc58ac77308c087120c21fa.html#a7bd530bfbbc58ac77308c087120c21fa"> 6568</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a7bd530bfbbc58ac77308c087120c21fa.html#a7bd530bfbbc58ac77308c087120c21fa">operator[]</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> n)<span class="keyword"> const</span></div><div class="line"><a name="l06569"></a><span class="lineno"> 6569</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06570"></a><span class="lineno"> 6570</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</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">switch</span> (m_object-&gt;m_type)</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; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">basic_json::value_t::object</a>:</div><div class="line"><a name="l06575"></a><span class="lineno"> 6575</span>&#160; {</div><div class="line"><a name="l06576"></a><span class="lineno"> 6576</span>&#160; <span class="keywordflow">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use operator[] for object iterators&quot;</span>);</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;</div><div class="line"><a name="l06579"></a><span class="lineno"> 6579</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">basic_json::value_t::array</a>:</div><div class="line"><a name="l06580"></a><span class="lineno"> 6580</span>&#160; {</div><div class="line"><a name="l06581"></a><span class="lineno"> 6581</span>&#160; <span class="keywordflow">return</span> *(m_it.array_iterator + n);</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="l06584"></a><span class="lineno"> 6584</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522a37a6259cc0c1dae299a7866489dff0bd">basic_json::value_t::null</a>:</div><div class="line"><a name="l06585"></a><span class="lineno"> 6585</span>&#160; {</div><div class="line"><a name="l06586"></a><span class="lineno"> 6586</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;cannot get value&quot;</span>);</div><div class="line"><a name="l06587"></a><span class="lineno"> 6587</span>&#160; }</div><div class="line"><a name="l06588"></a><span class="lineno"> 6588</span>&#160;</div><div class="line"><a name="l06589"></a><span class="lineno"> 6589</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l06590"></a><span class="lineno"> 6590</span>&#160; {</div><div class="line"><a name="l06591"></a><span class="lineno"> 6591</span>&#160; <span class="keywordflow">if</span> (m_it.primitive_iterator == -n)</div><div class="line"><a name="l06592"></a><span class="lineno"> 6592</span>&#160; {</div><div class="line"><a name="l06593"></a><span class="lineno"> 6593</span>&#160; <span class="keywordflow">return</span> *m_object;</div><div class="line"><a name="l06594"></a><span class="lineno"> 6594</span>&#160; }</div><div class="line"><a name="l06595"></a><span class="lineno"> 6595</span>&#160; <span class="keywordflow">else</span></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">throw</span> std::out_of_range(<span class="stringliteral">&quot;cannot get value&quot;</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; }</div><div class="line"><a name="l06600"></a><span class="lineno"> 6600</span>&#160; }</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="l06604"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_a5d4320e24fcb7df041ff2c95d976dba0.html#a5d4320e24fcb7df041ff2c95d976dba0"> 6604</a></span>&#160; <span class="keyword">typename</span> object_t::key_type <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a5d4320e24fcb7df041ff2c95d976dba0.html#a5d4320e24fcb7df041ff2c95d976dba0">key</a>()<span class="keyword"> const</span></div><div class="line"><a name="l06605"></a><span class="lineno"> 6605</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06606"></a><span class="lineno"> 6606</span>&#160; assert(m_object != <span class="keyword">nullptr</span>);</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">if</span> (m_object-&gt;is_object())</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; <span class="keywordflow">return</span> m_it.object_iterator-&gt;first;</div><div class="line"><a name="l06611"></a><span class="lineno"> 6611</span>&#160; }</div><div class="line"><a name="l06612"></a><span class="lineno"> 6612</span>&#160; <span class="keywordflow">else</span></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">throw</span> std::domain_error(<span class="stringliteral">&quot;cannot use key() for non-object iterators&quot;</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; }</div><div class="line"><a name="l06617"></a><span class="lineno"> 6617</span>&#160;</div><div class="line"><a name="l06619"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1const__iterator_ac75e80d30b6169ee2a29ec93fb4d2acd.html#ac75e80d30b6169ee2a29ec93fb4d2acd"> 6619</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_ac75e80d30b6169ee2a29ec93fb4d2acd.html#ac75e80d30b6169ee2a29ec93fb4d2acd">value</a>()<span class="keyword"> const</span></div><div class="line"><a name="l06620"></a><span class="lineno"> 6620</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06621"></a><span class="lineno"> 6621</span>&#160; <span class="keywordflow">return</span> operator*();</div><div class="line"><a name="l06622"></a><span class="lineno"> 6622</span>&#160; }</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; <span class="keyword">private</span>:</div><div class="line"><a name="l06626"></a><span class="lineno"> 6626</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389.html#a1da96fc3054d547e7706d3a2f073f389">pointer</a> m_object = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l06628"></a><span class="lineno"> 6628</span>&#160; internal_iterator m_it = internal_iterator();</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;</div><div class="line"><a name="l06643"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator.html"> 6643</a></span>&#160; <span class="keyword">class </span><a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a></div><div class="line"><a name="l06644"></a><span class="lineno"> 6644</span>&#160; {</div><div class="line"><a name="l06645"></a><span class="lineno"> 6645</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l06646"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_ac48754e4dc48d65d95294bd170dcd857.html#ac48754e4dc48d65d95294bd170dcd857"> 6646</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">base_iterator</a> = <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">const_iterator</a>;</div><div class="line"><a name="l06647"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a3aae1df93a78b201d98e178c1c7d02a7.html#a3aae1df93a78b201d98e178c1c7d02a7"> 6647</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389.html#a1da96fc3054d547e7706d3a2f073f389">pointer</a> = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1basic__json_a9d1b58099dc64695fcf2847ab0b2a7c7.html#a9d1b58099dc64695fcf2847ab0b2a7c7">basic_json::pointer</a>;</div><div class="line"><a name="l06648"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a97aff5d71246774267a81066460dd1cf.html#a97aff5d71246774267a81066460dd1cf"> 6648</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a> = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1basic__json_a3ec8e17be8732fe436e9d6733f52b7a3.html#a3ec8e17be8732fe436e9d6733f52b7a3">basic_json::reference</a>;</div><div class="line"><a name="l06649"></a><span class="lineno"> 6649</span>&#160;</div><div class="line"><a name="l06651"></a><span class="lineno"> 6651</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l06652"></a><span class="lineno"> 6652</span>&#160;</div><div class="line"><a name="l06654"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a085fe0d8cf459b5b1ae7b518b933ae7d.html#a085fe0d8cf459b5b1ae7b518b933ae7d"> 6654</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_a085fe0d8cf459b5b1ae7b518b933ae7d.html#a085fe0d8cf459b5b1ae7b518b933ae7d">iterator</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389.html#a1da96fc3054d547e7706d3a2f073f389">pointer</a> <span class="keywordtype">object</span>) noexcept</div><div class="line"><a name="l06655"></a><span class="lineno"> 6655</span>&#160; : <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">base_iterator</a>(<span class="keywordtype">object</span>)</div><div class="line"><a name="l06656"></a><span class="lineno"> 6656</span>&#160; {}</div><div class="line"><a name="l06657"></a><span class="lineno"> 6657</span>&#160;</div><div class="line"><a name="l06659"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a1de0975e812c83e74d118b3e1063f335.html#a1de0975e812c83e74d118b3e1063f335"> 6659</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_a1de0975e812c83e74d118b3e1063f335.html#a1de0975e812c83e74d118b3e1063f335">iterator</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a>&amp; other) noexcept</div><div class="line"><a name="l06660"></a><span class="lineno"> 6660</span>&#160; : <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator.html">base_iterator</a>(other)</div><div class="line"><a name="l06661"></a><span class="lineno"> 6661</span>&#160; {}</div><div class="line"><a name="l06662"></a><span class="lineno"> 6662</span>&#160;</div><div class="line"><a name="l06664"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a3db892729714c4e7eaf60c00ee96e2e9.html#a3db892729714c4e7eaf60c00ee96e2e9"> 6664</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_a3db892729714c4e7eaf60c00ee96e2e9.html#a3db892729714c4e7eaf60c00ee96e2e9">operator=</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> other) noexcept(</div><div class="line"><a name="l06665"></a><span class="lineno"> 6665</span>&#160; std::is_nothrow_move_constructible&lt;pointer&gt;::value and</div><div class="line"><a name="l06666"></a><span class="lineno"> 6666</span>&#160; std::is_nothrow_move_assignable&lt;pointer&gt;::value and</div><div class="line"><a name="l06667"></a><span class="lineno"> 6667</span>&#160; std::is_nothrow_move_constructible&lt;internal_iterator&gt;::value and</div><div class="line"><a name="l06668"></a><span class="lineno"> 6668</span>&#160; std::is_nothrow_move_assignable&lt;internal_iterator&gt;::value</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; {</div><div class="line"><a name="l06671"></a><span class="lineno"> 6671</span>&#160; base_iterator::operator=(other);</div><div class="line"><a name="l06672"></a><span class="lineno"> 6672</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</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;</div><div class="line"><a name="l06676"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_ab07728b4da636eda0a24e0a51b8b46d7.html#ab07728b4da636eda0a24e0a51b8b46d7"> 6676</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_ab07728b4da636eda0a24e0a51b8b46d7.html#ab07728b4da636eda0a24e0a51b8b46d7">operator*</a>()</div><div class="line"><a name="l06677"></a><span class="lineno"> 6677</span>&#160; {</div><div class="line"><a name="l06678"></a><span class="lineno"> 6678</span>&#160; <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a><span class="keyword">&gt;</span>(base_iterator::operator*());</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;</div><div class="line"><a name="l06682"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_ae58cd597336ad125d9615cff87fcd87e.html#ae58cd597336ad125d9615cff87fcd87e"> 6682</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389.html#a1da96fc3054d547e7706d3a2f073f389">pointer</a> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_ae58cd597336ad125d9615cff87fcd87e.html#ae58cd597336ad125d9615cff87fcd87e">operator-&gt;</a>()</div><div class="line"><a name="l06683"></a><span class="lineno"> 6683</span>&#160; {</div><div class="line"><a name="l06684"></a><span class="lineno"> 6684</span>&#160; <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389.html#a1da96fc3054d547e7706d3a2f073f389">pointer</a><span class="keyword">&gt;</span>(base_iterator::operator-&gt;());</div><div class="line"><a name="l06685"></a><span class="lineno"> 6685</span>&#160; }</div><div class="line"><a name="l06686"></a><span class="lineno"> 6686</span>&#160;</div><div class="line"><a name="l06688"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a2943e49b3d88e6ee5793c5923ab2ede9.html#a2943e49b3d88e6ee5793c5923ab2ede9"> 6688</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_a2943e49b3d88e6ee5793c5923ab2ede9.html#a2943e49b3d88e6ee5793c5923ab2ede9">operator++</a>(<span class="keywordtype">int</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; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> result = *<span class="keyword">this</span>;</div><div class="line"><a name="l06691"></a><span class="lineno"> 6691</span>&#160; base_iterator::operator++();</div><div class="line"><a name="l06692"></a><span class="lineno"> 6692</span>&#160; <span class="keywordflow">return</span> result;</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;</div><div class="line"><a name="l06696"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a050b7fa21051ea57e5b0cc03668b5d4a.html#a050b7fa21051ea57e5b0cc03668b5d4a"> 6696</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_a050b7fa21051ea57e5b0cc03668b5d4a.html#a050b7fa21051ea57e5b0cc03668b5d4a">operator++</a>()</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; base_iterator::operator++();</div><div class="line"><a name="l06699"></a><span class="lineno"> 6699</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</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="l06703"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_ab4f238aa5fcf452b1884b748b0395b1f.html#ab4f238aa5fcf452b1884b748b0395b1f"> 6703</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_ab4f238aa5fcf452b1884b748b0395b1f.html#ab4f238aa5fcf452b1884b748b0395b1f">operator--</a>(<span class="keywordtype">int</span>)</div><div class="line"><a name="l06704"></a><span class="lineno"> 6704</span>&#160; {</div><div class="line"><a name="l06705"></a><span class="lineno"> 6705</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> result = *<span class="keyword">this</span>;</div><div class="line"><a name="l06706"></a><span class="lineno"> 6706</span>&#160; base_iterator::operator--();</div><div class="line"><a name="l06707"></a><span class="lineno"> 6707</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l06708"></a><span class="lineno"> 6708</span>&#160; }</div><div class="line"><a name="l06709"></a><span class="lineno"> 6709</span>&#160;</div><div class="line"><a name="l06711"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_ab3679dc63b3a59edb98b1c2b96d8683c.html#ab3679dc63b3a59edb98b1c2b96d8683c"> 6711</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_ab3679dc63b3a59edb98b1c2b96d8683c.html#ab3679dc63b3a59edb98b1c2b96d8683c">operator--</a>()</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; base_iterator::operator--();</div><div class="line"><a name="l06714"></a><span class="lineno"> 6714</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06715"></a><span class="lineno"> 6715</span>&#160; }</div><div class="line"><a name="l06716"></a><span class="lineno"> 6716</span>&#160;</div><div class="line"><a name="l06718"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_ae0c848dbc0af1cde15771d45d775b27c.html#ae0c848dbc0af1cde15771d45d775b27c"> 6718</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_ae0c848dbc0af1cde15771d45d775b27c.html#ae0c848dbc0af1cde15771d45d775b27c">operator+=</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> i)</div><div class="line"><a name="l06719"></a><span class="lineno"> 6719</span>&#160; {</div><div class="line"><a name="l06720"></a><span class="lineno"> 6720</span>&#160; base_iterator::operator+=(i);</div><div class="line"><a name="l06721"></a><span class="lineno"> 6721</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</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;</div><div class="line"><a name="l06725"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_afe86d48d3e4e5ebdaaec162b3cf0e95c.html#afe86d48d3e4e5ebdaaec162b3cf0e95c"> 6725</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_afe86d48d3e4e5ebdaaec162b3cf0e95c.html#afe86d48d3e4e5ebdaaec162b3cf0e95c">operator-=</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> i)</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; base_iterator::operator-=(i);</div><div class="line"><a name="l06728"></a><span class="lineno"> 6728</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06729"></a><span class="lineno"> 6729</span>&#160; }</div><div class="line"><a name="l06730"></a><span class="lineno"> 6730</span>&#160;</div><div class="line"><a name="l06732"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a56952f8d5702541f0d88e6a764d2ae36.html#a56952f8d5702541f0d88e6a764d2ae36"> 6732</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_a56952f8d5702541f0d88e6a764d2ae36.html#a56952f8d5702541f0d88e6a764d2ae36">operator+</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> i)</div><div class="line"><a name="l06733"></a><span class="lineno"> 6733</span>&#160; {</div><div class="line"><a name="l06734"></a><span class="lineno"> 6734</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div><div class="line"><a name="l06735"></a><span class="lineno"> 6735</span>&#160; result += i;</div><div class="line"><a name="l06736"></a><span class="lineno"> 6736</span>&#160; <span class="keywordflow">return</span> result;</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="l06740"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a790f550ff168095c83c2e459c575916c.html#a790f550ff168095c83c2e459c575916c"> 6740</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_a790f550ff168095c83c2e459c575916c.html#a790f550ff168095c83c2e459c575916c">operator-</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> i)</div><div class="line"><a name="l06741"></a><span class="lineno"> 6741</span>&#160; {</div><div class="line"><a name="l06742"></a><span class="lineno"> 6742</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div><div class="line"><a name="l06743"></a><span class="lineno"> 6743</span>&#160; result -= i;</div><div class="line"><a name="l06744"></a><span class="lineno"> 6744</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l06745"></a><span class="lineno"> 6745</span>&#160; }</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"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a9f3940ac5fb2c6ff8045ed59b8a0866f.html#a9f3940ac5fb2c6ff8045ed59b8a0866f"> 6747</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_a9f3940ac5fb2c6ff8045ed59b8a0866f.html#a9f3940ac5fb2c6ff8045ed59b8a0866f">operator-</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator.html">iterator</a>&amp; other)<span class="keyword"> const</span></div><div class="line"><a name="l06748"></a><span class="lineno"> 6748</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06749"></a><span class="lineno"> 6749</span>&#160; <span class="keywordflow">return</span> base_iterator::operator-(other);</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;</div><div class="line"><a name="l06753"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a7e01532727c10f87926dac4eb8e170f4.html#a7e01532727c10f87926dac4eb8e170f4"> 6753</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_a7e01532727c10f87926dac4eb8e170f4.html#a7e01532727c10f87926dac4eb8e170f4">operator[]</a>(<a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">difference_type</a> n)<span class="keyword"> const</span></div><div class="line"><a name="l06754"></a><span class="lineno"> 6754</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06755"></a><span class="lineno"> 6755</span>&#160; <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a><span class="keyword">&gt;</span>(base_iterator::operator[](n));</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;</div><div class="line"><a name="l06759"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1iterator_a8ffbf287736048e683f58306fdb8701f.html#a8ffbf287736048e683f58306fdb8701f"> 6759</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a> <a class="code" href="classnlohmann_1_1basic__json_1_1iterator_a8ffbf287736048e683f58306fdb8701f.html#a8ffbf287736048e683f58306fdb8701f">value</a>()<span class="keyword"> const</span></div><div class="line"><a name="l06760"></a><span class="lineno"> 6760</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06761"></a><span class="lineno"> 6761</span>&#160; <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">reference</a><span class="keyword">&gt;</span>(base_iterator::value());</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; };</div><div class="line"><a name="l06764"></a><span class="lineno"> 6764</span>&#160;</div><div class="line"><a name="l06782"></a><span class="lineno"> 6782</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Base&gt;</div><div class="line"><a name="l06783"></a><span class="lineno"> 6783</span>&#160; <span class="keyword">class </span><a class="code" href="classnlohmann_1_1basic__json_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="l06784"></a><span class="lineno"> 6784</span>&#160; {</div><div class="line"><a name="l06785"></a><span class="lineno"> 6785</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l06787"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9ebc4c99e6fc90c965af0f39ad2ca70e.html#a9ebc4c99e6fc90c965af0f39ad2ca70e"> 6787</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9ebc4c99e6fc90c965af0f39ad2ca70e.html#a9ebc4c99e6fc90c965af0f39ad2ca70e">base_iterator</a> = std::reverse_iterator&lt;Base&gt;;</div><div class="line"><a name="l06789"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a7265535f39299824f9712a2ca15013c3.html#a7265535f39299824f9712a2ca15013c3"> 6789</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a7265535f39299824f9712a2ca15013c3.html#a7265535f39299824f9712a2ca15013c3">reference</a> = <span class="keyword">typename</span> Base::reference;</div><div class="line"><a name="l06790"></a><span class="lineno"> 6790</span>&#160;</div><div class="line"><a name="l06792"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a7c5e0d3bd0e1a2ba9226b7eb539a53d6.html#a7c5e0d3bd0e1a2ba9226b7eb539a53d6"> 6792</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a7c5e0d3bd0e1a2ba9226b7eb539a53d6.html#a7c5e0d3bd0e1a2ba9226b7eb539a53d6">json_reverse_iterator</a>(<span class="keyword">const</span> <span class="keyword">typename</span> base_iterator::iterator_type&amp; it)</div><div class="line"><a name="l06793"></a><span class="lineno"> 6793</span>&#160; : <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9ebc4c99e6fc90c965af0f39ad2ca70e.html#a9ebc4c99e6fc90c965af0f39ad2ca70e">base_iterator</a>(it)</div><div class="line"><a name="l06794"></a><span class="lineno"> 6794</span>&#160; {}</div><div class="line"><a name="l06795"></a><span class="lineno"> 6795</span>&#160;</div><div class="line"><a name="l06797"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a53407187cceeb3ee5390318713dad827.html#a53407187cceeb3ee5390318713dad827"> 6797</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a53407187cceeb3ee5390318713dad827.html#a53407187cceeb3ee5390318713dad827">json_reverse_iterator</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9ebc4c99e6fc90c965af0f39ad2ca70e.html#a9ebc4c99e6fc90c965af0f39ad2ca70e">base_iterator</a>&amp; it)</div><div class="line"><a name="l06798"></a><span class="lineno"> 6798</span>&#160; : <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9ebc4c99e6fc90c965af0f39ad2ca70e.html#a9ebc4c99e6fc90c965af0f39ad2ca70e">base_iterator</a>(it)</div><div class="line"><a name="l06799"></a><span class="lineno"> 6799</span>&#160; {}</div><div class="line"><a name="l06800"></a><span class="lineno"> 6800</span>&#160;</div><div class="line"><a name="l06802"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a545a8204cfd6836eb85abc3113a0bb28.html#a545a8204cfd6836eb85abc3113a0bb28"> 6802</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a545a8204cfd6836eb85abc3113a0bb28.html#a545a8204cfd6836eb85abc3113a0bb28">operator++</a>(<span class="keywordtype">int</span>)</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; <span class="keywordflow">return</span> base_iterator::operator++(1);</div><div class="line"><a name="l06805"></a><span class="lineno"> 6805</span>&#160; }</div><div class="line"><a name="l06806"></a><span class="lineno"> 6806</span>&#160;</div><div class="line"><a name="l06808"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a4aede52d6ee253a510897518b59e09c0.html#a4aede52d6ee253a510897518b59e09c0"> 6808</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a4aede52d6ee253a510897518b59e09c0.html#a4aede52d6ee253a510897518b59e09c0">operator++</a>()</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; base_iterator::operator++();</div><div class="line"><a name="l06811"></a><span class="lineno"> 6811</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06812"></a><span class="lineno"> 6812</span>&#160; }</div><div class="line"><a name="l06813"></a><span class="lineno"> 6813</span>&#160;</div><div class="line"><a name="l06815"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a693439bffe56a9a8cf53bc4a06b911ff.html#a693439bffe56a9a8cf53bc4a06b911ff"> 6815</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a693439bffe56a9a8cf53bc4a06b911ff.html#a693439bffe56a9a8cf53bc4a06b911ff">operator--</a>(<span class="keywordtype">int</span>)</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">return</span> base_iterator::operator--(1);</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;</div><div class="line"><a name="l06821"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a563a7bd281e9919798d18396107fb05c.html#a563a7bd281e9919798d18396107fb05c"> 6821</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a563a7bd281e9919798d18396107fb05c.html#a563a7bd281e9919798d18396107fb05c">operator--</a>()</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; base_iterator::operator--();</div><div class="line"><a name="l06824"></a><span class="lineno"> 6824</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06825"></a><span class="lineno"> 6825</span>&#160; }</div><div class="line"><a name="l06826"></a><span class="lineno"> 6826</span>&#160;</div><div class="line"><a name="l06828"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9accc9dd9f9033f50c0ab6bcf337ffe0.html#a9accc9dd9f9033f50c0ab6bcf337ffe0"> 6828</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9accc9dd9f9033f50c0ab6bcf337ffe0.html#a9accc9dd9f9033f50c0ab6bcf337ffe0">operator+=</a>(<a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a> i)</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; base_iterator::operator+=(i);</div><div class="line"><a name="l06831"></a><span class="lineno"> 6831</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06832"></a><span class="lineno"> 6832</span>&#160; }</div><div class="line"><a name="l06833"></a><span class="lineno"> 6833</span>&#160;</div><div class="line"><a name="l06835"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a99ee137dab7e5c948457f6a5321b54b1.html#a99ee137dab7e5c948457f6a5321b54b1"> 6835</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a99ee137dab7e5c948457f6a5321b54b1.html#a99ee137dab7e5c948457f6a5321b54b1">operator+</a>(<a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a> i)<span class="keyword"> const</span></div><div class="line"><a name="l06836"></a><span class="lineno"> 6836</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06837"></a><span class="lineno"> 6837</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div><div class="line"><a name="l06838"></a><span class="lineno"> 6838</span>&#160; result += i;</div><div class="line"><a name="l06839"></a><span class="lineno"> 6839</span>&#160; <span class="keywordflow">return</span> result;</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;</div><div class="line"><a name="l06843"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_ac2634bee082633671125e909dffad40a.html#ac2634bee082633671125e909dffad40a"> 6843</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_ac2634bee082633671125e909dffad40a.html#ac2634bee082633671125e909dffad40a">operator-</a>(<a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a> i)<span class="keyword"> const</span></div><div class="line"><a name="l06844"></a><span class="lineno"> 6844</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06845"></a><span class="lineno"> 6845</span>&#160; <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div><div class="line"><a name="l06846"></a><span class="lineno"> 6846</span>&#160; result -= i;</div><div class="line"><a name="l06847"></a><span class="lineno"> 6847</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l06848"></a><span class="lineno"> 6848</span>&#160; }</div><div class="line"><a name="l06849"></a><span class="lineno"> 6849</span>&#160;</div><div class="line"><a name="l06851"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a115fae3dd8ae02669fedae0545ce1cbc.html#a115fae3dd8ae02669fedae0545ce1cbc"> 6851</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a115fae3dd8ae02669fedae0545ce1cbc.html#a115fae3dd8ae02669fedae0545ce1cbc">operator-</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">json_reverse_iterator</a>&amp; other)<span class="keyword"> const</span></div><div class="line"><a name="l06852"></a><span class="lineno"> 6852</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06853"></a><span class="lineno"> 6853</span>&#160; <span class="keywordflow">return</span> this-&gt;base() - other.base();</div><div class="line"><a name="l06854"></a><span class="lineno"> 6854</span>&#160; }</div><div class="line"><a name="l06855"></a><span class="lineno"> 6855</span>&#160;</div><div class="line"><a name="l06857"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_ad4ec2bbb8347e7aa3b58e616fd6c7f40.html#ad4ec2bbb8347e7aa3b58e616fd6c7f40"> 6857</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a7265535f39299824f9712a2ca15013c3.html#a7265535f39299824f9712a2ca15013c3">reference</a> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_ad4ec2bbb8347e7aa3b58e616fd6c7f40.html#ad4ec2bbb8347e7aa3b58e616fd6c7f40">operator[]</a>(<a class="code" href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">difference_type</a> n)<span class="keyword"> const</span></div><div class="line"><a name="l06858"></a><span class="lineno"> 6858</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06859"></a><span class="lineno"> 6859</span>&#160; <span class="keywordflow">return</span> *(this-&gt;operator+(n));</div><div class="line"><a name="l06860"></a><span class="lineno"> 6860</span>&#160; }</div><div class="line"><a name="l06861"></a><span class="lineno"> 6861</span>&#160;</div><div class="line"><a name="l06863"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_acecae6d237fcf14c909fb42b9d2e2955.html#acecae6d237fcf14c909fb42b9d2e2955"> 6863</a></span>&#160; <span class="keyword">typename</span> object_t::key_type <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_acecae6d237fcf14c909fb42b9d2e2955.html#acecae6d237fcf14c909fb42b9d2e2955">key</a>()<span class="keyword"> const</span></div><div class="line"><a name="l06864"></a><span class="lineno"> 6864</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06865"></a><span class="lineno"> 6865</span>&#160; <span class="keyword">auto</span> it = --this-&gt;base();</div><div class="line"><a name="l06866"></a><span class="lineno"> 6866</span>&#160; <span class="keywordflow">return</span> it.key();</div><div class="line"><a name="l06867"></a><span class="lineno"> 6867</span>&#160; }</div><div class="line"><a name="l06868"></a><span class="lineno"> 6868</span>&#160;</div><div class="line"><a name="l06870"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_aca5116682e206dac48f8a56716a3280b.html#aca5116682e206dac48f8a56716a3280b"> 6870</a></span>&#160; <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a7265535f39299824f9712a2ca15013c3.html#a7265535f39299824f9712a2ca15013c3">reference</a> <a class="code" href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_aca5116682e206dac48f8a56716a3280b.html#aca5116682e206dac48f8a56716a3280b">value</a>()<span class="keyword"> const</span></div><div class="line"><a name="l06871"></a><span class="lineno"> 6871</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l06872"></a><span class="lineno"> 6872</span>&#160; <span class="keyword">auto</span> it = --this-&gt;base();</div><div class="line"><a name="l06873"></a><span class="lineno"> 6873</span>&#160; <span class="keywordflow">return</span> it.operator * ();</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; };</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;</div><div class="line"><a name="l06878"></a><span class="lineno"> 6878</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l06880"></a><span class="lineno"> 6880</span>&#160; <span class="comment">// lexer and parser //</span></div><div class="line"><a name="l06882"></a><span class="lineno"> 6882</span>&#160;<span class="comment"></span></div><div class="line"><a name="l06890"></a><span class="lineno"> 6890</span>&#160; <span class="keyword">class </span>lexer</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; <span class="keyword">public</span>:</div><div class="line"><a name="l06894"></a><span class="lineno"> 6894</span>&#160; <span class="keyword">enum class</span> token_type</div><div class="line"><a name="l06895"></a><span class="lineno"> 6895</span>&#160; {</div><div class="line"><a name="l06896"></a><span class="lineno"> 6896</span>&#160; uninitialized, </div><div class="line"><a name="l06897"></a><span class="lineno"> 6897</span>&#160; literal_true, </div><div class="line"><a name="l06898"></a><span class="lineno"> 6898</span>&#160; literal_false, </div><div class="line"><a name="l06899"></a><span class="lineno"> 6899</span>&#160; literal_null, </div><div class="line"><a name="l06900"></a><span class="lineno"> 6900</span>&#160; value_string, </div><div class="line"><a name="l06901"></a><span class="lineno"> 6901</span>&#160; value_number, </div><div class="line"><a name="l06902"></a><span class="lineno"> 6902</span>&#160; begin_array, </div><div class="line"><a name="l06903"></a><span class="lineno"> 6903</span>&#160; begin_object, </div><div class="line"><a name="l06904"></a><span class="lineno"> 6904</span>&#160; end_array, </div><div class="line"><a name="l06905"></a><span class="lineno"> 6905</span>&#160; end_object, </div><div class="line"><a name="l06906"></a><span class="lineno"> 6906</span>&#160; name_separator, </div><div class="line"><a name="l06907"></a><span class="lineno"> 6907</span>&#160; value_separator, </div><div class="line"><a name="l06908"></a><span class="lineno"> 6908</span>&#160; parse_error, </div><div class="line"><a name="l06909"></a><span class="lineno"> 6909</span>&#160; end_of_input </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;</div><div class="line"><a name="l06913"></a><span class="lineno"> 6913</span>&#160; <span class="keyword">using</span> lexer_char_t = <span class="keywordtype">unsigned</span> char;</div><div class="line"><a name="l06914"></a><span class="lineno"> 6914</span>&#160;</div><div class="line"><a name="l06916"></a><span class="lineno"> 6916</span>&#160; <span class="keyword">explicit</span> lexer(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>&amp; s) noexcept</div><div class="line"><a name="l06917"></a><span class="lineno"> 6917</span>&#160; : m_stream(<span class="keyword">nullptr</span>), m_buffer(s)</div><div class="line"><a name="l06918"></a><span class="lineno"> 6918</span>&#160; {</div><div class="line"><a name="l06919"></a><span class="lineno"> 6919</span>&#160; m_content = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>lexer_char_t*<span class="keyword">&gt;</span>(s.c_str());</div><div class="line"><a name="l06920"></a><span class="lineno"> 6920</span>&#160; assert(m_content != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06921"></a><span class="lineno"> 6921</span>&#160; m_start = m_cursor = m_content;</div><div class="line"><a name="l06922"></a><span class="lineno"> 6922</span>&#160; m_limit = m_content + s.size();</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;</div><div class="line"><a name="l06926"></a><span class="lineno"> 6926</span>&#160; <span class="keyword">explicit</span> lexer(std::istream* s) noexcept</div><div class="line"><a name="l06927"></a><span class="lineno"> 6927</span>&#160; : m_stream(s), m_buffer()</div><div class="line"><a name="l06928"></a><span class="lineno"> 6928</span>&#160; {</div><div class="line"><a name="l06929"></a><span class="lineno"> 6929</span>&#160; assert(m_stream != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06930"></a><span class="lineno"> 6930</span>&#160; getline(*m_stream, m_buffer);</div><div class="line"><a name="l06931"></a><span class="lineno"> 6931</span>&#160; m_content = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>lexer_char_t*<span class="keyword">&gt;</span>(m_buffer.c_str());</div><div class="line"><a name="l06932"></a><span class="lineno"> 6932</span>&#160; assert(m_content != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l06933"></a><span class="lineno"> 6933</span>&#160; m_start = m_cursor = m_content;</div><div class="line"><a name="l06934"></a><span class="lineno"> 6934</span>&#160; m_limit = m_content + m_buffer.size();</div><div class="line"><a name="l06935"></a><span class="lineno"> 6935</span>&#160; }</div><div class="line"><a name="l06936"></a><span class="lineno"> 6936</span>&#160;</div><div class="line"><a name="l06938"></a><span class="lineno"> 6938</span>&#160; lexer() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l06939"></a><span class="lineno"> 6939</span>&#160;</div><div class="line"><a name="l06940"></a><span class="lineno"> 6940</span>&#160; <span class="comment">// switch off unwanted functions</span></div><div class="line"><a name="l06941"></a><span class="lineno"> 6941</span>&#160; lexer(<span class="keyword">const</span> lexer&amp;) = <span class="keyword">delete</span>;</div><div class="line"><a name="l06942"></a><span class="lineno"> 6942</span>&#160; lexer operator=(<span class="keyword">const</span> lexer&amp;) = <span class="keyword">delete</span>;</div><div class="line"><a name="l06943"></a><span class="lineno"> 6943</span>&#160;</div><div class="line"><a name="l06959"></a><span class="lineno"> 6959</span>&#160; <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> to_unicode(<span class="keyword">const</span> std::size_t codepoint1,</div><div class="line"><a name="l06960"></a><span class="lineno"> 6960</span>&#160; <span class="keyword">const</span> std::size_t codepoint2 = 0)</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; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> result;</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="comment">// calculate the codepoint from the given code points</span></div><div class="line"><a name="l06965"></a><span class="lineno"> 6965</span>&#160; std::size_t codepoint = codepoint1;</div><div class="line"><a name="l06966"></a><span class="lineno"> 6966</span>&#160;</div><div class="line"><a name="l06967"></a><span class="lineno"> 6967</span>&#160; <span class="comment">// check if codepoint1 is a high surrogate</span></div><div class="line"><a name="l06968"></a><span class="lineno"> 6968</span>&#160; <span class="keywordflow">if</span> (codepoint1 &gt;= 0xD800 and codepoint1 &lt;= 0xDBFF)</div><div class="line"><a name="l06969"></a><span class="lineno"> 6969</span>&#160; {</div><div class="line"><a name="l06970"></a><span class="lineno"> 6970</span>&#160; <span class="comment">// check if codepoint2 is a low surrogate</span></div><div class="line"><a name="l06971"></a><span class="lineno"> 6971</span>&#160; <span class="keywordflow">if</span> (codepoint2 &gt;= 0xDC00 and codepoint2 &lt;= 0xDFFF)</div><div class="line"><a name="l06972"></a><span class="lineno"> 6972</span>&#160; {</div><div class="line"><a name="l06973"></a><span class="lineno"> 6973</span>&#160; codepoint =</div><div class="line"><a name="l06974"></a><span class="lineno"> 6974</span>&#160; <span class="comment">// high surrogate occupies the most significant 22 bits</span></div><div class="line"><a name="l06975"></a><span class="lineno"> 6975</span>&#160; (codepoint1 &lt;&lt; 10)</div><div class="line"><a name="l06976"></a><span class="lineno"> 6976</span>&#160; <span class="comment">// low surrogate occupies the least significant 15 bits</span></div><div class="line"><a name="l06977"></a><span class="lineno"> 6977</span>&#160; + codepoint2</div><div class="line"><a name="l06978"></a><span class="lineno"> 6978</span>&#160; <span class="comment">// there is still the 0xD800, 0xDC00 and 0x10000 noise</span></div><div class="line"><a name="l06979"></a><span class="lineno"> 6979</span>&#160; <span class="comment">// in the result so we have to subtract with:</span></div><div class="line"><a name="l06980"></a><span class="lineno"> 6980</span>&#160; <span class="comment">// (0xD800 &lt;&lt; 10) + DC00 - 0x10000 = 0x35FDC00</span></div><div class="line"><a name="l06981"></a><span class="lineno"> 6981</span>&#160; - 0x35FDC00;</div><div class="line"><a name="l06982"></a><span class="lineno"> 6982</span>&#160; }</div><div class="line"><a name="l06983"></a><span class="lineno"> 6983</span>&#160; <span class="keywordflow">else</span></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="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">&quot;missing or wrong low surrogate&quot;</span>);</div><div class="line"><a name="l06986"></a><span class="lineno"> 6986</span>&#160; }</div><div class="line"><a name="l06987"></a><span class="lineno"> 6987</span>&#160; }</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; <span class="keywordflow">if</span> (codepoint &lt; 0x80)</div><div class="line"><a name="l06990"></a><span class="lineno"> 6990</span>&#160; {</div><div class="line"><a name="l06991"></a><span class="lineno"> 6991</span>&#160; <span class="comment">// 1-byte characters: 0xxxxxxx (ASCII)</span></div><div class="line"><a name="l06992"></a><span class="lineno"> 6992</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(codepoint));</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0x7ff)</div><div class="line"><a name="l06995"></a><span class="lineno"> 6995</span>&#160; {</div><div class="line"><a name="l06996"></a><span class="lineno"> 6996</span>&#160; <span class="comment">// 2-byte characters: 110xxxxx 10xxxxxx</span></div><div class="line"><a name="l06997"></a><span class="lineno"> 6997</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(0xC0 | ((codepoint &gt;&gt; 6) &amp; 0x1F)));</div><div class="line"><a name="l06998"></a><span class="lineno"> 6998</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(0x80 | (codepoint &amp; 0x3F)));</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> <span class="keywordflow">if</span> (codepoint &lt;= 0xffff)</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; <span class="comment">// 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx</span></div><div class="line"><a name="l07003"></a><span class="lineno"> 7003</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(0xE0 | ((codepoint &gt;&gt; 12) &amp; 0x0F)));</div><div class="line"><a name="l07004"></a><span class="lineno"> 7004</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(0x80 | ((codepoint &gt;&gt; 6) &amp; 0x3F)));</div><div class="line"><a name="l07005"></a><span class="lineno"> 7005</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(0x80 | (codepoint &amp; 0x3F)));</div><div class="line"><a name="l07006"></a><span class="lineno"> 7006</span>&#160; }</div><div class="line"><a name="l07007"></a><span class="lineno"> 7007</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0x10ffff)</div><div class="line"><a name="l07008"></a><span class="lineno"> 7008</span>&#160; {</div><div class="line"><a name="l07009"></a><span class="lineno"> 7009</span>&#160; <span class="comment">// 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx</span></div><div class="line"><a name="l07010"></a><span class="lineno"> 7010</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(0xF0 | ((codepoint &gt;&gt; 18) &amp; 0x07)));</div><div class="line"><a name="l07011"></a><span class="lineno"> 7011</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(0x80 | ((codepoint &gt;&gt; 12) &amp; 0x3F)));</div><div class="line"><a name="l07012"></a><span class="lineno"> 7012</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(0x80 | ((codepoint &gt;&gt; 6) &amp; 0x3F)));</div><div class="line"><a name="l07013"></a><span class="lineno"> 7013</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(0x80 | (codepoint &amp; 0x3F)));</div><div class="line"><a name="l07014"></a><span class="lineno"> 7014</span>&#160; }</div><div class="line"><a name="l07015"></a><span class="lineno"> 7015</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07016"></a><span class="lineno"> 7016</span>&#160; {</div><div class="line"><a name="l07017"></a><span class="lineno"> 7017</span>&#160; <span class="keywordflow">throw</span> std::out_of_range(<span class="stringliteral">&quot;code points above 0x10FFFF are invalid&quot;</span>);</div><div class="line"><a name="l07018"></a><span class="lineno"> 7018</span>&#160; }</div><div class="line"><a name="l07019"></a><span class="lineno"> 7019</span>&#160;</div><div class="line"><a name="l07020"></a><span class="lineno"> 7020</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l07021"></a><span class="lineno"> 7021</span>&#160; }</div><div class="line"><a name="l07022"></a><span class="lineno"> 7022</span>&#160;</div><div class="line"><a name="l07024"></a><span class="lineno"> 7024</span>&#160; <span class="keyword">static</span> std::string token_type_name(token_type t)</div><div class="line"><a name="l07025"></a><span class="lineno"> 7025</span>&#160; {</div><div class="line"><a name="l07026"></a><span class="lineno"> 7026</span>&#160; <span class="keywordflow">switch</span> (t)</div><div class="line"><a name="l07027"></a><span class="lineno"> 7027</span>&#160; {</div><div class="line"><a name="l07028"></a><span class="lineno"> 7028</span>&#160; <span class="keywordflow">case</span> token_type::uninitialized:</div><div class="line"><a name="l07029"></a><span class="lineno"> 7029</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&lt;uninitialized&gt;&quot;</span>;</div><div class="line"><a name="l07030"></a><span class="lineno"> 7030</span>&#160; <span class="keywordflow">case</span> token_type::literal_true:</div><div class="line"><a name="l07031"></a><span class="lineno"> 7031</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;true literal&quot;</span>;</div><div class="line"><a name="l07032"></a><span class="lineno"> 7032</span>&#160; <span class="keywordflow">case</span> token_type::literal_false:</div><div class="line"><a name="l07033"></a><span class="lineno"> 7033</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;false literal&quot;</span>;</div><div class="line"><a name="l07034"></a><span class="lineno"> 7034</span>&#160; <span class="keywordflow">case</span> token_type::literal_null:</div><div class="line"><a name="l07035"></a><span class="lineno"> 7035</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;null literal&quot;</span>;</div><div class="line"><a name="l07036"></a><span class="lineno"> 7036</span>&#160; <span class="keywordflow">case</span> token_type::value_string:</div><div class="line"><a name="l07037"></a><span class="lineno"> 7037</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;string literal&quot;</span>;</div><div class="line"><a name="l07038"></a><span class="lineno"> 7038</span>&#160; <span class="keywordflow">case</span> token_type::value_number:</div><div class="line"><a name="l07039"></a><span class="lineno"> 7039</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;number literal&quot;</span>;</div><div class="line"><a name="l07040"></a><span class="lineno"> 7040</span>&#160; <span class="keywordflow">case</span> token_type::begin_array:</div><div class="line"><a name="l07041"></a><span class="lineno"> 7041</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;[&#39;&quot;</span>;</div><div class="line"><a name="l07042"></a><span class="lineno"> 7042</span>&#160; <span class="keywordflow">case</span> token_type::begin_object:</div><div class="line"><a name="l07043"></a><span class="lineno"> 7043</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;{&#39;&quot;</span>;</div><div class="line"><a name="l07044"></a><span class="lineno"> 7044</span>&#160; <span class="keywordflow">case</span> token_type::end_array:</div><div class="line"><a name="l07045"></a><span class="lineno"> 7045</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;]&#39;&quot;</span>;</div><div class="line"><a name="l07046"></a><span class="lineno"> 7046</span>&#160; <span class="keywordflow">case</span> token_type::end_object:</div><div class="line"><a name="l07047"></a><span class="lineno"> 7047</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;}&#39;&quot;</span>;</div><div class="line"><a name="l07048"></a><span class="lineno"> 7048</span>&#160; <span class="keywordflow">case</span> token_type::name_separator:</div><div class="line"><a name="l07049"></a><span class="lineno"> 7049</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;:&#39;&quot;</span>;</div><div class="line"><a name="l07050"></a><span class="lineno"> 7050</span>&#160; <span class="keywordflow">case</span> token_type::value_separator:</div><div class="line"><a name="l07051"></a><span class="lineno"> 7051</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&#39;,&#39;&quot;</span>;</div><div class="line"><a name="l07052"></a><span class="lineno"> 7052</span>&#160; <span class="keywordflow">case</span> token_type::parse_error:</div><div class="line"><a name="l07053"></a><span class="lineno"> 7053</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&lt;parse error&gt;&quot;</span>;</div><div class="line"><a name="l07054"></a><span class="lineno"> 7054</span>&#160; <span class="keywordflow">case</span> token_type::end_of_input:</div><div class="line"><a name="l07055"></a><span class="lineno"> 7055</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;end of input&quot;</span>;</div><div class="line"><a name="l07056"></a><span class="lineno"> 7056</span>&#160; <span class="keywordflow">default</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; <span class="comment">// catch non-enum values</span></div><div class="line"><a name="l07059"></a><span class="lineno"> 7059</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;unknown token&quot;</span>; <span class="comment">// LCOV_EXCL_LINE</span></div><div class="line"><a name="l07060"></a><span class="lineno"> 7060</span>&#160; }</div><div class="line"><a name="l07061"></a><span class="lineno"> 7061</span>&#160; }</div><div class="line"><a name="l07062"></a><span class="lineno"> 7062</span>&#160; }</div><div class="line"><a name="l07063"></a><span class="lineno"> 7063</span>&#160;</div><div class="line"><a name="l07074"></a><span class="lineno"> 7074</span>&#160; token_type scan() noexcept</div><div class="line"><a name="l07075"></a><span class="lineno"> 7075</span>&#160; {</div><div class="line"><a name="l07076"></a><span class="lineno"> 7076</span>&#160; <span class="comment">// pointer for backtracking information</span></div><div class="line"><a name="l07077"></a><span class="lineno"> 7077</span>&#160; m_marker = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l07078"></a><span class="lineno"> 7078</span>&#160;</div><div class="line"><a name="l07079"></a><span class="lineno"> 7079</span>&#160; <span class="comment">// remember the begin of the token</span></div><div class="line"><a name="l07080"></a><span class="lineno"> 7080</span>&#160; m_start = m_cursor;</div><div class="line"><a name="l07081"></a><span class="lineno"> 7081</span>&#160; assert(m_start != <span class="keyword">nullptr</span>);</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;</div><div class="line"><a name="l07084"></a><span class="lineno"> 7084</span>&#160; {</div><div class="line"><a name="l07085"></a><span class="lineno"> 7085</span>&#160; lexer_char_t yych;</div><div class="line"><a name="l07086"></a><span class="lineno"> 7086</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yyaccept = 0;</div><div class="line"><a name="l07087"></a><span class="lineno"> 7087</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> yybm[] =</div><div class="line"><a name="l07088"></a><span class="lineno"> 7088</span>&#160; {</div><div class="line"><a name="l07089"></a><span class="lineno"> 7089</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l07090"></a><span class="lineno"> 7090</span>&#160; 0, 32, 32, 0, 0, 32, 0, 0,</div><div class="line"><a name="l07091"></a><span class="lineno"> 7091</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07092"></a><span class="lineno"> 7092</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07093"></a><span class="lineno"> 7093</span>&#160; 160, 128, 0, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07094"></a><span class="lineno"> 7094</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07095"></a><span class="lineno"> 7095</span>&#160; 192, 192, 192, 192, 192, 192, 192, 192,</div><div class="line"><a name="l07096"></a><span class="lineno"> 7096</span>&#160; 192, 192, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07097"></a><span class="lineno"> 7097</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07098"></a><span class="lineno"> 7098</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07099"></a><span class="lineno"> 7099</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07100"></a><span class="lineno"> 7100</span>&#160; 128, 128, 128, 128, 0, 128, 128, 128,</div><div class="line"><a name="l07101"></a><span class="lineno"> 7101</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07102"></a><span class="lineno"> 7102</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07103"></a><span class="lineno"> 7103</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07104"></a><span class="lineno"> 7104</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07105"></a><span class="lineno"> 7105</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07106"></a><span class="lineno"> 7106</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07107"></a><span class="lineno"> 7107</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07108"></a><span class="lineno"> 7108</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07109"></a><span class="lineno"> 7109</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07110"></a><span class="lineno"> 7110</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07111"></a><span class="lineno"> 7111</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07112"></a><span class="lineno"> 7112</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07113"></a><span class="lineno"> 7113</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07114"></a><span class="lineno"> 7114</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07115"></a><span class="lineno"> 7115</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07116"></a><span class="lineno"> 7116</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07117"></a><span class="lineno"> 7117</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07118"></a><span class="lineno"> 7118</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07119"></a><span class="lineno"> 7119</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</div><div class="line"><a name="l07120"></a><span class="lineno"> 7120</span>&#160; 128, 128, 128, 128, 128, 128, 128, 128,</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="keywordflow">if</span> ((m_limit - m_cursor) &lt; 5)</div><div class="line"><a name="l07123"></a><span class="lineno"> 7123</span>&#160; {</div><div class="line"><a name="l07124"></a><span class="lineno"> 7124</span>&#160; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></div><div class="line"><a name="l07125"></a><span class="lineno"> 7125</span>&#160; }</div><div class="line"><a name="l07126"></a><span class="lineno"> 7126</span>&#160; yych = *m_cursor;</div><div class="line"><a name="l07127"></a><span class="lineno"> 7127</span>&#160; <span class="keywordflow">if</span> (yybm[0 + yych] &amp; 32)</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; <span class="keywordflow">goto</span> basic_json_parser_6;</div><div class="line"><a name="l07130"></a><span class="lineno"> 7130</span>&#160; }</div><div class="line"><a name="l07131"></a><span class="lineno"> 7131</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;\\&#39;</span>)</div><div class="line"><a name="l07132"></a><span class="lineno"> 7132</span>&#160; {</div><div class="line"><a name="l07133"></a><span class="lineno"> 7133</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;-&#39;</span>)</div><div class="line"><a name="l07134"></a><span class="lineno"> 7134</span>&#160; {</div><div class="line"><a name="l07135"></a><span class="lineno"> 7135</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;&quot;&#39;</span>)</div><div class="line"><a name="l07136"></a><span class="lineno"> 7136</span>&#160; {</div><div class="line"><a name="l07137"></a><span class="lineno"> 7137</span>&#160; <span class="keywordflow">if</span> (yych &lt;= 0x00)</div><div class="line"><a name="l07138"></a><span class="lineno"> 7138</span>&#160; {</div><div class="line"><a name="l07139"></a><span class="lineno"> 7139</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_2;</div><div class="line"><a name="l07140"></a><span class="lineno"> 7140</span>&#160; }</div><div class="line"><a name="l07141"></a><span class="lineno"> 7141</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;!&#39;</span>)</div><div class="line"><a name="l07142"></a><span class="lineno"> 7142</span>&#160; {</div><div class="line"><a name="l07143"></a><span class="lineno"> 7143</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_4;</div><div class="line"><a name="l07144"></a><span class="lineno"> 7144</span>&#160; }</div><div class="line"><a name="l07145"></a><span class="lineno"> 7145</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_9;</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="keywordflow">else</span></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="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;+&#39;</span>)</div><div class="line"><a name="l07150"></a><span class="lineno"> 7150</span>&#160; {</div><div class="line"><a name="l07151"></a><span class="lineno"> 7151</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_4;</div><div class="line"><a name="l07152"></a><span class="lineno"> 7152</span>&#160; }</div><div class="line"><a name="l07153"></a><span class="lineno"> 7153</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;,&#39;</span>)</div><div class="line"><a name="l07154"></a><span class="lineno"> 7154</span>&#160; {</div><div class="line"><a name="l07155"></a><span class="lineno"> 7155</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_10;</div><div class="line"><a name="l07156"></a><span class="lineno"> 7156</span>&#160; }</div><div class="line"><a name="l07157"></a><span class="lineno"> 7157</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_12;</div><div class="line"><a name="l07158"></a><span class="lineno"> 7158</span>&#160; }</div><div class="line"><a name="l07159"></a><span class="lineno"> 7159</span>&#160; }</div><div class="line"><a name="l07160"></a><span class="lineno"> 7160</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07161"></a><span class="lineno"> 7161</span>&#160; {</div><div class="line"><a name="l07162"></a><span class="lineno"> 7162</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;9&#39;</span>)</div><div class="line"><a name="l07163"></a><span class="lineno"> 7163</span>&#160; {</div><div class="line"><a name="l07164"></a><span class="lineno"> 7164</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</div><div class="line"><a name="l07165"></a><span class="lineno"> 7165</span>&#160; {</div><div class="line"><a name="l07166"></a><span class="lineno"> 7166</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_4;</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="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;0&#39;</span>)</div><div class="line"><a name="l07169"></a><span class="lineno"> 7169</span>&#160; {</div><div class="line"><a name="l07170"></a><span class="lineno"> 7170</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_13;</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; <span class="keywordflow">goto</span> basic_json_parser_15;</div><div class="line"><a name="l07173"></a><span class="lineno"> 7173</span>&#160; }</div><div class="line"><a name="l07174"></a><span class="lineno"> 7174</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07175"></a><span class="lineno"> 7175</span>&#160; {</div><div class="line"><a name="l07176"></a><span class="lineno"> 7176</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;:&#39;</span>)</div><div class="line"><a name="l07177"></a><span class="lineno"> 7177</span>&#160; {</div><div class="line"><a name="l07178"></a><span class="lineno"> 7178</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_17;</div><div class="line"><a name="l07179"></a><span class="lineno"> 7179</span>&#160; }</div><div class="line"><a name="l07180"></a><span class="lineno"> 7180</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;[&#39;</span>)</div><div class="line"><a name="l07181"></a><span class="lineno"> 7181</span>&#160; {</div><div class="line"><a name="l07182"></a><span class="lineno"> 7182</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_19;</div><div class="line"><a name="l07183"></a><span class="lineno"> 7183</span>&#160; }</div><div class="line"><a name="l07184"></a><span class="lineno"> 7184</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_4;</div><div class="line"><a name="l07185"></a><span class="lineno"> 7185</span>&#160; }</div><div class="line"><a name="l07186"></a><span class="lineno"> 7186</span>&#160; }</div><div class="line"><a name="l07187"></a><span class="lineno"> 7187</span>&#160; }</div><div class="line"><a name="l07188"></a><span class="lineno"> 7188</span>&#160; <span class="keywordflow">else</span></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; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;t&#39;</span>)</div><div class="line"><a name="l07191"></a><span class="lineno"> 7191</span>&#160; {</div><div class="line"><a name="l07192"></a><span class="lineno"> 7192</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;f&#39;</span>)</div><div class="line"><a name="l07193"></a><span class="lineno"> 7193</span>&#160; {</div><div class="line"><a name="l07194"></a><span class="lineno"> 7194</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;]&#39;</span>)</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">goto</span> basic_json_parser_21;</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">if</span> (yych &lt;= <span class="charliteral">&#39;e&#39;</span>)</div><div class="line"><a name="l07199"></a><span class="lineno"> 7199</span>&#160; {</div><div class="line"><a name="l07200"></a><span class="lineno"> 7200</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_4;</div><div class="line"><a name="l07201"></a><span class="lineno"> 7201</span>&#160; }</div><div class="line"><a name="l07202"></a><span class="lineno"> 7202</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_23;</div><div class="line"><a name="l07203"></a><span class="lineno"> 7203</span>&#160; }</div><div class="line"><a name="l07204"></a><span class="lineno"> 7204</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07205"></a><span class="lineno"> 7205</span>&#160; {</div><div class="line"><a name="l07206"></a><span class="lineno"> 7206</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;n&#39;</span>)</div><div class="line"><a name="l07207"></a><span class="lineno"> 7207</span>&#160; {</div><div class="line"><a name="l07208"></a><span class="lineno"> 7208</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_24;</div><div class="line"><a name="l07209"></a><span class="lineno"> 7209</span>&#160; }</div><div class="line"><a name="l07210"></a><span class="lineno"> 7210</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;s&#39;</span>)</div><div class="line"><a name="l07211"></a><span class="lineno"> 7211</span>&#160; {</div><div class="line"><a name="l07212"></a><span class="lineno"> 7212</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_4;</div><div class="line"><a name="l07213"></a><span class="lineno"> 7213</span>&#160; }</div><div class="line"><a name="l07214"></a><span class="lineno"> 7214</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_25;</div><div class="line"><a name="l07215"></a><span class="lineno"> 7215</span>&#160; }</div><div class="line"><a name="l07216"></a><span class="lineno"> 7216</span>&#160; }</div><div class="line"><a name="l07217"></a><span class="lineno"> 7217</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07218"></a><span class="lineno"> 7218</span>&#160; {</div><div class="line"><a name="l07219"></a><span class="lineno"> 7219</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;|&#39;</span>)</div><div class="line"><a name="l07220"></a><span class="lineno"> 7220</span>&#160; {</div><div class="line"><a name="l07221"></a><span class="lineno"> 7221</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;{&#39;</span>)</div><div class="line"><a name="l07222"></a><span class="lineno"> 7222</span>&#160; {</div><div class="line"><a name="l07223"></a><span class="lineno"> 7223</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_26;</div><div class="line"><a name="l07224"></a><span class="lineno"> 7224</span>&#160; }</div><div class="line"><a name="l07225"></a><span class="lineno"> 7225</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_4;</div><div class="line"><a name="l07226"></a><span class="lineno"> 7226</span>&#160; }</div><div class="line"><a name="l07227"></a><span class="lineno"> 7227</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07228"></a><span class="lineno"> 7228</span>&#160; {</div><div class="line"><a name="l07229"></a><span class="lineno"> 7229</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;}&#39;</span>)</div><div class="line"><a name="l07230"></a><span class="lineno"> 7230</span>&#160; {</div><div class="line"><a name="l07231"></a><span class="lineno"> 7231</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_28;</div><div class="line"><a name="l07232"></a><span class="lineno"> 7232</span>&#160; }</div><div class="line"><a name="l07233"></a><span class="lineno"> 7233</span>&#160; <span class="keywordflow">if</span> (yych == 0xEF)</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; <span class="keywordflow">goto</span> basic_json_parser_30;</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"> 7237</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_4;</div><div class="line"><a name="l07238"></a><span class="lineno"> 7238</span>&#160; }</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; }</div><div class="line"><a name="l07241"></a><span class="lineno"> 7241</span>&#160;basic_json_parser_2:</div><div class="line"><a name="l07242"></a><span class="lineno"> 7242</span>&#160; ++m_cursor;</div><div class="line"><a name="l07243"></a><span class="lineno"> 7243</span>&#160; {</div><div class="line"><a name="l07244"></a><span class="lineno"> 7244</span>&#160; <span class="keywordflow">return</span> token_type::end_of_input;</div><div class="line"><a name="l07245"></a><span class="lineno"> 7245</span>&#160; }</div><div class="line"><a name="l07246"></a><span class="lineno"> 7246</span>&#160;basic_json_parser_4:</div><div class="line"><a name="l07247"></a><span class="lineno"> 7247</span>&#160; ++m_cursor;</div><div class="line"><a name="l07248"></a><span class="lineno"> 7248</span>&#160;basic_json_parser_5:</div><div class="line"><a name="l07249"></a><span class="lineno"> 7249</span>&#160; {</div><div class="line"><a name="l07250"></a><span class="lineno"> 7250</span>&#160; <span class="keywordflow">return</span> token_type::parse_error;</div><div class="line"><a name="l07251"></a><span class="lineno"> 7251</span>&#160; }</div><div class="line"><a name="l07252"></a><span class="lineno"> 7252</span>&#160;basic_json_parser_6:</div><div class="line"><a name="l07253"></a><span class="lineno"> 7253</span>&#160; ++m_cursor;</div><div class="line"><a name="l07254"></a><span class="lineno"> 7254</span>&#160; <span class="keywordflow">if</span> (m_limit &lt;= m_cursor)</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; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></div><div class="line"><a name="l07257"></a><span class="lineno"> 7257</span>&#160; }</div><div class="line"><a name="l07258"></a><span class="lineno"> 7258</span>&#160; yych = *m_cursor;</div><div class="line"><a name="l07259"></a><span class="lineno"> 7259</span>&#160; <span class="keywordflow">if</span> (yybm[0 + yych] &amp; 32)</div><div class="line"><a name="l07260"></a><span class="lineno"> 7260</span>&#160; {</div><div class="line"><a name="l07261"></a><span class="lineno"> 7261</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_6;</div><div class="line"><a name="l07262"></a><span class="lineno"> 7262</span>&#160; }</div><div class="line"><a name="l07263"></a><span class="lineno"> 7263</span>&#160; {</div><div class="line"><a name="l07264"></a><span class="lineno"> 7264</span>&#160; <span class="keywordflow">return</span> scan();</div><div class="line"><a name="l07265"></a><span class="lineno"> 7265</span>&#160; }</div><div class="line"><a name="l07266"></a><span class="lineno"> 7266</span>&#160;basic_json_parser_9:</div><div class="line"><a name="l07267"></a><span class="lineno"> 7267</span>&#160; yyaccept = 0;</div><div class="line"><a name="l07268"></a><span class="lineno"> 7268</span>&#160; yych = *(m_marker = ++m_cursor);</div><div class="line"><a name="l07269"></a><span class="lineno"> 7269</span>&#160; <span class="keywordflow">if</span> (yych &lt;= 0x0F)</div><div class="line"><a name="l07270"></a><span class="lineno"> 7270</span>&#160; {</div><div class="line"><a name="l07271"></a><span class="lineno"> 7271</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_5;</div><div class="line"><a name="l07272"></a><span class="lineno"> 7272</span>&#160; }</div><div class="line"><a name="l07273"></a><span class="lineno"> 7273</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_32;</div><div class="line"><a name="l07274"></a><span class="lineno"> 7274</span>&#160;basic_json_parser_10:</div><div class="line"><a name="l07275"></a><span class="lineno"> 7275</span>&#160; ++m_cursor;</div><div class="line"><a name="l07276"></a><span class="lineno"> 7276</span>&#160; {</div><div class="line"><a name="l07277"></a><span class="lineno"> 7277</span>&#160; <span class="keywordflow">return</span> token_type::value_separator;</div><div class="line"><a name="l07278"></a><span class="lineno"> 7278</span>&#160; }</div><div class="line"><a name="l07279"></a><span class="lineno"> 7279</span>&#160;basic_json_parser_12:</div><div class="line"><a name="l07280"></a><span class="lineno"> 7280</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07281"></a><span class="lineno"> 7281</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</div><div class="line"><a name="l07282"></a><span class="lineno"> 7282</span>&#160; {</div><div class="line"><a name="l07283"></a><span class="lineno"> 7283</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_5;</div><div class="line"><a name="l07284"></a><span class="lineno"> 7284</span>&#160; }</div><div class="line"><a name="l07285"></a><span class="lineno"> 7285</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;0&#39;</span>)</div><div class="line"><a name="l07286"></a><span class="lineno"> 7286</span>&#160; {</div><div class="line"><a name="l07287"></a><span class="lineno"> 7287</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_13;</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; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;9&#39;</span>)</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">goto</span> basic_json_parser_15;</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; <span class="keywordflow">goto</span> basic_json_parser_5;</div><div class="line"><a name="l07294"></a><span class="lineno"> 7294</span>&#160;basic_json_parser_13:</div><div class="line"><a name="l07295"></a><span class="lineno"> 7295</span>&#160; yyaccept = 1;</div><div class="line"><a name="l07296"></a><span class="lineno"> 7296</span>&#160; yych = *(m_marker = ++m_cursor);</div><div class="line"><a name="l07297"></a><span class="lineno"> 7297</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;D&#39;</span>)</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">if</span> (yych == <span class="charliteral">&#39;.&#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; <span class="keywordflow">goto</span> basic_json_parser_37;</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; }</div><div class="line"><a name="l07304"></a><span class="lineno"> 7304</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07305"></a><span class="lineno"> 7305</span>&#160; {</div><div class="line"><a name="l07306"></a><span class="lineno"> 7306</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;E&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_38;</div><div class="line"><a name="l07309"></a><span class="lineno"> 7309</span>&#160; }</div><div class="line"><a name="l07310"></a><span class="lineno"> 7310</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;e&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_38;</div><div class="line"><a name="l07313"></a><span class="lineno"> 7313</span>&#160; }</div><div class="line"><a name="l07314"></a><span class="lineno"> 7314</span>&#160; }</div><div class="line"><a name="l07315"></a><span class="lineno"> 7315</span>&#160;basic_json_parser_14:</div><div class="line"><a name="l07316"></a><span class="lineno"> 7316</span>&#160; {</div><div class="line"><a name="l07317"></a><span class="lineno"> 7317</span>&#160; <span class="keywordflow">return</span> token_type::value_number;</div><div class="line"><a name="l07318"></a><span class="lineno"> 7318</span>&#160; }</div><div class="line"><a name="l07319"></a><span class="lineno"> 7319</span>&#160;basic_json_parser_15:</div><div class="line"><a name="l07320"></a><span class="lineno"> 7320</span>&#160; yyaccept = 1;</div><div class="line"><a name="l07321"></a><span class="lineno"> 7321</span>&#160; m_marker = ++m_cursor;</div><div class="line"><a name="l07322"></a><span class="lineno"> 7322</span>&#160; <span class="keywordflow">if</span> ((m_limit - m_cursor) &lt; 3)</div><div class="line"><a name="l07323"></a><span class="lineno"> 7323</span>&#160; {</div><div class="line"><a name="l07324"></a><span class="lineno"> 7324</span>&#160; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></div><div class="line"><a name="l07325"></a><span class="lineno"> 7325</span>&#160; }</div><div class="line"><a name="l07326"></a><span class="lineno"> 7326</span>&#160; yych = *m_cursor;</div><div class="line"><a name="l07327"></a><span class="lineno"> 7327</span>&#160; <span class="keywordflow">if</span> (yybm[0 + yych] &amp; 64)</div><div class="line"><a name="l07328"></a><span class="lineno"> 7328</span>&#160; {</div><div class="line"><a name="l07329"></a><span class="lineno"> 7329</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_15;</div><div class="line"><a name="l07330"></a><span class="lineno"> 7330</span>&#160; }</div><div class="line"><a name="l07331"></a><span class="lineno"> 7331</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;D&#39;</span>)</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">if</span> (yych == <span class="charliteral">&#39;.&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_37;</div><div class="line"><a name="l07336"></a><span class="lineno"> 7336</span>&#160; }</div><div class="line"><a name="l07337"></a><span class="lineno"> 7337</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_14;</div><div class="line"><a name="l07338"></a><span class="lineno"> 7338</span>&#160; }</div><div class="line"><a name="l07339"></a><span class="lineno"> 7339</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07340"></a><span class="lineno"> 7340</span>&#160; {</div><div class="line"><a name="l07341"></a><span class="lineno"> 7341</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;E&#39;</span>)</div><div class="line"><a name="l07342"></a><span class="lineno"> 7342</span>&#160; {</div><div class="line"><a name="l07343"></a><span class="lineno"> 7343</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_38;</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; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;e&#39;</span>)</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">goto</span> basic_json_parser_38;</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; <span class="keywordflow">goto</span> basic_json_parser_14;</div><div class="line"><a name="l07350"></a><span class="lineno"> 7350</span>&#160; }</div><div class="line"><a name="l07351"></a><span class="lineno"> 7351</span>&#160;basic_json_parser_17:</div><div class="line"><a name="l07352"></a><span class="lineno"> 7352</span>&#160; ++m_cursor;</div><div class="line"><a name="l07353"></a><span class="lineno"> 7353</span>&#160; {</div><div class="line"><a name="l07354"></a><span class="lineno"> 7354</span>&#160; <span class="keywordflow">return</span> token_type::name_separator;</div><div class="line"><a name="l07355"></a><span class="lineno"> 7355</span>&#160; }</div><div class="line"><a name="l07356"></a><span class="lineno"> 7356</span>&#160;basic_json_parser_19:</div><div class="line"><a name="l07357"></a><span class="lineno"> 7357</span>&#160; ++m_cursor;</div><div class="line"><a name="l07358"></a><span class="lineno"> 7358</span>&#160; {</div><div class="line"><a name="l07359"></a><span class="lineno"> 7359</span>&#160; <span class="keywordflow">return</span> token_type::begin_array;</div><div class="line"><a name="l07360"></a><span class="lineno"> 7360</span>&#160; }</div><div class="line"><a name="l07361"></a><span class="lineno"> 7361</span>&#160;basic_json_parser_21:</div><div class="line"><a name="l07362"></a><span class="lineno"> 7362</span>&#160; ++m_cursor;</div><div class="line"><a name="l07363"></a><span class="lineno"> 7363</span>&#160; {</div><div class="line"><a name="l07364"></a><span class="lineno"> 7364</span>&#160; <span class="keywordflow">return</span> token_type::end_array;</div><div class="line"><a name="l07365"></a><span class="lineno"> 7365</span>&#160; }</div><div class="line"><a name="l07366"></a><span class="lineno"> 7366</span>&#160;basic_json_parser_23:</div><div class="line"><a name="l07367"></a><span class="lineno"> 7367</span>&#160; yyaccept = 0;</div><div class="line"><a name="l07368"></a><span class="lineno"> 7368</span>&#160; yych = *(m_marker = ++m_cursor);</div><div class="line"><a name="l07369"></a><span class="lineno"> 7369</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;a&#39;</span>)</div><div class="line"><a name="l07370"></a><span class="lineno"> 7370</span>&#160; {</div><div class="line"><a name="l07371"></a><span class="lineno"> 7371</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_39;</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">goto</span> basic_json_parser_5;</div><div class="line"><a name="l07374"></a><span class="lineno"> 7374</span>&#160;basic_json_parser_24:</div><div class="line"><a name="l07375"></a><span class="lineno"> 7375</span>&#160; yyaccept = 0;</div><div class="line"><a name="l07376"></a><span class="lineno"> 7376</span>&#160; yych = *(m_marker = ++m_cursor);</div><div class="line"><a name="l07377"></a><span class="lineno"> 7377</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;u&#39;</span>)</div><div class="line"><a name="l07378"></a><span class="lineno"> 7378</span>&#160; {</div><div class="line"><a name="l07379"></a><span class="lineno"> 7379</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_40;</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; <span class="keywordflow">goto</span> basic_json_parser_5;</div><div class="line"><a name="l07382"></a><span class="lineno"> 7382</span>&#160;basic_json_parser_25:</div><div class="line"><a name="l07383"></a><span class="lineno"> 7383</span>&#160; yyaccept = 0;</div><div class="line"><a name="l07384"></a><span class="lineno"> 7384</span>&#160; yych = *(m_marker = ++m_cursor);</div><div class="line"><a name="l07385"></a><span class="lineno"> 7385</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;r&#39;</span>)</div><div class="line"><a name="l07386"></a><span class="lineno"> 7386</span>&#160; {</div><div class="line"><a name="l07387"></a><span class="lineno"> 7387</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_41;</div><div class="line"><a name="l07388"></a><span class="lineno"> 7388</span>&#160; }</div><div class="line"><a name="l07389"></a><span class="lineno"> 7389</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_5;</div><div class="line"><a name="l07390"></a><span class="lineno"> 7390</span>&#160;basic_json_parser_26:</div><div class="line"><a name="l07391"></a><span class="lineno"> 7391</span>&#160; ++m_cursor;</div><div class="line"><a name="l07392"></a><span class="lineno"> 7392</span>&#160; {</div><div class="line"><a name="l07393"></a><span class="lineno"> 7393</span>&#160; <span class="keywordflow">return</span> token_type::begin_object;</div><div class="line"><a name="l07394"></a><span class="lineno"> 7394</span>&#160; }</div><div class="line"><a name="l07395"></a><span class="lineno"> 7395</span>&#160;basic_json_parser_28:</div><div class="line"><a name="l07396"></a><span class="lineno"> 7396</span>&#160; ++m_cursor;</div><div class="line"><a name="l07397"></a><span class="lineno"> 7397</span>&#160; {</div><div class="line"><a name="l07398"></a><span class="lineno"> 7398</span>&#160; <span class="keywordflow">return</span> token_type::end_object;</div><div class="line"><a name="l07399"></a><span class="lineno"> 7399</span>&#160; }</div><div class="line"><a name="l07400"></a><span class="lineno"> 7400</span>&#160;basic_json_parser_30:</div><div class="line"><a name="l07401"></a><span class="lineno"> 7401</span>&#160; yyaccept = 0;</div><div class="line"><a name="l07402"></a><span class="lineno"> 7402</span>&#160; yych = *(m_marker = ++m_cursor);</div><div class="line"><a name="l07403"></a><span class="lineno"> 7403</span>&#160; <span class="keywordflow">if</span> (yych == 0xBB)</div><div class="line"><a name="l07404"></a><span class="lineno"> 7404</span>&#160; {</div><div class="line"><a name="l07405"></a><span class="lineno"> 7405</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_42;</div><div class="line"><a name="l07406"></a><span class="lineno"> 7406</span>&#160; }</div><div class="line"><a name="l07407"></a><span class="lineno"> 7407</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_5;</div><div class="line"><a name="l07408"></a><span class="lineno"> 7408</span>&#160;basic_json_parser_31:</div><div class="line"><a name="l07409"></a><span class="lineno"> 7409</span>&#160; ++m_cursor;</div><div class="line"><a name="l07410"></a><span class="lineno"> 7410</span>&#160; <span class="keywordflow">if</span> (m_limit &lt;= m_cursor)</div><div class="line"><a name="l07411"></a><span class="lineno"> 7411</span>&#160; {</div><div class="line"><a name="l07412"></a><span class="lineno"> 7412</span>&#160; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></div><div class="line"><a name="l07413"></a><span class="lineno"> 7413</span>&#160; }</div><div class="line"><a name="l07414"></a><span class="lineno"> 7414</span>&#160; yych = *m_cursor;</div><div class="line"><a name="l07415"></a><span class="lineno"> 7415</span>&#160;basic_json_parser_32:</div><div class="line"><a name="l07416"></a><span class="lineno"> 7416</span>&#160; <span class="keywordflow">if</span> (yybm[0 + yych] &amp; 128)</div><div class="line"><a name="l07417"></a><span class="lineno"> 7417</span>&#160; {</div><div class="line"><a name="l07418"></a><span class="lineno"> 7418</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_31;</div><div class="line"><a name="l07419"></a><span class="lineno"> 7419</span>&#160; }</div><div class="line"><a name="l07420"></a><span class="lineno"> 7420</span>&#160; <span class="keywordflow">if</span> (yych &lt;= 0x0F)</div><div class="line"><a name="l07421"></a><span class="lineno"> 7421</span>&#160; {</div><div class="line"><a name="l07422"></a><span class="lineno"> 7422</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07423"></a><span class="lineno"> 7423</span>&#160; }</div><div class="line"><a name="l07424"></a><span class="lineno"> 7424</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;&quot;&#39;</span>)</div><div class="line"><a name="l07425"></a><span class="lineno"> 7425</span>&#160; {</div><div class="line"><a name="l07426"></a><span class="lineno"> 7426</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_34;</div><div class="line"><a name="l07427"></a><span class="lineno"> 7427</span>&#160; }</div><div class="line"><a name="l07428"></a><span class="lineno"> 7428</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_36;</div><div class="line"><a name="l07429"></a><span class="lineno"> 7429</span>&#160;basic_json_parser_33:</div><div class="line"><a name="l07430"></a><span class="lineno"> 7430</span>&#160; m_cursor = m_marker;</div><div class="line"><a name="l07431"></a><span class="lineno"> 7431</span>&#160; <span class="keywordflow">if</span> (yyaccept == 0)</div><div class="line"><a name="l07432"></a><span class="lineno"> 7432</span>&#160; {</div><div class="line"><a name="l07433"></a><span class="lineno"> 7433</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_5;</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">else</span></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; <span class="keywordflow">goto</span> basic_json_parser_14;</div><div class="line"><a name="l07438"></a><span class="lineno"> 7438</span>&#160; }</div><div class="line"><a name="l07439"></a><span class="lineno"> 7439</span>&#160;basic_json_parser_34:</div><div class="line"><a name="l07440"></a><span class="lineno"> 7440</span>&#160; ++m_cursor;</div><div class="line"><a name="l07441"></a><span class="lineno"> 7441</span>&#160; {</div><div class="line"><a name="l07442"></a><span class="lineno"> 7442</span>&#160; <span class="keywordflow">return</span> token_type::value_string;</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;basic_json_parser_36:</div><div class="line"><a name="l07445"></a><span class="lineno"> 7445</span>&#160; ++m_cursor;</div><div class="line"><a name="l07446"></a><span class="lineno"> 7446</span>&#160; <span class="keywordflow">if</span> (m_limit &lt;= m_cursor)</div><div class="line"><a name="l07447"></a><span class="lineno"> 7447</span>&#160; {</div><div class="line"><a name="l07448"></a><span class="lineno"> 7448</span>&#160; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></div><div class="line"><a name="l07449"></a><span class="lineno"> 7449</span>&#160; }</div><div class="line"><a name="l07450"></a><span class="lineno"> 7450</span>&#160; yych = *m_cursor;</div><div class="line"><a name="l07451"></a><span class="lineno"> 7451</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;e&#39;</span>)</div><div class="line"><a name="l07452"></a><span class="lineno"> 7452</span>&#160; {</div><div class="line"><a name="l07453"></a><span class="lineno"> 7453</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</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="keywordflow">if</span> (yych == <span class="charliteral">&#39;&quot;&#39;</span>)</div><div class="line"><a name="l07456"></a><span class="lineno"> 7456</span>&#160; {</div><div class="line"><a name="l07457"></a><span class="lineno"> 7457</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_31;</div><div class="line"><a name="l07458"></a><span class="lineno"> 7458</span>&#160; }</div><div class="line"><a name="l07459"></a><span class="lineno"> 7459</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;.&#39;</span>)</div><div class="line"><a name="l07460"></a><span class="lineno"> 7460</span>&#160; {</div><div class="line"><a name="l07461"></a><span class="lineno"> 7461</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07462"></a><span class="lineno"> 7462</span>&#160; }</div><div class="line"><a name="l07463"></a><span class="lineno"> 7463</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_31;</div><div class="line"><a name="l07464"></a><span class="lineno"> 7464</span>&#160; }</div><div class="line"><a name="l07465"></a><span class="lineno"> 7465</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07466"></a><span class="lineno"> 7466</span>&#160; {</div><div class="line"><a name="l07467"></a><span class="lineno"> 7467</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;\\&#39;</span>)</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">if</span> (yych &lt;= <span class="charliteral">&#39;[&#39;</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; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07472"></a><span class="lineno"> 7472</span>&#160; }</div><div class="line"><a name="l07473"></a><span class="lineno"> 7473</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_31;</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; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;b&#39;</span>)</div><div class="line"><a name="l07478"></a><span class="lineno"> 7478</span>&#160; {</div><div class="line"><a name="l07479"></a><span class="lineno"> 7479</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_31;</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">goto</span> basic_json_parser_33;</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; }</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; <span class="keywordflow">else</span></div><div class="line"><a name="l07486"></a><span class="lineno"> 7486</span>&#160; {</div><div class="line"><a name="l07487"></a><span class="lineno"> 7487</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;q&#39;</span>)</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; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;f&#39;</span>)</div><div class="line"><a name="l07490"></a><span class="lineno"> 7490</span>&#160; {</div><div class="line"><a name="l07491"></a><span class="lineno"> 7491</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_31;</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="keywordflow">if</span> (yych == <span class="charliteral">&#39;n&#39;</span>)</div><div class="line"><a name="l07494"></a><span class="lineno"> 7494</span>&#160; {</div><div class="line"><a name="l07495"></a><span class="lineno"> 7495</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_31;</div><div class="line"><a name="l07496"></a><span class="lineno"> 7496</span>&#160; }</div><div class="line"><a name="l07497"></a><span class="lineno"> 7497</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</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></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="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;s&#39;</span>)</div><div class="line"><a name="l07502"></a><span class="lineno"> 7502</span>&#160; {</div><div class="line"><a name="l07503"></a><span class="lineno"> 7503</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;r&#39;</span>)</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">goto</span> basic_json_parser_31;</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="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07508"></a><span class="lineno"> 7508</span>&#160; }</div><div class="line"><a name="l07509"></a><span class="lineno"> 7509</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07510"></a><span class="lineno"> 7510</span>&#160; {</div><div class="line"><a name="l07511"></a><span class="lineno"> 7511</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;t&#39;</span>)</div><div class="line"><a name="l07512"></a><span class="lineno"> 7512</span>&#160; {</div><div class="line"><a name="l07513"></a><span class="lineno"> 7513</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_31;</div><div class="line"><a name="l07514"></a><span class="lineno"> 7514</span>&#160; }</div><div class="line"><a name="l07515"></a><span class="lineno"> 7515</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;u&#39;</span>)</div><div class="line"><a name="l07516"></a><span class="lineno"> 7516</span>&#160; {</div><div class="line"><a name="l07517"></a><span class="lineno"> 7517</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_43;</div><div class="line"><a name="l07518"></a><span class="lineno"> 7518</span>&#160; }</div><div class="line"><a name="l07519"></a><span class="lineno"> 7519</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</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; }</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;basic_json_parser_37:</div><div class="line"><a name="l07524"></a><span class="lineno"> 7524</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07525"></a><span class="lineno"> 7525</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</div><div class="line"><a name="l07526"></a><span class="lineno"> 7526</span>&#160; {</div><div class="line"><a name="l07527"></a><span class="lineno"> 7527</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</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; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;9&#39;</span>)</div><div class="line"><a name="l07530"></a><span class="lineno"> 7530</span>&#160; {</div><div class="line"><a name="l07531"></a><span class="lineno"> 7531</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_44;</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="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07534"></a><span class="lineno"> 7534</span>&#160;basic_json_parser_38:</div><div class="line"><a name="l07535"></a><span class="lineno"> 7535</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07536"></a><span class="lineno"> 7536</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;,&#39;</span>)</div><div class="line"><a name="l07537"></a><span class="lineno"> 7537</span>&#160; {</div><div class="line"><a name="l07538"></a><span class="lineno"> 7538</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;+&#39;</span>)</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">goto</span> basic_json_parser_46;</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; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07543"></a><span class="lineno"> 7543</span>&#160; }</div><div class="line"><a name="l07544"></a><span class="lineno"> 7544</span>&#160; <span class="keywordflow">else</span></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">if</span> (yych &lt;= <span class="charliteral">&#39;-&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_46;</div><div class="line"><a name="l07549"></a><span class="lineno"> 7549</span>&#160; }</div><div class="line"><a name="l07550"></a><span class="lineno"> 7550</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</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">goto</span> basic_json_parser_33;</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; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;9&#39;</span>)</div><div class="line"><a name="l07555"></a><span class="lineno"> 7555</span>&#160; {</div><div class="line"><a name="l07556"></a><span class="lineno"> 7556</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_47;</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">goto</span> basic_json_parser_33;</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;basic_json_parser_39:</div><div class="line"><a name="l07561"></a><span class="lineno"> 7561</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07562"></a><span class="lineno"> 7562</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;l&#39;</span>)</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">goto</span> basic_json_parser_49;</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; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07567"></a><span class="lineno"> 7567</span>&#160;basic_json_parser_40:</div><div class="line"><a name="l07568"></a><span class="lineno"> 7568</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07569"></a><span class="lineno"> 7569</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;l&#39;</span>)</div><div class="line"><a name="l07570"></a><span class="lineno"> 7570</span>&#160; {</div><div class="line"><a name="l07571"></a><span class="lineno"> 7571</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_50;</div><div class="line"><a name="l07572"></a><span class="lineno"> 7572</span>&#160; }</div><div class="line"><a name="l07573"></a><span class="lineno"> 7573</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07574"></a><span class="lineno"> 7574</span>&#160;basic_json_parser_41:</div><div class="line"><a name="l07575"></a><span class="lineno"> 7575</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07576"></a><span class="lineno"> 7576</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;u&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_51;</div><div class="line"><a name="l07579"></a><span class="lineno"> 7579</span>&#160; }</div><div class="line"><a name="l07580"></a><span class="lineno"> 7580</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07581"></a><span class="lineno"> 7581</span>&#160;basic_json_parser_42:</div><div class="line"><a name="l07582"></a><span class="lineno"> 7582</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07583"></a><span class="lineno"> 7583</span>&#160; <span class="keywordflow">if</span> (yych == 0xBF)</div><div class="line"><a name="l07584"></a><span class="lineno"> 7584</span>&#160; {</div><div class="line"><a name="l07585"></a><span class="lineno"> 7585</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_52;</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; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07588"></a><span class="lineno"> 7588</span>&#160;basic_json_parser_43:</div><div class="line"><a name="l07589"></a><span class="lineno"> 7589</span>&#160; ++m_cursor;</div><div class="line"><a name="l07590"></a><span class="lineno"> 7590</span>&#160; <span class="keywordflow">if</span> (m_limit &lt;= m_cursor)</div><div class="line"><a name="l07591"></a><span class="lineno"> 7591</span>&#160; {</div><div class="line"><a name="l07592"></a><span class="lineno"> 7592</span>&#160; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></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; yych = *m_cursor;</div><div class="line"><a name="l07595"></a><span class="lineno"> 7595</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;@&#39;</span>)</div><div class="line"><a name="l07596"></a><span class="lineno"> 7596</span>&#160; {</div><div class="line"><a name="l07597"></a><span class="lineno"> 7597</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07600"></a><span class="lineno"> 7600</span>&#160; }</div><div class="line"><a name="l07601"></a><span class="lineno"> 7601</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;9&#39;</span>)</div><div class="line"><a name="l07602"></a><span class="lineno"> 7602</span>&#160; {</div><div class="line"><a name="l07603"></a><span class="lineno"> 7603</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_54;</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; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07606"></a><span class="lineno"> 7606</span>&#160; }</div><div class="line"><a name="l07607"></a><span class="lineno"> 7607</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07608"></a><span class="lineno"> 7608</span>&#160; {</div><div class="line"><a name="l07609"></a><span class="lineno"> 7609</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;F&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_54;</div><div class="line"><a name="l07612"></a><span class="lineno"> 7612</span>&#160; }</div><div class="line"><a name="l07613"></a><span class="lineno"> 7613</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;`&#39;</span>)</div><div class="line"><a name="l07614"></a><span class="lineno"> 7614</span>&#160; {</div><div class="line"><a name="l07615"></a><span class="lineno"> 7615</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</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; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;f&#39;</span>)</div><div class="line"><a name="l07618"></a><span class="lineno"> 7618</span>&#160; {</div><div class="line"><a name="l07619"></a><span class="lineno"> 7619</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_54;</div><div class="line"><a name="l07620"></a><span class="lineno"> 7620</span>&#160; }</div><div class="line"><a name="l07621"></a><span class="lineno"> 7621</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</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;basic_json_parser_44:</div><div class="line"><a name="l07624"></a><span class="lineno"> 7624</span>&#160; yyaccept = 1;</div><div class="line"><a name="l07625"></a><span class="lineno"> 7625</span>&#160; m_marker = ++m_cursor;</div><div class="line"><a name="l07626"></a><span class="lineno"> 7626</span>&#160; <span class="keywordflow">if</span> ((m_limit - m_cursor) &lt; 3)</div><div class="line"><a name="l07627"></a><span class="lineno"> 7627</span>&#160; {</div><div class="line"><a name="l07628"></a><span class="lineno"> 7628</span>&#160; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></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; yych = *m_cursor;</div><div class="line"><a name="l07631"></a><span class="lineno"> 7631</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;D&#39;</span>)</div><div class="line"><a name="l07632"></a><span class="lineno"> 7632</span>&#160; {</div><div class="line"><a name="l07633"></a><span class="lineno"> 7633</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_14;</div><div class="line"><a name="l07636"></a><span class="lineno"> 7636</span>&#160; }</div><div class="line"><a name="l07637"></a><span class="lineno"> 7637</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;9&#39;</span>)</div><div class="line"><a name="l07638"></a><span class="lineno"> 7638</span>&#160; {</div><div class="line"><a name="l07639"></a><span class="lineno"> 7639</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_44;</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; <span class="keywordflow">goto</span> basic_json_parser_14;</div><div class="line"><a name="l07642"></a><span class="lineno"> 7642</span>&#160; }</div><div class="line"><a name="l07643"></a><span class="lineno"> 7643</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07644"></a><span class="lineno"> 7644</span>&#160; {</div><div class="line"><a name="l07645"></a><span class="lineno"> 7645</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;E&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_38;</div><div class="line"><a name="l07648"></a><span class="lineno"> 7648</span>&#160; }</div><div class="line"><a name="l07649"></a><span class="lineno"> 7649</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;e&#39;</span>)</div><div class="line"><a name="l07650"></a><span class="lineno"> 7650</span>&#160; {</div><div class="line"><a name="l07651"></a><span class="lineno"> 7651</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_38;</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; <span class="keywordflow">goto</span> basic_json_parser_14;</div><div class="line"><a name="l07654"></a><span class="lineno"> 7654</span>&#160; }</div><div class="line"><a name="l07655"></a><span class="lineno"> 7655</span>&#160;basic_json_parser_46:</div><div class="line"><a name="l07656"></a><span class="lineno"> 7656</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07657"></a><span class="lineno"> 7657</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07660"></a><span class="lineno"> 7660</span>&#160; }</div><div class="line"><a name="l07661"></a><span class="lineno"> 7661</span>&#160; <span class="keywordflow">if</span> (yych &gt;= <span class="charliteral">&#39;:&#39;</span>)</div><div class="line"><a name="l07662"></a><span class="lineno"> 7662</span>&#160; {</div><div class="line"><a name="l07663"></a><span class="lineno"> 7663</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</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;basic_json_parser_47:</div><div class="line"><a name="l07666"></a><span class="lineno"> 7666</span>&#160; ++m_cursor;</div><div class="line"><a name="l07667"></a><span class="lineno"> 7667</span>&#160; <span class="keywordflow">if</span> (m_limit &lt;= m_cursor)</div><div class="line"><a name="l07668"></a><span class="lineno"> 7668</span>&#160; {</div><div class="line"><a name="l07669"></a><span class="lineno"> 7669</span>&#160; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></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; yych = *m_cursor;</div><div class="line"><a name="l07672"></a><span class="lineno"> 7672</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_14;</div><div class="line"><a name="l07675"></a><span class="lineno"> 7675</span>&#160; }</div><div class="line"><a name="l07676"></a><span class="lineno"> 7676</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;9&#39;</span>)</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">goto</span> basic_json_parser_47;</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; <span class="keywordflow">goto</span> basic_json_parser_14;</div><div class="line"><a name="l07681"></a><span class="lineno"> 7681</span>&#160;basic_json_parser_49:</div><div class="line"><a name="l07682"></a><span class="lineno"> 7682</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07683"></a><span class="lineno"> 7683</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;s&#39;</span>)</div><div class="line"><a name="l07684"></a><span class="lineno"> 7684</span>&#160; {</div><div class="line"><a name="l07685"></a><span class="lineno"> 7685</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_55;</div><div class="line"><a name="l07686"></a><span class="lineno"> 7686</span>&#160; }</div><div class="line"><a name="l07687"></a><span class="lineno"> 7687</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07688"></a><span class="lineno"> 7688</span>&#160;basic_json_parser_50:</div><div class="line"><a name="l07689"></a><span class="lineno"> 7689</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07690"></a><span class="lineno"> 7690</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;l&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_56;</div><div class="line"><a name="l07693"></a><span class="lineno"> 7693</span>&#160; }</div><div class="line"><a name="l07694"></a><span class="lineno"> 7694</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07695"></a><span class="lineno"> 7695</span>&#160;basic_json_parser_51:</div><div class="line"><a name="l07696"></a><span class="lineno"> 7696</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07697"></a><span class="lineno"> 7697</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;e&#39;</span>)</div><div class="line"><a name="l07698"></a><span class="lineno"> 7698</span>&#160; {</div><div class="line"><a name="l07699"></a><span class="lineno"> 7699</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_58;</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; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07702"></a><span class="lineno"> 7702</span>&#160;basic_json_parser_52:</div><div class="line"><a name="l07703"></a><span class="lineno"> 7703</span>&#160; ++m_cursor;</div><div class="line"><a name="l07704"></a><span class="lineno"> 7704</span>&#160; {</div><div class="line"><a name="l07705"></a><span class="lineno"> 7705</span>&#160; <span class="keywordflow">return</span> scan();</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;basic_json_parser_54:</div><div class="line"><a name="l07708"></a><span class="lineno"> 7708</span>&#160; ++m_cursor;</div><div class="line"><a name="l07709"></a><span class="lineno"> 7709</span>&#160; <span class="keywordflow">if</span> (m_limit &lt;= m_cursor)</div><div class="line"><a name="l07710"></a><span class="lineno"> 7710</span>&#160; {</div><div class="line"><a name="l07711"></a><span class="lineno"> 7711</span>&#160; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></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; yych = *m_cursor;</div><div class="line"><a name="l07714"></a><span class="lineno"> 7714</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;@&#39;</span>)</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; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</div><div class="line"><a name="l07717"></a><span class="lineno"> 7717</span>&#160; {</div><div class="line"><a name="l07718"></a><span class="lineno"> 7718</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</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">if</span> (yych &lt;= <span class="charliteral">&#39;9&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_60;</div><div class="line"><a name="l07723"></a><span class="lineno"> 7723</span>&#160; }</div><div class="line"><a name="l07724"></a><span class="lineno"> 7724</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</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="keywordflow">else</span></div><div class="line"><a name="l07727"></a><span class="lineno"> 7727</span>&#160; {</div><div class="line"><a name="l07728"></a><span class="lineno"> 7728</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;F&#39;</span>)</div><div class="line"><a name="l07729"></a><span class="lineno"> 7729</span>&#160; {</div><div class="line"><a name="l07730"></a><span class="lineno"> 7730</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_60;</div><div class="line"><a name="l07731"></a><span class="lineno"> 7731</span>&#160; }</div><div class="line"><a name="l07732"></a><span class="lineno"> 7732</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;`&#39;</span>)</div><div class="line"><a name="l07733"></a><span class="lineno"> 7733</span>&#160; {</div><div class="line"><a name="l07734"></a><span class="lineno"> 7734</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07735"></a><span class="lineno"> 7735</span>&#160; }</div><div class="line"><a name="l07736"></a><span class="lineno"> 7736</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;f&#39;</span>)</div><div class="line"><a name="l07737"></a><span class="lineno"> 7737</span>&#160; {</div><div class="line"><a name="l07738"></a><span class="lineno"> 7738</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_60;</div><div class="line"><a name="l07739"></a><span class="lineno"> 7739</span>&#160; }</div><div class="line"><a name="l07740"></a><span class="lineno"> 7740</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07741"></a><span class="lineno"> 7741</span>&#160; }</div><div class="line"><a name="l07742"></a><span class="lineno"> 7742</span>&#160;basic_json_parser_55:</div><div class="line"><a name="l07743"></a><span class="lineno"> 7743</span>&#160; yych = *++m_cursor;</div><div class="line"><a name="l07744"></a><span class="lineno"> 7744</span>&#160; <span class="keywordflow">if</span> (yych == <span class="charliteral">&#39;e&#39;</span>)</div><div class="line"><a name="l07745"></a><span class="lineno"> 7745</span>&#160; {</div><div class="line"><a name="l07746"></a><span class="lineno"> 7746</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_61;</div><div class="line"><a name="l07747"></a><span class="lineno"> 7747</span>&#160; }</div><div class="line"><a name="l07748"></a><span class="lineno"> 7748</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07749"></a><span class="lineno"> 7749</span>&#160;basic_json_parser_56:</div><div class="line"><a name="l07750"></a><span class="lineno"> 7750</span>&#160; ++m_cursor;</div><div class="line"><a name="l07751"></a><span class="lineno"> 7751</span>&#160; {</div><div class="line"><a name="l07752"></a><span class="lineno"> 7752</span>&#160; <span class="keywordflow">return</span> token_type::literal_null;</div><div class="line"><a name="l07753"></a><span class="lineno"> 7753</span>&#160; }</div><div class="line"><a name="l07754"></a><span class="lineno"> 7754</span>&#160;basic_json_parser_58:</div><div class="line"><a name="l07755"></a><span class="lineno"> 7755</span>&#160; ++m_cursor;</div><div class="line"><a name="l07756"></a><span class="lineno"> 7756</span>&#160; {</div><div class="line"><a name="l07757"></a><span class="lineno"> 7757</span>&#160; <span class="keywordflow">return</span> token_type::literal_true;</div><div class="line"><a name="l07758"></a><span class="lineno"> 7758</span>&#160; }</div><div class="line"><a name="l07759"></a><span class="lineno"> 7759</span>&#160;basic_json_parser_60:</div><div class="line"><a name="l07760"></a><span class="lineno"> 7760</span>&#160; ++m_cursor;</div><div class="line"><a name="l07761"></a><span class="lineno"> 7761</span>&#160; <span class="keywordflow">if</span> (m_limit &lt;= m_cursor)</div><div class="line"><a name="l07762"></a><span class="lineno"> 7762</span>&#160; {</div><div class="line"><a name="l07763"></a><span class="lineno"> 7763</span>&#160; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></div><div class="line"><a name="l07764"></a><span class="lineno"> 7764</span>&#160; }</div><div class="line"><a name="l07765"></a><span class="lineno"> 7765</span>&#160; yych = *m_cursor;</div><div class="line"><a name="l07766"></a><span class="lineno"> 7766</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;@&#39;</span>)</div><div class="line"><a name="l07767"></a><span class="lineno"> 7767</span>&#160; {</div><div class="line"><a name="l07768"></a><span class="lineno"> 7768</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</div><div class="line"><a name="l07769"></a><span class="lineno"> 7769</span>&#160; {</div><div class="line"><a name="l07770"></a><span class="lineno"> 7770</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07771"></a><span class="lineno"> 7771</span>&#160; }</div><div class="line"><a name="l07772"></a><span class="lineno"> 7772</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;9&#39;</span>)</div><div class="line"><a name="l07773"></a><span class="lineno"> 7773</span>&#160; {</div><div class="line"><a name="l07774"></a><span class="lineno"> 7774</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_63;</div><div class="line"><a name="l07775"></a><span class="lineno"> 7775</span>&#160; }</div><div class="line"><a name="l07776"></a><span class="lineno"> 7776</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07777"></a><span class="lineno"> 7777</span>&#160; }</div><div class="line"><a name="l07778"></a><span class="lineno"> 7778</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07779"></a><span class="lineno"> 7779</span>&#160; {</div><div class="line"><a name="l07780"></a><span class="lineno"> 7780</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;F&#39;</span>)</div><div class="line"><a name="l07781"></a><span class="lineno"> 7781</span>&#160; {</div><div class="line"><a name="l07782"></a><span class="lineno"> 7782</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_63;</div><div class="line"><a name="l07783"></a><span class="lineno"> 7783</span>&#160; }</div><div class="line"><a name="l07784"></a><span class="lineno"> 7784</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;`&#39;</span>)</div><div class="line"><a name="l07785"></a><span class="lineno"> 7785</span>&#160; {</div><div class="line"><a name="l07786"></a><span class="lineno"> 7786</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07787"></a><span class="lineno"> 7787</span>&#160; }</div><div class="line"><a name="l07788"></a><span class="lineno"> 7788</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;f&#39;</span>)</div><div class="line"><a name="l07789"></a><span class="lineno"> 7789</span>&#160; {</div><div class="line"><a name="l07790"></a><span class="lineno"> 7790</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_63;</div><div class="line"><a name="l07791"></a><span class="lineno"> 7791</span>&#160; }</div><div class="line"><a name="l07792"></a><span class="lineno"> 7792</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07793"></a><span class="lineno"> 7793</span>&#160; }</div><div class="line"><a name="l07794"></a><span class="lineno"> 7794</span>&#160;basic_json_parser_61:</div><div class="line"><a name="l07795"></a><span class="lineno"> 7795</span>&#160; ++m_cursor;</div><div class="line"><a name="l07796"></a><span class="lineno"> 7796</span>&#160; {</div><div class="line"><a name="l07797"></a><span class="lineno"> 7797</span>&#160; <span class="keywordflow">return</span> token_type::literal_false;</div><div class="line"><a name="l07798"></a><span class="lineno"> 7798</span>&#160; }</div><div class="line"><a name="l07799"></a><span class="lineno"> 7799</span>&#160;basic_json_parser_63:</div><div class="line"><a name="l07800"></a><span class="lineno"> 7800</span>&#160; ++m_cursor;</div><div class="line"><a name="l07801"></a><span class="lineno"> 7801</span>&#160; <span class="keywordflow">if</span> (m_limit &lt;= m_cursor)</div><div class="line"><a name="l07802"></a><span class="lineno"> 7802</span>&#160; {</div><div class="line"><a name="l07803"></a><span class="lineno"> 7803</span>&#160; yyfill(); <span class="comment">// LCOV_EXCL_LINE;</span></div><div class="line"><a name="l07804"></a><span class="lineno"> 7804</span>&#160; }</div><div class="line"><a name="l07805"></a><span class="lineno"> 7805</span>&#160; yych = *m_cursor;</div><div class="line"><a name="l07806"></a><span class="lineno"> 7806</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;@&#39;</span>)</div><div class="line"><a name="l07807"></a><span class="lineno"> 7807</span>&#160; {</div><div class="line"><a name="l07808"></a><span class="lineno"> 7808</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;/&#39;</span>)</div><div class="line"><a name="l07809"></a><span class="lineno"> 7809</span>&#160; {</div><div class="line"><a name="l07810"></a><span class="lineno"> 7810</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07811"></a><span class="lineno"> 7811</span>&#160; }</div><div class="line"><a name="l07812"></a><span class="lineno"> 7812</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;9&#39;</span>)</div><div class="line"><a name="l07813"></a><span class="lineno"> 7813</span>&#160; {</div><div class="line"><a name="l07814"></a><span class="lineno"> 7814</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_31;</div><div class="line"><a name="l07815"></a><span class="lineno"> 7815</span>&#160; }</div><div class="line"><a name="l07816"></a><span class="lineno"> 7816</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07817"></a><span class="lineno"> 7817</span>&#160; }</div><div class="line"><a name="l07818"></a><span class="lineno"> 7818</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07819"></a><span class="lineno"> 7819</span>&#160; {</div><div class="line"><a name="l07820"></a><span class="lineno"> 7820</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;F&#39;</span>)</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; <span class="keywordflow">goto</span> basic_json_parser_31;</div><div class="line"><a name="l07823"></a><span class="lineno"> 7823</span>&#160; }</div><div class="line"><a name="l07824"></a><span class="lineno"> 7824</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;`&#39;</span>)</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="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07827"></a><span class="lineno"> 7827</span>&#160; }</div><div class="line"><a name="l07828"></a><span class="lineno"> 7828</span>&#160; <span class="keywordflow">if</span> (yych &lt;= <span class="charliteral">&#39;f&#39;</span>)</div><div class="line"><a name="l07829"></a><span class="lineno"> 7829</span>&#160; {</div><div class="line"><a name="l07830"></a><span class="lineno"> 7830</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_31;</div><div class="line"><a name="l07831"></a><span class="lineno"> 7831</span>&#160; }</div><div class="line"><a name="l07832"></a><span class="lineno"> 7832</span>&#160; <span class="keywordflow">goto</span> basic_json_parser_33;</div><div class="line"><a name="l07833"></a><span class="lineno"> 7833</span>&#160; }</div><div class="line"><a name="l07834"></a><span class="lineno"> 7834</span>&#160; }</div><div class="line"><a name="l07835"></a><span class="lineno"> 7835</span>&#160;</div><div class="line"><a name="l07836"></a><span class="lineno"> 7836</span>&#160;</div><div class="line"><a name="l07837"></a><span class="lineno"> 7837</span>&#160; }</div><div class="line"><a name="l07838"></a><span class="lineno"> 7838</span>&#160;</div><div class="line"><a name="l07840"></a><span class="lineno"> 7840</span>&#160; <span class="keywordtype">void</span> yyfill() noexcept</div><div class="line"><a name="l07841"></a><span class="lineno"> 7841</span>&#160; {</div><div class="line"><a name="l07842"></a><span class="lineno"> 7842</span>&#160; <span class="keywordflow">if</span> (m_stream == <span class="keyword">nullptr</span> or not * m_stream)</div><div class="line"><a name="l07843"></a><span class="lineno"> 7843</span>&#160; {</div><div class="line"><a name="l07844"></a><span class="lineno"> 7844</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l07845"></a><span class="lineno"> 7845</span>&#160; }</div><div class="line"><a name="l07846"></a><span class="lineno"> 7846</span>&#160;</div><div class="line"><a name="l07847"></a><span class="lineno"> 7847</span>&#160; <span class="keyword">const</span> ssize_t offset_start = m_start - m_content;</div><div class="line"><a name="l07848"></a><span class="lineno"> 7848</span>&#160; <span class="keyword">const</span> ssize_t offset_marker = m_marker - m_start;</div><div class="line"><a name="l07849"></a><span class="lineno"> 7849</span>&#160; <span class="keyword">const</span> ssize_t offset_cursor = m_cursor - m_start;</div><div class="line"><a name="l07850"></a><span class="lineno"> 7850</span>&#160;</div><div class="line"><a name="l07851"></a><span class="lineno"> 7851</span>&#160; m_buffer.erase(0, static_cast&lt;size_t&gt;(offset_start));</div><div class="line"><a name="l07852"></a><span class="lineno"> 7852</span>&#160; std::string line;</div><div class="line"><a name="l07853"></a><span class="lineno"> 7853</span>&#160; assert(m_stream != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l07854"></a><span class="lineno"> 7854</span>&#160; std::getline(*m_stream, line);</div><div class="line"><a name="l07855"></a><span class="lineno"> 7855</span>&#160; m_buffer += <span class="stringliteral">&quot;\n&quot;</span> + line; <span class="comment">// add line with newline symbol</span></div><div class="line"><a name="l07856"></a><span class="lineno"> 7856</span>&#160;</div><div class="line"><a name="l07857"></a><span class="lineno"> 7857</span>&#160; m_content = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>lexer_char_t*<span class="keyword">&gt;</span>(m_buffer.c_str());</div><div class="line"><a name="l07858"></a><span class="lineno"> 7858</span>&#160; assert(m_content != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l07859"></a><span class="lineno"> 7859</span>&#160; m_start = m_content;</div><div class="line"><a name="l07860"></a><span class="lineno"> 7860</span>&#160; m_marker = m_start + offset_marker;</div><div class="line"><a name="l07861"></a><span class="lineno"> 7861</span>&#160; m_cursor = m_start + offset_cursor;</div><div class="line"><a name="l07862"></a><span class="lineno"> 7862</span>&#160; m_limit = m_start + m_buffer.size() - 1;</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="l07866"></a><span class="lineno"> 7866</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> get_token() <span class="keyword">const</span> noexcept</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; assert(m_start != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l07869"></a><span class="lineno"> 7869</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>(reinterpret_cast&lt;typename string_t::const_pointer&gt;(m_start),</div><div class="line"><a name="l07870"></a><span class="lineno"> 7870</span>&#160; static_cast&lt;size_t&gt;(m_cursor - m_start));</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;</div><div class="line"><a name="l07894"></a><span class="lineno"> 7894</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> get_string()<span class="keyword"> const</span></div><div class="line"><a name="l07895"></a><span class="lineno"> 7895</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l07896"></a><span class="lineno"> 7896</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> result;</div><div class="line"><a name="l07897"></a><span class="lineno"> 7897</span>&#160; result.reserve(static_cast&lt;size_t&gt;(m_cursor - m_start - 2));</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">// iterate the result between the quotes</span></div><div class="line"><a name="l07900"></a><span class="lineno"> 7900</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> lexer_char_t* i = m_start + 1; i &lt; m_cursor - 1; ++i)</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="comment">// process escaped characters</span></div><div class="line"><a name="l07903"></a><span class="lineno"> 7903</span>&#160; <span class="keywordflow">if</span> (*i == <span class="charliteral">&#39;\\&#39;</span>)</div><div class="line"><a name="l07904"></a><span class="lineno"> 7904</span>&#160; {</div><div class="line"><a name="l07905"></a><span class="lineno"> 7905</span>&#160; <span class="comment">// read next character</span></div><div class="line"><a name="l07906"></a><span class="lineno"> 7906</span>&#160; ++i;</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; <span class="keywordflow">switch</span> (*i)</div><div class="line"><a name="l07909"></a><span class="lineno"> 7909</span>&#160; {</div><div class="line"><a name="l07910"></a><span class="lineno"> 7910</span>&#160; <span class="comment">// the default escapes</span></div><div class="line"><a name="l07911"></a><span class="lineno"> 7911</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;t&#39;</span>:</div><div class="line"><a name="l07912"></a><span class="lineno"> 7912</span>&#160; {</div><div class="line"><a name="l07913"></a><span class="lineno"> 7913</span>&#160; result += <span class="stringliteral">&quot;\t&quot;</span>;</div><div class="line"><a name="l07914"></a><span class="lineno"> 7914</span>&#160; <span class="keywordflow">break</span>;</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">case</span> <span class="charliteral">&#39;b&#39;</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; result += <span class="stringliteral">&quot;\b&quot;</span>;</div><div class="line"><a name="l07919"></a><span class="lineno"> 7919</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l07920"></a><span class="lineno"> 7920</span>&#160; }</div><div class="line"><a name="l07921"></a><span class="lineno"> 7921</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;f&#39;</span>:</div><div class="line"><a name="l07922"></a><span class="lineno"> 7922</span>&#160; {</div><div class="line"><a name="l07923"></a><span class="lineno"> 7923</span>&#160; result += <span class="stringliteral">&quot;\f&quot;</span>;</div><div class="line"><a name="l07924"></a><span class="lineno"> 7924</span>&#160; <span class="keywordflow">break</span>;</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">case</span> <span class="charliteral">&#39;n&#39;</span>:</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; result += <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l07929"></a><span class="lineno"> 7929</span>&#160; <span class="keywordflow">break</span>;</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="keywordflow">case</span> <span class="charliteral">&#39;r&#39;</span>:</div><div class="line"><a name="l07932"></a><span class="lineno"> 7932</span>&#160; {</div><div class="line"><a name="l07933"></a><span class="lineno"> 7933</span>&#160; result += <span class="stringliteral">&quot;\r&quot;</span>;</div><div class="line"><a name="l07934"></a><span class="lineno"> 7934</span>&#160; <span class="keywordflow">break</span>;</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">case</span> <span class="charliteral">&#39;\\&#39;</span>:</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; result += <span class="stringliteral">&quot;\\&quot;</span>;</div><div class="line"><a name="l07939"></a><span class="lineno"> 7939</span>&#160; <span class="keywordflow">break</span>;</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="keywordflow">case</span> <span class="charliteral">&#39;/&#39;</span>:</div><div class="line"><a name="l07942"></a><span class="lineno"> 7942</span>&#160; {</div><div class="line"><a name="l07943"></a><span class="lineno"> 7943</span>&#160; result += <span class="stringliteral">&quot;/&quot;</span>;</div><div class="line"><a name="l07944"></a><span class="lineno"> 7944</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l07945"></a><span class="lineno"> 7945</span>&#160; }</div><div class="line"><a name="l07946"></a><span class="lineno"> 7946</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&quot;&#39;</span>:</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; result += <span class="stringliteral">&quot;\&quot;&quot;</span>;</div><div class="line"><a name="l07949"></a><span class="lineno"> 7949</span>&#160; <span class="keywordflow">break</span>;</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;</div><div class="line"><a name="l07952"></a><span class="lineno"> 7952</span>&#160; <span class="comment">// unicode</span></div><div class="line"><a name="l07953"></a><span class="lineno"> 7953</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;u&#39;</span>:</div><div class="line"><a name="l07954"></a><span class="lineno"> 7954</span>&#160; {</div><div class="line"><a name="l07955"></a><span class="lineno"> 7955</span>&#160; <span class="comment">// get code xxxx from uxxxx</span></div><div class="line"><a name="l07956"></a><span class="lineno"> 7956</span>&#160; <span class="keyword">auto</span> codepoint = std::strtoul(std::string(reinterpret_cast&lt;typename string_t::const_pointer&gt;(i + 1),</div><div class="line"><a name="l07957"></a><span class="lineno"> 7957</span>&#160; 4).c_str(), <span class="keyword">nullptr</span>, 16);</div><div class="line"><a name="l07958"></a><span class="lineno"> 7958</span>&#160;</div><div class="line"><a name="l07959"></a><span class="lineno"> 7959</span>&#160; <span class="comment">// check if codepoint is a high surrogate</span></div><div class="line"><a name="l07960"></a><span class="lineno"> 7960</span>&#160; <span class="keywordflow">if</span> (codepoint &gt;= 0xD800 and codepoint &lt;= 0xDBFF)</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; <span class="comment">// make sure there is a subsequent unicode</span></div><div class="line"><a name="l07963"></a><span class="lineno"> 7963</span>&#160; <span class="keywordflow">if</span> ((i + 6 &gt;= m_limit) or * (i + 5) != <span class="charliteral">&#39;\\&#39;</span> or * (i + 6) != <span class="charliteral">&#39;u&#39;</span>)</div><div class="line"><a name="l07964"></a><span class="lineno"> 7964</span>&#160; {</div><div class="line"><a name="l07965"></a><span class="lineno"> 7965</span>&#160; <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">&quot;missing low surrogate&quot;</span>);</div><div class="line"><a name="l07966"></a><span class="lineno"> 7966</span>&#160; }</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; <span class="comment">// get code yyyy from uxxxx\uyyyy</span></div><div class="line"><a name="l07969"></a><span class="lineno"> 7969</span>&#160; <span class="keyword">auto</span> codepoint2 = std::strtoul(std::string(reinterpret_cast&lt;typename string_t::const_pointer&gt;</div><div class="line"><a name="l07970"></a><span class="lineno"> 7970</span>&#160; (i + 7), 4).c_str(), <span class="keyword">nullptr</span>, 16);</div><div class="line"><a name="l07971"></a><span class="lineno"> 7971</span>&#160; result += to_unicode(codepoint, codepoint2);</div><div class="line"><a name="l07972"></a><span class="lineno"> 7972</span>&#160; <span class="comment">// skip the next 10 characters (xxxx\uyyyy)</span></div><div class="line"><a name="l07973"></a><span class="lineno"> 7973</span>&#160; i += 10;</div><div class="line"><a name="l07974"></a><span class="lineno"> 7974</span>&#160; }</div><div class="line"><a name="l07975"></a><span class="lineno"> 7975</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07976"></a><span class="lineno"> 7976</span>&#160; {</div><div class="line"><a name="l07977"></a><span class="lineno"> 7977</span>&#160; <span class="comment">// add unicode character(s)</span></div><div class="line"><a name="l07978"></a><span class="lineno"> 7978</span>&#160; result += to_unicode(codepoint);</div><div class="line"><a name="l07979"></a><span class="lineno"> 7979</span>&#160; <span class="comment">// skip the next four characters (xxxx)</span></div><div class="line"><a name="l07980"></a><span class="lineno"> 7980</span>&#160; i += 4;</div><div class="line"><a name="l07981"></a><span class="lineno"> 7981</span>&#160; }</div><div class="line"><a name="l07982"></a><span class="lineno"> 7982</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l07983"></a><span class="lineno"> 7983</span>&#160; }</div><div class="line"><a name="l07984"></a><span class="lineno"> 7984</span>&#160; }</div><div class="line"><a name="l07985"></a><span class="lineno"> 7985</span>&#160; }</div><div class="line"><a name="l07986"></a><span class="lineno"> 7986</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l07987"></a><span class="lineno"> 7987</span>&#160; {</div><div class="line"><a name="l07988"></a><span class="lineno"> 7988</span>&#160; <span class="comment">// all other characters are just copied to the end of the</span></div><div class="line"><a name="l07989"></a><span class="lineno"> 7989</span>&#160; <span class="comment">// string</span></div><div class="line"><a name="l07990"></a><span class="lineno"> 7990</span>&#160; result.append(1, static_cast&lt;typename string_t::value_type&gt;(*i));</div><div class="line"><a name="l07991"></a><span class="lineno"> 7991</span>&#160; }</div><div class="line"><a name="l07992"></a><span class="lineno"> 7992</span>&#160; }</div><div class="line"><a name="l07993"></a><span class="lineno"> 7993</span>&#160;</div><div class="line"><a name="l07994"></a><span class="lineno"> 7994</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l07995"></a><span class="lineno"> 7995</span>&#160; }</div><div class="line"><a name="l07996"></a><span class="lineno"> 7996</span>&#160;</div><div class="line"><a name="l08017"></a><span class="lineno"> 8017</span>&#160; <span class="keywordtype">long</span> <span class="keywordtype">double</span> str_to_float_t(<span class="keywordtype">long</span> <span class="keywordtype">double</span>* <span class="comment">/* type */</span>, <span class="keywordtype">char</span>** endptr)<span class="keyword"> const</span></div><div class="line"><a name="l08018"></a><span class="lineno"> 8018</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l08019"></a><span class="lineno"> 8019</span>&#160; <span class="keywordflow">return</span> std::strtold(reinterpret_cast&lt;typename string_t::const_pointer&gt;(m_start), endptr);</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;</div><div class="line"><a name="l08036"></a><span class="lineno"> 8036</span>&#160; <span class="keywordtype">double</span> str_to_float_t(<span class="keywordtype">double</span>* <span class="comment">/* type */</span>, <span class="keywordtype">char</span>** endptr)<span class="keyword"> const</span></div><div class="line"><a name="l08037"></a><span class="lineno"> 8037</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l08038"></a><span class="lineno"> 8038</span>&#160; <span class="keywordflow">return</span> std::strtod(reinterpret_cast&lt;typename string_t::const_pointer&gt;(m_start), endptr);</div><div class="line"><a name="l08039"></a><span class="lineno"> 8039</span>&#160; }</div><div class="line"><a name="l08040"></a><span class="lineno"> 8040</span>&#160;</div><div class="line"><a name="l08055"></a><span class="lineno"> 8055</span>&#160; <span class="keywordtype">float</span> str_to_float_t(<span class="keywordtype">float</span>* <span class="comment">/* type */</span>, <span class="keywordtype">char</span>** endptr)<span class="keyword"> const</span></div><div class="line"><a name="l08056"></a><span class="lineno"> 8056</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l08057"></a><span class="lineno"> 8057</span>&#160; <span class="keywordflow">return</span> std::strtof(reinterpret_cast&lt;typename string_t::const_pointer&gt;(m_start), endptr);</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;</div><div class="line"><a name="l08072"></a><span class="lineno"> 8072</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T_A, <span class="keyword">typename</span> T_B&gt;</div><div class="line"><a name="l08073"></a><span class="lineno"> 8073</span>&#160; <span class="keywordtype">bool</span> attempt_cast(T_A source, T_B&amp; dest)<span class="keyword"> const</span></div><div class="line"><a name="l08074"></a><span class="lineno"> 8074</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l08075"></a><span class="lineno"> 8075</span>&#160; dest = <span class="keyword">static_cast&lt;</span>T_B<span class="keyword">&gt;</span>(source);</div><div class="line"><a name="l08076"></a><span class="lineno"> 8076</span>&#160; <span class="keywordflow">return</span> (source == static_cast&lt;T_A&gt;(dest));</div><div class="line"><a name="l08077"></a><span class="lineno"> 8077</span>&#160; }</div><div class="line"><a name="l08078"></a><span class="lineno"> 8078</span>&#160;</div><div class="line"><a name="l08117"></a><span class="lineno"> 8117</span>&#160; <span class="keywordtype">void</span> get_number(basic_json&amp; result)<span class="keyword"> const</span></div><div class="line"><a name="l08118"></a><span class="lineno"> 8118</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l08119"></a><span class="lineno"> 8119</span>&#160; <span class="keyword">typename</span> string_t::value_type* endptr;</div><div class="line"><a name="l08120"></a><span class="lineno"> 8120</span>&#160; assert(m_start != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l08121"></a><span class="lineno"> 8121</span>&#160; errno = 0;</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; <span class="comment">// attempt to parse it as an integer - first checking for a</span></div><div class="line"><a name="l08124"></a><span class="lineno"> 8124</span>&#160; <span class="comment">// negative number</span></div><div class="line"><a name="l08125"></a><span class="lineno"> 8125</span>&#160; <span class="keywordflow">if</span> (*reinterpret_cast&lt;typename string_t::const_pointer&gt;(m_start) != <span class="charliteral">&#39;-&#39;</span>)</div><div class="line"><a name="l08126"></a><span class="lineno"> 8126</span>&#160; {</div><div class="line"><a name="l08127"></a><span class="lineno"> 8127</span>&#160; <span class="comment">// positive, parse with strtoull and attempt cast to</span></div><div class="line"><a name="l08128"></a><span class="lineno"> 8128</span>&#160; <span class="comment">// number_unsigned_t</span></div><div class="line"><a name="l08129"></a><span class="lineno"> 8129</span>&#160; <span class="keywordflow">if</span> (attempt_cast(std::strtoull(reinterpret_cast&lt;typename string_t::const_pointer&gt;(m_start), &amp;endptr,</div><div class="line"><a name="l08130"></a><span class="lineno"> 8130</span>&#160; 10), result.m_value.number_unsigned))</div><div class="line"><a name="l08131"></a><span class="lineno"> 8131</span>&#160; {</div><div class="line"><a name="l08132"></a><span class="lineno"> 8132</span>&#160; result.m_type = value_t::number_unsigned;</div><div class="line"><a name="l08133"></a><span class="lineno"> 8133</span>&#160; }</div><div class="line"><a name="l08134"></a><span class="lineno"> 8134</span>&#160; <span class="keywordflow">else</span></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; <span class="comment">// cast failed due to overflow - store as float</span></div><div class="line"><a name="l08137"></a><span class="lineno"> 8137</span>&#160; result.m_type = value_t::number_float;</div><div class="line"><a name="l08138"></a><span class="lineno"> 8138</span>&#160; }</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; <span class="keywordflow">else</span></div><div class="line"><a name="l08141"></a><span class="lineno"> 8141</span>&#160; {</div><div class="line"><a name="l08142"></a><span class="lineno"> 8142</span>&#160; <span class="comment">// Negative, parse with strtoll and attempt cast to</span></div><div class="line"><a name="l08143"></a><span class="lineno"> 8143</span>&#160; <span class="comment">// number_integer_t</span></div><div class="line"><a name="l08144"></a><span class="lineno"> 8144</span>&#160; <span class="keywordflow">if</span> (attempt_cast(std::strtoll(reinterpret_cast&lt;typename string_t::const_pointer&gt;(m_start), &amp;endptr,</div><div class="line"><a name="l08145"></a><span class="lineno"> 8145</span>&#160; 10), result.m_value.number_integer))</div><div class="line"><a name="l08146"></a><span class="lineno"> 8146</span>&#160; {</div><div class="line"><a name="l08147"></a><span class="lineno"> 8147</span>&#160; result.m_type = value_t::number_integer;</div><div class="line"><a name="l08148"></a><span class="lineno"> 8148</span>&#160; }</div><div class="line"><a name="l08149"></a><span class="lineno"> 8149</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l08150"></a><span class="lineno"> 8150</span>&#160; {</div><div class="line"><a name="l08151"></a><span class="lineno"> 8151</span>&#160; <span class="comment">// cast failed due to overflow - store as float</span></div><div class="line"><a name="l08152"></a><span class="lineno"> 8152</span>&#160; result.m_type = value_t::number_float;</div><div class="line"><a name="l08153"></a><span class="lineno"> 8153</span>&#160; }</div><div class="line"><a name="l08154"></a><span class="lineno"> 8154</span>&#160; }</div><div class="line"><a name="l08155"></a><span class="lineno"> 8155</span>&#160;</div><div class="line"><a name="l08156"></a><span class="lineno"> 8156</span>&#160; <span class="comment">// check the end of the number was reached and no range error</span></div><div class="line"><a name="l08157"></a><span class="lineno"> 8157</span>&#160; <span class="comment">// occurred</span></div><div class="line"><a name="l08158"></a><span class="lineno"> 8158</span>&#160; <span class="keywordflow">if</span> (reinterpret_cast&lt;lexer_char_t*&gt;(endptr) != m_cursor || errno == ERANGE)</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; result.m_type = value_t::number_float;</div><div class="line"><a name="l08161"></a><span class="lineno"> 8161</span>&#160; }</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; <span class="keywordflow">if</span> (result.m_type == value_t::number_float)</div><div class="line"><a name="l08164"></a><span class="lineno"> 8164</span>&#160; {</div><div class="line"><a name="l08165"></a><span class="lineno"> 8165</span>&#160; <span class="comment">// either the number won&#39;t fit in an integer (range error from</span></div><div class="line"><a name="l08166"></a><span class="lineno"> 8166</span>&#160; <span class="comment">// strtoull/strtoll or overflow on cast) or there was something</span></div><div class="line"><a name="l08167"></a><span class="lineno"> 8167</span>&#160; <span class="comment">// else after the number, which could be an exponent</span></div><div class="line"><a name="l08168"></a><span class="lineno"> 8168</span>&#160;</div><div class="line"><a name="l08169"></a><span class="lineno"> 8169</span>&#160; <span class="comment">// parse with strtod</span></div><div class="line"><a name="l08170"></a><span class="lineno"> 8170</span>&#160; result.m_value.number_float = str_to_float_t(static_cast&lt;number_float_t*&gt;(<span class="keyword">nullptr</span>), &amp;endptr);</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="comment">// anything after the number is an error</span></div><div class="line"><a name="l08173"></a><span class="lineno"> 8173</span>&#160; <span class="keywordflow">if</span> (reinterpret_cast&lt;lexer_char_t*&gt;(endptr) != m_cursor)</div><div class="line"><a name="l08174"></a><span class="lineno"> 8174</span>&#160; {</div><div class="line"><a name="l08175"></a><span class="lineno"> 8175</span>&#160; <span class="keywordflow">throw</span> std::invalid_argument(std::string(<span class="stringliteral">&quot;parse error - &quot;</span>) + get_token() + <span class="stringliteral">&quot; is not a number&quot;</span>);</div><div class="line"><a name="l08176"></a><span class="lineno"> 8176</span>&#160; }</div><div class="line"><a name="l08177"></a><span class="lineno"> 8177</span>&#160; }</div><div class="line"><a name="l08178"></a><span class="lineno"> 8178</span>&#160; }</div><div class="line"><a name="l08179"></a><span class="lineno"> 8179</span>&#160;</div><div class="line"><a name="l08180"></a><span class="lineno"> 8180</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l08182"></a><span class="lineno"> 8182</span>&#160; std::istream* m_stream = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l08184"></a><span class="lineno"> 8184</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a> m_buffer;</div><div class="line"><a name="l08186"></a><span class="lineno"> 8186</span>&#160; <span class="keyword">const</span> lexer_char_t* m_content = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l08188"></a><span class="lineno"> 8188</span>&#160; <span class="keyword">const</span> lexer_char_t* m_start = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l08190"></a><span class="lineno"> 8190</span>&#160; <span class="keyword">const</span> lexer_char_t* m_marker = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l08192"></a><span class="lineno"> 8192</span>&#160; <span class="keyword">const</span> lexer_char_t* m_cursor = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l08194"></a><span class="lineno"> 8194</span>&#160; <span class="keyword">const</span> lexer_char_t* m_limit = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l08195"></a><span class="lineno"> 8195</span>&#160; };</div><div class="line"><a name="l08196"></a><span class="lineno"> 8196</span>&#160;</div><div class="line"><a name="l08202"></a><span class="lineno"> 8202</span>&#160; <span class="keyword">class </span>parser</div><div class="line"><a name="l08203"></a><span class="lineno"> 8203</span>&#160; {</div><div class="line"><a name="l08204"></a><span class="lineno"> 8204</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l08206"></a><span class="lineno"> 8206</span>&#160; parser(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">string_t</a>&amp; s, <a class="code" href="classnlohmann_1_1basic__json_a9e35475e2027520a78e09f460dbe048a.html#a9e35475e2027520a78e09f460dbe048a">parser_callback_t</a> cb = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l08207"></a><span class="lineno"> 8207</span>&#160; : callback(cb), m_lexer(s)</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; <span class="comment">// read first token</span></div><div class="line"><a name="l08210"></a><span class="lineno"> 8210</span>&#160; get_token();</div><div class="line"><a name="l08211"></a><span class="lineno"> 8211</span>&#160; }</div><div class="line"><a name="l08212"></a><span class="lineno"> 8212</span>&#160;</div><div class="line"><a name="l08214"></a><span class="lineno"> 8214</span>&#160; parser(std::istream&amp; _is, <a class="code" href="classnlohmann_1_1basic__json_a9e35475e2027520a78e09f460dbe048a.html#a9e35475e2027520a78e09f460dbe048a">parser_callback_t</a> cb = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l08215"></a><span class="lineno"> 8215</span>&#160; : callback(cb), m_lexer(&amp;_is)</div><div class="line"><a name="l08216"></a><span class="lineno"> 8216</span>&#160; {</div><div class="line"><a name="l08217"></a><span class="lineno"> 8217</span>&#160; <span class="comment">// read first token</span></div><div class="line"><a name="l08218"></a><span class="lineno"> 8218</span>&#160; get_token();</div><div class="line"><a name="l08219"></a><span class="lineno"> 8219</span>&#160; }</div><div class="line"><a name="l08220"></a><span class="lineno"> 8220</span>&#160;</div><div class="line"><a name="l08222"></a><span class="lineno"> 8222</span>&#160; basic_json parse()</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; basic_json result = parse_internal(<span class="keyword">true</span>);</div><div class="line"><a name="l08225"></a><span class="lineno"> 8225</span>&#160;</div><div class="line"><a name="l08226"></a><span class="lineno"> 8226</span>&#160; expect(lexer::token_type::end_of_input);</div><div class="line"><a name="l08227"></a><span class="lineno"> 8227</span>&#160;</div><div class="line"><a name="l08228"></a><span class="lineno"> 8228</span>&#160; <span class="comment">// return parser result and replace it with null in case the</span></div><div class="line"><a name="l08229"></a><span class="lineno"> 8229</span>&#160; <span class="comment">// top-level value was discarded by the callback function</span></div><div class="line"><a name="l08230"></a><span class="lineno"> 8230</span>&#160; <span class="keywordflow">return</span> result.<a class="code" href="classnlohmann_1_1basic__json_a626a27f30d6912d7f516eac511fd3362.html#a626a27f30d6912d7f516eac511fd3362">is_discarded</a>() ? basic_json() : result;</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; <span class="keyword">private</span>:</div><div class="line"><a name="l08235"></a><span class="lineno"> 8235</span>&#160; basic_json parse_internal(<span class="keywordtype">bool</span> keep)</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="keyword">auto</span> result = basic_json(value_t::discarded);</div><div class="line"><a name="l08238"></a><span class="lineno"> 8238</span>&#160;</div><div class="line"><a name="l08239"></a><span class="lineno"> 8239</span>&#160; <span class="keywordflow">switch</span> (last_token)</div><div class="line"><a name="l08240"></a><span class="lineno"> 8240</span>&#160; {</div><div class="line"><a name="l08241"></a><span class="lineno"> 8241</span>&#160; <span class="keywordflow">case</span> lexer::token_type::begin_object:</div><div class="line"><a name="l08242"></a><span class="lineno"> 8242</span>&#160; {</div><div class="line"><a name="l08243"></a><span class="lineno"> 8243</span>&#160; <span class="keywordflow">if</span> (keep and (not callback or (keep = callback(depth++, parse_event_t::object_start, result))))</div><div class="line"><a name="l08244"></a><span class="lineno"> 8244</span>&#160; {</div><div class="line"><a name="l08245"></a><span class="lineno"> 8245</span>&#160; <span class="comment">// explicitly set result to object to cope with {}</span></div><div class="line"><a name="l08246"></a><span class="lineno"> 8246</span>&#160; result.m_type = value_t::object;</div><div class="line"><a name="l08247"></a><span class="lineno"> 8247</span>&#160; result.m_value = json_value(value_t::object);</div><div class="line"><a name="l08248"></a><span class="lineno"> 8248</span>&#160; }</div><div class="line"><a name="l08249"></a><span class="lineno"> 8249</span>&#160;</div><div class="line"><a name="l08250"></a><span class="lineno"> 8250</span>&#160; <span class="comment">// read next token</span></div><div class="line"><a name="l08251"></a><span class="lineno"> 8251</span>&#160; get_token();</div><div class="line"><a name="l08252"></a><span class="lineno"> 8252</span>&#160;</div><div class="line"><a name="l08253"></a><span class="lineno"> 8253</span>&#160; <span class="comment">// closing } -&gt; we are done</span></div><div class="line"><a name="l08254"></a><span class="lineno"> 8254</span>&#160; <span class="keywordflow">if</span> (last_token == lexer::token_type::end_object)</div><div class="line"><a name="l08255"></a><span class="lineno"> 8255</span>&#160; {</div><div class="line"><a name="l08256"></a><span class="lineno"> 8256</span>&#160; get_token();</div><div class="line"><a name="l08257"></a><span class="lineno"> 8257</span>&#160; <span class="keywordflow">if</span> (keep and callback and not callback(--depth, parse_event_t::object_end, result))</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; result = basic_json(value_t::discarded);</div><div class="line"><a name="l08260"></a><span class="lineno"> 8260</span>&#160; }</div><div class="line"><a name="l08261"></a><span class="lineno"> 8261</span>&#160; <span class="keywordflow">return</span> result;</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;</div><div class="line"><a name="l08264"></a><span class="lineno"> 8264</span>&#160; <span class="comment">// no comma is expected here</span></div><div class="line"><a name="l08265"></a><span class="lineno"> 8265</span>&#160; unexpect(lexer::token_type::value_separator);</div><div class="line"><a name="l08266"></a><span class="lineno"> 8266</span>&#160;</div><div class="line"><a name="l08267"></a><span class="lineno"> 8267</span>&#160; <span class="comment">// otherwise: parse key-value pairs</span></div><div class="line"><a name="l08268"></a><span class="lineno"> 8268</span>&#160; <span class="keywordflow">do</span></div><div class="line"><a name="l08269"></a><span class="lineno"> 8269</span>&#160; {</div><div class="line"><a name="l08270"></a><span class="lineno"> 8270</span>&#160; <span class="comment">// ugly, but could be fixed with loop reorganization</span></div><div class="line"><a name="l08271"></a><span class="lineno"> 8271</span>&#160; <span class="keywordflow">if</span> (last_token == lexer::token_type::value_separator)</div><div class="line"><a name="l08272"></a><span class="lineno"> 8272</span>&#160; {</div><div class="line"><a name="l08273"></a><span class="lineno"> 8273</span>&#160; get_token();</div><div class="line"><a name="l08274"></a><span class="lineno"> 8274</span>&#160; }</div><div class="line"><a name="l08275"></a><span class="lineno"> 8275</span>&#160;</div><div class="line"><a name="l08276"></a><span class="lineno"> 8276</span>&#160; <span class="comment">// store key</span></div><div class="line"><a name="l08277"></a><span class="lineno"> 8277</span>&#160; expect(lexer::token_type::value_string);</div><div class="line"><a name="l08278"></a><span class="lineno"> 8278</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> key = m_lexer.get_string();</div><div class="line"><a name="l08279"></a><span class="lineno"> 8279</span>&#160;</div><div class="line"><a name="l08280"></a><span class="lineno"> 8280</span>&#160; <span class="keywordtype">bool</span> keep_tag = <span class="keyword">false</span>;</div><div class="line"><a name="l08281"></a><span class="lineno"> 8281</span>&#160; <span class="keywordflow">if</span> (keep)</div><div class="line"><a name="l08282"></a><span class="lineno"> 8282</span>&#160; {</div><div class="line"><a name="l08283"></a><span class="lineno"> 8283</span>&#160; <span class="keywordflow">if</span> (callback)</div><div class="line"><a name="l08284"></a><span class="lineno"> 8284</span>&#160; {</div><div class="line"><a name="l08285"></a><span class="lineno"> 8285</span>&#160; basic_json k(key);</div><div class="line"><a name="l08286"></a><span class="lineno"> 8286</span>&#160; keep_tag = callback(depth, parse_event_t::key, k);</div><div class="line"><a name="l08287"></a><span class="lineno"> 8287</span>&#160; }</div><div class="line"><a name="l08288"></a><span class="lineno"> 8288</span>&#160; <span class="keywordflow">else</span></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; keep_tag = <span class="keyword">true</span>;</div><div class="line"><a name="l08291"></a><span class="lineno"> 8291</span>&#160; }</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;</div><div class="line"><a name="l08294"></a><span class="lineno"> 8294</span>&#160; <span class="comment">// parse separator (:)</span></div><div class="line"><a name="l08295"></a><span class="lineno"> 8295</span>&#160; get_token();</div><div class="line"><a name="l08296"></a><span class="lineno"> 8296</span>&#160; expect(lexer::token_type::name_separator);</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="comment">// parse and add value</span></div><div class="line"><a name="l08299"></a><span class="lineno"> 8299</span>&#160; get_token();</div><div class="line"><a name="l08300"></a><span class="lineno"> 8300</span>&#160; <span class="keyword">auto</span> value = parse_internal(keep);</div><div class="line"><a name="l08301"></a><span class="lineno"> 8301</span>&#160; <span class="keywordflow">if</span> (keep and keep_tag and not value.is_discarded())</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; result[key] = std::move(value);</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; <span class="keywordflow">while</span> (last_token == lexer::token_type::value_separator);</div><div class="line"><a name="l08307"></a><span class="lineno"> 8307</span>&#160;</div><div class="line"><a name="l08308"></a><span class="lineno"> 8308</span>&#160; <span class="comment">// closing }</span></div><div class="line"><a name="l08309"></a><span class="lineno"> 8309</span>&#160; expect(lexer::token_type::end_object);</div><div class="line"><a name="l08310"></a><span class="lineno"> 8310</span>&#160; get_token();</div><div class="line"><a name="l08311"></a><span class="lineno"> 8311</span>&#160; <span class="keywordflow">if</span> (keep and callback and not callback(--depth, parse_event_t::object_end, result))</div><div class="line"><a name="l08312"></a><span class="lineno"> 8312</span>&#160; {</div><div class="line"><a name="l08313"></a><span class="lineno"> 8313</span>&#160; result = basic_json(value_t::discarded);</div><div class="line"><a name="l08314"></a><span class="lineno"> 8314</span>&#160; }</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; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l08317"></a><span class="lineno"> 8317</span>&#160; }</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">case</span> lexer::token_type::begin_array:</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; <span class="keywordflow">if</span> (keep and (not callback or (keep = callback(depth++, parse_event_t::array_start, result))))</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; <span class="comment">// explicitly set result to object to cope with []</span></div><div class="line"><a name="l08324"></a><span class="lineno"> 8324</span>&#160; result.m_type = value_t::array;</div><div class="line"><a name="l08325"></a><span class="lineno"> 8325</span>&#160; result.m_value = json_value(value_t::array);</div><div class="line"><a name="l08326"></a><span class="lineno"> 8326</span>&#160; }</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">// read next token</span></div><div class="line"><a name="l08329"></a><span class="lineno"> 8329</span>&#160; get_token();</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="comment">// closing ] -&gt; we are done</span></div><div class="line"><a name="l08332"></a><span class="lineno"> 8332</span>&#160; <span class="keywordflow">if</span> (last_token == lexer::token_type::end_array)</div><div class="line"><a name="l08333"></a><span class="lineno"> 8333</span>&#160; {</div><div class="line"><a name="l08334"></a><span class="lineno"> 8334</span>&#160; get_token();</div><div class="line"><a name="l08335"></a><span class="lineno"> 8335</span>&#160; <span class="keywordflow">if</span> (callback and not callback(--depth, parse_event_t::array_end, result))</div><div class="line"><a name="l08336"></a><span class="lineno"> 8336</span>&#160; {</div><div class="line"><a name="l08337"></a><span class="lineno"> 8337</span>&#160; result = basic_json(value_t::discarded);</div><div class="line"><a name="l08338"></a><span class="lineno"> 8338</span>&#160; }</div><div class="line"><a name="l08339"></a><span class="lineno"> 8339</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l08340"></a><span class="lineno"> 8340</span>&#160; }</div><div class="line"><a name="l08341"></a><span class="lineno"> 8341</span>&#160;</div><div class="line"><a name="l08342"></a><span class="lineno"> 8342</span>&#160; <span class="comment">// no comma is expected here</span></div><div class="line"><a name="l08343"></a><span class="lineno"> 8343</span>&#160; unexpect(lexer::token_type::value_separator);</div><div class="line"><a name="l08344"></a><span class="lineno"> 8344</span>&#160;</div><div class="line"><a name="l08345"></a><span class="lineno"> 8345</span>&#160; <span class="comment">// otherwise: parse values</span></div><div class="line"><a name="l08346"></a><span class="lineno"> 8346</span>&#160; <span class="keywordflow">do</span></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; <span class="comment">// ugly, but could be fixed with loop reorganization</span></div><div class="line"><a name="l08349"></a><span class="lineno"> 8349</span>&#160; <span class="keywordflow">if</span> (last_token == lexer::token_type::value_separator)</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; get_token();</div><div class="line"><a name="l08352"></a><span class="lineno"> 8352</span>&#160; }</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; <span class="comment">// parse value</span></div><div class="line"><a name="l08355"></a><span class="lineno"> 8355</span>&#160; <span class="keyword">auto</span> value = parse_internal(keep);</div><div class="line"><a name="l08356"></a><span class="lineno"> 8356</span>&#160; <span class="keywordflow">if</span> (keep and not value.is_discarded())</div><div class="line"><a name="l08357"></a><span class="lineno"> 8357</span>&#160; {</div><div class="line"><a name="l08358"></a><span class="lineno"> 8358</span>&#160; result.push_back(std::move(value));</div><div class="line"><a name="l08359"></a><span class="lineno"> 8359</span>&#160; }</div><div class="line"><a name="l08360"></a><span class="lineno"> 8360</span>&#160; }</div><div class="line"><a name="l08361"></a><span class="lineno"> 8361</span>&#160; <span class="keywordflow">while</span> (last_token == lexer::token_type::value_separator);</div><div class="line"><a name="l08362"></a><span class="lineno"> 8362</span>&#160;</div><div class="line"><a name="l08363"></a><span class="lineno"> 8363</span>&#160; <span class="comment">// closing ]</span></div><div class="line"><a name="l08364"></a><span class="lineno"> 8364</span>&#160; expect(lexer::token_type::end_array);</div><div class="line"><a name="l08365"></a><span class="lineno"> 8365</span>&#160; get_token();</div><div class="line"><a name="l08366"></a><span class="lineno"> 8366</span>&#160; <span class="keywordflow">if</span> (keep and callback and not callback(--depth, parse_event_t::array_end, result))</div><div class="line"><a name="l08367"></a><span class="lineno"> 8367</span>&#160; {</div><div class="line"><a name="l08368"></a><span class="lineno"> 8368</span>&#160; result = basic_json(value_t::discarded);</div><div class="line"><a name="l08369"></a><span class="lineno"> 8369</span>&#160; }</div><div class="line"><a name="l08370"></a><span class="lineno"> 8370</span>&#160;</div><div class="line"><a name="l08371"></a><span class="lineno"> 8371</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l08372"></a><span class="lineno"> 8372</span>&#160; }</div><div class="line"><a name="l08373"></a><span class="lineno"> 8373</span>&#160;</div><div class="line"><a name="l08374"></a><span class="lineno"> 8374</span>&#160; <span class="keywordflow">case</span> lexer::token_type::literal_null:</div><div class="line"><a name="l08375"></a><span class="lineno"> 8375</span>&#160; {</div><div class="line"><a name="l08376"></a><span class="lineno"> 8376</span>&#160; get_token();</div><div class="line"><a name="l08377"></a><span class="lineno"> 8377</span>&#160; result.m_type = value_t::null;</div><div class="line"><a name="l08378"></a><span class="lineno"> 8378</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l08379"></a><span class="lineno"> 8379</span>&#160; }</div><div class="line"><a name="l08380"></a><span class="lineno"> 8380</span>&#160;</div><div class="line"><a name="l08381"></a><span class="lineno"> 8381</span>&#160; <span class="keywordflow">case</span> lexer::token_type::value_string:</div><div class="line"><a name="l08382"></a><span class="lineno"> 8382</span>&#160; {</div><div class="line"><a name="l08383"></a><span class="lineno"> 8383</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> s = m_lexer.get_string();</div><div class="line"><a name="l08384"></a><span class="lineno"> 8384</span>&#160; get_token();</div><div class="line"><a name="l08385"></a><span class="lineno"> 8385</span>&#160; result = basic_json(s);</div><div class="line"><a name="l08386"></a><span class="lineno"> 8386</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l08387"></a><span class="lineno"> 8387</span>&#160; }</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; <span class="keywordflow">case</span> lexer::token_type::literal_true:</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; get_token();</div><div class="line"><a name="l08392"></a><span class="lineno"> 8392</span>&#160; result.m_type = value_t::boolean;</div><div class="line"><a name="l08393"></a><span class="lineno"> 8393</span>&#160; result.m_value = <span class="keyword">true</span>;</div><div class="line"><a name="l08394"></a><span class="lineno"> 8394</span>&#160; <span class="keywordflow">break</span>;</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">case</span> lexer::token_type::literal_false:</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; get_token();</div><div class="line"><a name="l08400"></a><span class="lineno"> 8400</span>&#160; result.m_type = value_t::boolean;</div><div class="line"><a name="l08401"></a><span class="lineno"> 8401</span>&#160; result.m_value = <span class="keyword">false</span>;</div><div class="line"><a name="l08402"></a><span class="lineno"> 8402</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l08403"></a><span class="lineno"> 8403</span>&#160; }</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; <span class="keywordflow">case</span> lexer::token_type::value_number:</div><div class="line"><a name="l08406"></a><span class="lineno"> 8406</span>&#160; {</div><div class="line"><a name="l08407"></a><span class="lineno"> 8407</span>&#160; m_lexer.get_number(result);</div><div class="line"><a name="l08408"></a><span class="lineno"> 8408</span>&#160; get_token();</div><div class="line"><a name="l08409"></a><span class="lineno"> 8409</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l08410"></a><span class="lineno"> 8410</span>&#160; }</div><div class="line"><a name="l08411"></a><span class="lineno"> 8411</span>&#160;</div><div class="line"><a name="l08412"></a><span class="lineno"> 8412</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l08413"></a><span class="lineno"> 8413</span>&#160; {</div><div class="line"><a name="l08414"></a><span class="lineno"> 8414</span>&#160; <span class="comment">// the last token was unexpected</span></div><div class="line"><a name="l08415"></a><span class="lineno"> 8415</span>&#160; unexpect(last_token);</div><div class="line"><a name="l08416"></a><span class="lineno"> 8416</span>&#160; }</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;</div><div class="line"><a name="l08419"></a><span class="lineno"> 8419</span>&#160; <span class="keywordflow">if</span> (keep and callback and not callback(depth, parse_event_t::value, result))</div><div class="line"><a name="l08420"></a><span class="lineno"> 8420</span>&#160; {</div><div class="line"><a name="l08421"></a><span class="lineno"> 8421</span>&#160; result = basic_json(value_t::discarded);</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">return</span> result;</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;</div><div class="line"><a name="l08427"></a><span class="lineno"> 8427</span>&#160; <span class="keyword">typename</span> lexer::token_type get_token()</div><div class="line"><a name="l08428"></a><span class="lineno"> 8428</span>&#160; {</div><div class="line"><a name="l08429"></a><span class="lineno"> 8429</span>&#160; last_token = m_lexer.scan();</div><div class="line"><a name="l08430"></a><span class="lineno"> 8430</span>&#160; <span class="keywordflow">return</span> last_token;</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="keywordtype">void</span> expect(<span class="keyword">typename</span> lexer::token_type t)<span class="keyword"> const</span></div><div class="line"><a name="l08434"></a><span class="lineno"> 8434</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l08435"></a><span class="lineno"> 8435</span>&#160; <span class="keywordflow">if</span> (t != last_token)</div><div class="line"><a name="l08436"></a><span class="lineno"> 8436</span>&#160; {</div><div class="line"><a name="l08437"></a><span class="lineno"> 8437</span>&#160; std::string error_msg = <span class="stringliteral">&quot;parse error - unexpected &quot;</span>;</div><div class="line"><a name="l08438"></a><span class="lineno"> 8438</span>&#160; error_msg += (last_token == lexer::token_type::parse_error ? (<span class="stringliteral">&quot;&#39;&quot;</span> + m_lexer.get_token() + <span class="stringliteral">&quot;&#39;&quot;</span>) :</div><div class="line"><a name="l08439"></a><span class="lineno"> 8439</span>&#160; lexer::token_type_name(last_token));</div><div class="line"><a name="l08440"></a><span class="lineno"> 8440</span>&#160; error_msg += <span class="stringliteral">&quot;; expected &quot;</span> + lexer::token_type_name(t);</div><div class="line"><a name="l08441"></a><span class="lineno"> 8441</span>&#160; <span class="keywordflow">throw</span> std::invalid_argument(error_msg);</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; }</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; <span class="keywordtype">void</span> unexpect(<span class="keyword">typename</span> lexer::token_type t)<span class="keyword"> const</span></div><div class="line"><a name="l08446"></a><span class="lineno"> 8446</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l08447"></a><span class="lineno"> 8447</span>&#160; <span class="keywordflow">if</span> (t == last_token)</div><div class="line"><a name="l08448"></a><span class="lineno"> 8448</span>&#160; {</div><div class="line"><a name="l08449"></a><span class="lineno"> 8449</span>&#160; std::string error_msg = <span class="stringliteral">&quot;parse error - unexpected &quot;</span>;</div><div class="line"><a name="l08450"></a><span class="lineno"> 8450</span>&#160; error_msg += (last_token == lexer::token_type::parse_error ? (<span class="stringliteral">&quot;&#39;&quot;</span> + m_lexer.get_token() + <span class="stringliteral">&quot;&#39;&quot;</span>) :</div><div class="line"><a name="l08451"></a><span class="lineno"> 8451</span>&#160; lexer::token_type_name(last_token));</div><div class="line"><a name="l08452"></a><span class="lineno"> 8452</span>&#160; <span class="keywordflow">throw</span> std::invalid_argument(error_msg);</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; }</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; <span class="keyword">private</span>:</div><div class="line"><a name="l08458"></a><span class="lineno"> 8458</span>&#160; <span class="keywordtype">int</span> depth = 0;</div><div class="line"><a name="l08460"></a><span class="lineno"> 8460</span>&#160; <a class="code" href="classnlohmann_1_1basic__json_a9e35475e2027520a78e09f460dbe048a.html#a9e35475e2027520a78e09f460dbe048a">parser_callback_t</a> callback;</div><div class="line"><a name="l08462"></a><span class="lineno"> 8462</span>&#160; <span class="keyword">typename</span> lexer::token_type last_token = lexer::token_type::uninitialized;</div><div class="line"><a name="l08464"></a><span class="lineno"> 8464</span>&#160; lexer m_lexer;</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;};</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"> 8470</span>&#160;<span class="comment">// presets //</span></div><div class="line"><a name="l08472"></a><span class="lineno"> 8472</span>&#160;<span class="comment"></span></div><div class="line"><a name="l08481"></a><span class="lineno"><a class="line" href="namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html#a2bfd99e845a2e5cd90aeaf1b1431f474"> 8481</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="l08482"></a><span class="lineno"> 8482</span>&#160;}</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="l08486"></a><span class="lineno"> 8486</span>&#160;<span class="comment">// nonmember functions //</span></div><div class="line"><a name="l08488"></a><span class="lineno"> 8488</span>&#160;<span class="comment"></span></div><div class="line"><a name="l08489"></a><span class="lineno"> 8489</span>&#160;<span class="comment">// specialization of std::swap, and std::hash</span></div><div class="line"><a name="l08490"></a><span class="lineno"> 8490</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div><div class="line"><a name="l08491"></a><span class="lineno"> 8491</span>&#160;{</div><div class="line"><a name="l08497"></a><span class="lineno"> 8497</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l08498"></a><span class="lineno"> 8498</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> swap(<a class="code" href="classnlohmann_1_1basic__json.html">nlohmann::json</a>&amp; j1,</div><div class="line"><a name="l08499"></a><span class="lineno"> 8499</span>&#160; <a class="code" href="classnlohmann_1_1basic__json.html">nlohmann::json</a>&amp; j2) noexcept(</div><div class="line"><a name="l08500"></a><span class="lineno"> 8500</span>&#160; is_nothrow_move_constructible&lt;nlohmann::json&gt;::value and</div><div class="line"><a name="l08501"></a><span class="lineno"> 8501</span>&#160; is_nothrow_move_assignable&lt;nlohmann::json&gt;::value</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;{</div><div class="line"><a name="l08504"></a><span class="lineno"> 8504</span>&#160; j1.<a class="code" href="classnlohmann_1_1basic__json_af77614992e38b355b9213940051cc582.html#af77614992e38b355b9213940051cc582">swap</a>(j2);</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="l08508"></a><span class="lineno"> 8508</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l08509"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01nlohmann_1_1json_01_4.html"> 8509</a></span>&#160;<span class="keyword">struct </span>hash&lt;<a class="code" href="namespacenlohmann.html">nlohmann</a>::<a class="code" href="namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html#a2bfd99e845a2e5cd90aeaf1b1431f474">json</a>&gt;</div><div class="line"><a name="l08510"></a><span class="lineno"> 8510</span>&#160;{</div><div class="line"><a name="l08516"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01nlohmann_1_1json_01_4_afd03f6ad53db22868ca4163a8200b2f9.html#afd03f6ad53db22868ca4163a8200b2f9"> 8516</a></span>&#160; std::size_t <a class="code" href="structstd_1_1hash_3_01nlohmann_1_1json_01_4_afd03f6ad53db22868ca4163a8200b2f9.html#afd03f6ad53db22868ca4163a8200b2f9">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="l08517"></a><span class="lineno"> 8517</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l08518"></a><span class="lineno"> 8518</span>&#160; <span class="comment">// a naive hashing via the string representation</span></div><div class="line"><a name="l08519"></a><span class="lineno"> 8519</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="l08520"></a><span class="lineno"> 8520</span>&#160; <span class="keywordflow">return</span> h(j.<a class="code" href="classnlohmann_1_1basic__json_a805e3f3a2f374da0e14942eec7400e40.html#a805e3f3a2f374da0e14942eec7400e40">dump</a>());</div><div class="line"><a name="l08521"></a><span class="lineno"> 8521</span>&#160; }</div><div class="line"><a name="l08522"></a><span class="lineno"> 8522</span>&#160;};</div><div class="line"><a name="l08523"></a><span class="lineno"> 8523</span>&#160;}</div><div class="line"><a name="l08524"></a><span class="lineno"> 8524</span>&#160;</div><div class="line"><a name="l08537"></a><span class="lineno"> 8537</span>&#160;<span class="keyword">inline</span> <a class="code" href="classnlohmann_1_1basic__json.html">nlohmann::json</a> <span class="keyword">operator</span> <span class="stringliteral">&quot;&quot;</span> _json(<span class="keyword">const</span> <span class="keywordtype">char</span>* s, std::size_t)</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; <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json_a35303ad045a06c2a79dc28ac29652e86.html#a35303ad045a06c2a79dc28ac29652e86">nlohmann::json::parse</a>(reinterpret_cast&lt;const nlohmann::json::string_t::value_type*&gt;(s));</div><div class="line"><a name="l08540"></a><span class="lineno"> 8540</span>&#160;}</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">// restore GCC/clang diagnostic settings</span></div><div class="line"><a name="l08543"></a><span class="lineno"> 8543</span>&#160;<span class="preprocessor">#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)</span></div><div class="line"><a name="l08544"></a><span class="lineno"> 8544</span>&#160;<span class="preprocessor"> #pragma GCC diagnostic pop</span></div><div class="line"><a name="l08545"></a><span class="lineno"> 8545</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l08546"></a><span class="lineno"> 8546</span>&#160;</div><div class="line"><a name="l08547"></a><span class="lineno"> 8547</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="classnlohmann_1_1basic__json_a5ffdd3a9d2e02ebcbad13cb90af57523_html_a5ffdd3a9d2e02ebcbad13cb90af57523"><div class="ttname"><a href="classnlohmann_1_1basic__json_a5ffdd3a9d2e02ebcbad13cb90af57523.html#a5ffdd3a9d2e02ebcbad13cb90af57523">nlohmann::basic_json::is_null</a></div><div class="ttdeci">bool is_null() const noexcept</div><div class="ttdoc">return whether value is null </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02122">json.hpp:2122</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_ab07728b4da636eda0a24e0a51b8b46d7_html_ab07728b4da636eda0a24e0a51b8b46d7"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_ab07728b4da636eda0a24e0a51b8b46d7.html#ab07728b4da636eda0a24e0a51b8b46d7">nlohmann::basic_json::iterator::operator*</a></div><div class="ttdeci">reference operator*()</div><div class="ttdoc">return a reference to the value pointed to by the iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06676">json.hpp:6676</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a7f53f3afd83a13c949c6c42e66e9c4b4_html_a7f53f3afd83a13c949c6c42e66e9c4b4"><div class="ttname"><a href="classnlohmann_1_1basic__json_a7f53f3afd83a13c949c6c42e66e9c4b4.html#a7f53f3afd83a13c949c6c42e66e9c4b4">nlohmann::basic_json::rbegin</a></div><div class="ttdeci">reverse_iterator rbegin()</div><div class="ttdoc">returns an iterator to the reverse-beginning </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04088">json.hpp:4088</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a5c8bb5200f5eac10d31e26be46e5b1ac_html_a5c8bb5200f5eac10d31e26be46e5b1ac"><div class="ttname"><a href="classnlohmann_1_1basic__json_a5c8bb5200f5eac10d31e26be46e5b1ac.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> <a href="json_8hpp_source.html#l05315">json.hpp:5315</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a8f77085bd98c97a983d9ba12efbf6148_html_a8f77085bd98c97a983d9ba12efbf6148"><div class="ttname"><a href="classnlohmann_1_1basic__json_a8f77085bd98c97a983d9ba12efbf6148.html#a8f77085bd98c97a983d9ba12efbf6148">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const value_t value_type)</div><div class="ttdoc">create an empty value with a given type </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l00945">json.hpp:945</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a3aaf41d385f0d9a93deb92f9b14ae0cf_html_a3aaf41d385f0d9a93deb92f9b14ae0cf"><div class="ttname"><a href="classnlohmann_1_1basic__json_a3aaf41d385f0d9a93deb92f9b14ae0cf.html#a3aaf41d385f0d9a93deb92f9b14ae0cf">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const array_t &amp;val)</div><div class="ttdoc">create an array (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01071">json.hpp:1071</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a51b0036310d8aa5858fecc0d91127f27_html_a51b0036310d8aa5858fecc0d91127f27"><div class="ttname"><a href="classnlohmann_1_1basic__json_a51b0036310d8aa5858fecc0d91127f27.html#a51b0036310d8aa5858fecc0d91127f27">nlohmann::basic_json::count</a></div><div class="ttdeci">size_type count(typename object_t::key_type 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> <a href="json_8hpp_source.html#l03936">json.hpp:3936</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ad09218e192a80ffa8df531941afdab60_html_ad09218e192a80ffa8df531941afdab60"><div class="ttname"><a href="classnlohmann_1_1basic__json_ad09218e192a80ffa8df531941afdab60.html#ad09218e192a80ffa8df531941afdab60">nlohmann::basic_json::type</a></div><div class="ttdeci">value_t type() const noexcept</div><div class="ttdoc">return the type of the JSON value (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02062">json.hpp:2062</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a245b34ee6341bed2e3a611e223c53c48_html_a245b34ee6341bed2e3a611e223c53c48"><div class="ttname"><a href="classnlohmann_1_1basic__json_a245b34ee6341bed2e3a611e223c53c48.html#a245b34ee6341bed2e3a611e223c53c48">nlohmann::basic_json::is_number_integer</a></div><div class="ttdeci">bool is_number_integer() const noexcept</div><div class="ttdoc">return whether value is an integer number </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02194">json.hpp:2194</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a99f2e765029e51dd0fff018650f92eea_html_a99f2e765029e51dd0fff018650f92eea"><div class="ttname"><a href="classnlohmann_1_1basic__json_a99f2e765029e51dd0fff018650f92eea.html#a99f2e765029e51dd0fff018650f92eea">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> <a href="json_8hpp_source.html#l03156">json.hpp:3156</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_a8ffbf287736048e683f58306fdb8701f_html_a8ffbf287736048e683f58306fdb8701f"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_a8ffbf287736048e683f58306fdb8701f.html#a8ffbf287736048e683f58306fdb8701f">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06759">json.hpp:6759</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a563a7bd281e9919798d18396107fb05c_html_a563a7bd281e9919798d18396107fb05c"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a563a7bd281e9919798d18396107fb05c.html#a563a7bd281e9919798d18396107fb05c">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06821">json.hpp:6821</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a08ad7169ceb437efff7b2d4a8c0dafe2_html_a08ad7169ceb437efff7b2d4a8c0dafe2"><div class="ttname"><a href="classnlohmann_1_1basic__json_a08ad7169ceb437efff7b2d4a8c0dafe2.html#a08ad7169ceb437efff7b2d4a8c0dafe2">nlohmann::basic_json::is_boolean</a></div><div class="ttdeci">bool is_boolean() const noexcept</div><div class="ttdoc">return whether value is a boolean </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02141">json.hpp:2141</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ad6e51670e9c0052856f3fee01df5c44f_html_ad6e51670e9c0052856f3fee01df5c44f"><div class="ttname"><a href="classnlohmann_1_1basic__json_ad6e51670e9c0052856f3fee01df5c44f.html#ad6e51670e9c0052856f3fee01df5c44f">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> <a href="json_8hpp_source.html#l04425">json.hpp:4425</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_ab4c0b9baaec9ebc4837158e272f6c803_html_ab4c0b9baaec9ebc4837158e272f6c803"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_ab4c0b9baaec9ebc4837158e272f6c803.html#ab4c0b9baaec9ebc4837158e272f6c803">nlohmann::basic_json::const_iterator::operator==</a></div><div class="ttdeci">bool operator==(const const_iterator &amp;other) const </div><div class="ttdoc">comparison: equal </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06410">json.hpp:6410</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a693439bffe56a9a8cf53bc4a06b911ff_html_a693439bffe56a9a8cf53bc4a06b911ff"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a693439bffe56a9a8cf53bc4a06b911ff.html#a693439bffe56a9a8cf53bc4a06b911ff">nlohmann::basic_json::json_reverse_iterator::operator--</a></div><div class="ttdeci">json_reverse_iterator operator--(int)</div><div class="ttdoc">post-decrement (it–) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06815">json.hpp:6815</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a140b8251f82e99ad279dcad5c977e26b_html_a140b8251f82e99ad279dcad5c977e26b"><div class="ttname"><a href="classnlohmann_1_1basic__json_a140b8251f82e99ad279dcad5c977e26b.html#a140b8251f82e99ad279dcad5c977e26b">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">reference operator[](T *(&amp;key)[n])</div><div class="ttdoc">access specified object element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03288">json.hpp:3288</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8_html_aaf363408931d76472ded14017e59c9e8"><div class="ttname"><a href="classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.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> <a href="json_8hpp_source.html#l05528">json.hpp:5528</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a791afb7d6974c52b134d66aa1f249164_html_a791afb7d6974c52b134d66aa1f249164"><div class="ttname"><a href="classnlohmann_1_1basic__json_a791afb7d6974c52b134d66aa1f249164.html#a791afb7d6974c52b134d66aa1f249164">nlohmann::basic_json::is_number</a></div><div class="ttdeci">bool is_number() const noexcept</div><div class="ttdoc">return whether value is a number </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02168">json.hpp:2168</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_ae0c848dbc0af1cde15771d45d775b27c_html_ae0c848dbc0af1cde15771d45d775b27c"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_ae0c848dbc0af1cde15771d45d775b27c.html#ae0c848dbc0af1cde15771d45d775b27c">nlohmann::basic_json::iterator::operator+=</a></div><div class="ttdeci">iterator &amp; operator+=(difference_type i)</div><div class="ttdoc">add to iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06718">json.hpp:6718</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ad25b2f8c21e241e2d63455537a9294ff_html_ad25b2f8c21e241e2d63455537a9294ff"><div class="ttname"><a href="classnlohmann_1_1basic__json_ad25b2f8c21e241e2d63455537a9294ff.html#ad25b2f8c21e241e2d63455537a9294ff">nlohmann::basic_json::object</a></div><div class="ttdeci">static basic_json object(std::initializer_list&lt; basic_json &gt; init=std::initializer_list&lt; basic_json &gt;())</div><div class="ttdoc">explicitly create an object from an initializer list </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01650">json.hpp:1650</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_abc4552ba2fe39e7901a83dd6d4dec151_html_abc4552ba2fe39e7901a83dd6d4dec151"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_abc4552ba2fe39e7901a83dd6d4dec151.html#abc4552ba2fe39e7901a83dd6d4dec151">nlohmann::basic_json::const_iterator::operator-</a></div><div class="ttdeci">const_iterator operator-(difference_type i)</div><div class="ttdoc">subtract from iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06536">json.hpp:6536</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723_html_af3bc3e83aa162d7ba4df16a949872723"><div class="ttname"><a href="classnlohmann_1_1basic__json_af3bc3e83aa162d7ba4df16a949872723.html#af3bc3e83aa162d7ba4df16a949872723">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> <a href="json_8hpp_source.html#l00447">json.hpp:447</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a9486a272e034c0548305d7a12f3045e6_html_a9486a272e034c0548305d7a12f3045e6"><div class="ttname"><a href="classnlohmann_1_1basic__json_a9486a272e034c0548305d7a12f3045e6.html#a9486a272e034c0548305d7a12f3045e6">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> <a href="json_8hpp_source.html#l04611">json.hpp:4611</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a73619da32d2a1388f5c7b37f2032138f_html_a73619da32d2a1388f5c7b37f2032138f"><div class="ttname"><a href="classnlohmann_1_1basic__json_a73619da32d2a1388f5c7b37f2032138f.html#a73619da32d2a1388f5c7b37f2032138f">nlohmann::basic_json::is_array</a></div><div class="ttdeci">bool is_array() const noexcept</div><div class="ttdoc">return whether value is an array </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02282">json.hpp:2282</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a3654da9a84deaf61899c4eee5b93c2c5_html_a3654da9a84deaf61899c4eee5b93c2c5"><div class="ttname"><a href="classnlohmann_1_1basic__json_a3654da9a84deaf61899c4eee5b93c2c5.html#a3654da9a84deaf61899c4eee5b93c2c5">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const typename string_t::value_type *val)</div><div class="ttdoc">create a string (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01161">json.hpp:1161</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ae799491eda5f5868a38ccdafca9fe0f0_html_ae799491eda5f5868a38ccdafca9fe0f0"><div class="ttname"><a href="classnlohmann_1_1basic__json_ae799491eda5f5868a38ccdafca9fe0f0.html#ae799491eda5f5868a38ccdafca9fe0f0">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(boolean_t val)</div><div class="ttdoc">create a boolean (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01210">json.hpp:1210</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_ad4ec2bbb8347e7aa3b58e616fd6c7f40_html_ad4ec2bbb8347e7aa3b58e616fd6c7f40"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_ad4ec2bbb8347e7aa3b58e616fd6c7f40.html#ad4ec2bbb8347e7aa3b58e616fd6c7f40">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06857">json.hpp:6857</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_affe7e160e7bb06eed83c8b437af4692f_html_affe7e160e7bb06eed83c8b437af4692f"><div class="ttname"><a href="classnlohmann_1_1basic__json_affe7e160e7bb06eed83c8b437af4692f.html#affe7e160e7bb06eed83c8b437af4692f">nlohmann::basic_json::find</a></div><div class="ttdeci">iterator find(typename object_t::key_type key)</div><div class="ttdoc">find an element in a JSON object </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03888">json.hpp:3888</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a620e4d98496f85bd7be080248c0f14e9_html_a620e4d98496f85bd7be080248c0f14e9"><div class="ttname"><a href="classnlohmann_1_1basic__json_a620e4d98496f85bd7be080248c0f14e9.html#a620e4d98496f85bd7be080248c0f14e9">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const number_unsigned_t val)</div><div class="ttdoc">create an unsigned integer number (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01339">json.hpp:1339</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327_html_a6e2e21da48f5d9471716cd868a068327"><div class="ttname"><a href="classnlohmann_1_1basic__json_a6e2e21da48f5d9471716cd868a068327.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> <a href="json_8hpp_source.html#l05153">json.hpp:5153</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ab8b43d92a042dde96c28aeea81dd52de_html_ab8b43d92a042dde96c28aeea81dd52de"><div class="ttname"><a href="classnlohmann_1_1basic__json_ab8b43d92a042dde96c28aeea81dd52de.html#ab8b43d92a042dde96c28aeea81dd52de">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const string_t &amp;val)</div><div class="ttdoc">create a string (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01137">json.hpp:1137</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a6f3dfd3e83a1e907d7946b47fcd7ceba_html_a6f3dfd3e83a1e907d7946b47fcd7ceba"><div class="ttname"><a href="classnlohmann_1_1basic__json_a6f3dfd3e83a1e907d7946b47fcd7ceba.html#a6f3dfd3e83a1e907d7946b47fcd7ceba">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> <a href="json_8hpp_source.html#l04537">json.hpp:4537</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a3da254c422ede5495f2815c5e48c00c5_html_a3da254c422ede5495f2815c5e48c00c5"><div class="ttname"><a href="classnlohmann_1_1basic__json_a3da254c422ede5495f2815c5e48c00c5.html#a3da254c422ede5495f2815c5e48c00c5">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> <a href="json_8hpp_source.html#l03852">json.hpp:3852</a></div></div>
<div class="ttc" id="namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474_html_a2bfd99e845a2e5cd90aeaf1b1431f474"><div class="ttname"><a href="namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html#a2bfd99e845a2e5cd90aeaf1b1431f474">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> <a href="json_8hpp_source.html#l08481">json.hpp:8481</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0_html_ab00b882d39306d663c23dab110f5cae0"><div class="ttname"><a href="classnlohmann_1_1basic__json_ab00b882d39306d663c23dab110f5cae0.html#ab00b882d39306d663c23dab110f5cae0">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> <a href="json_8hpp_source.html#l00374">json.hpp:374</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_afec7d87796b8b538119b3ddc0d6950fb_html_afec7d87796b8b538119b3ddc0d6950fb"><div class="ttname"><a href="classnlohmann_1_1basic__json_afec7d87796b8b538119b3ddc0d6950fb.html#afec7d87796b8b538119b3ddc0d6950fb">nlohmann::basic_json::is_structured</a></div><div class="ttdeci">bool is_structured() const noexcept</div><div class="ttdoc">return whether type is structured </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02103">json.hpp:2103</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aa45753034bea87f9d2c0c42ace9ff75c_html_aa45753034bea87f9d2c0c42ace9ff75c"><div class="ttname"><a href="classnlohmann_1_1basic__json_aa45753034bea87f9d2c0c42ace9ff75c.html#aa45753034bea87f9d2c0c42ace9ff75c">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> <a href="json_8hpp_source.html#l03523">json.hpp:3523</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a38ee0f09a318d003add75e0787040794_html_a38ee0f09a318d003add75e0787040794"><div class="ttname"><a href="classnlohmann_1_1basic__json_a38ee0f09a318d003add75e0787040794.html#a38ee0f09a318d003add75e0787040794">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> <a href="json_8hpp_source.html#l04909">json.hpp:4909</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_ac2634bee082633671125e909dffad40a_html_ac2634bee082633671125e909dffad40a"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_ac2634bee082633671125e909dffad40a.html#ac2634bee082633671125e909dffad40a">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06843">json.hpp:6843</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a0d5820d1dda9dea3bbeb029cacf68522_html_a0d5820d1dda9dea3bbeb029cacf68522"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a0d5820d1dda9dea3bbeb029cacf68522.html#a0d5820d1dda9dea3bbeb029cacf68522">nlohmann::basic_json::const_iterator::operator+=</a></div><div class="ttdeci">const_iterator &amp; operator+=(difference_type i)</div><div class="ttdoc">add to iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06494">json.hpp:6494</a></div></div>
<div class="ttc" id="classnlohmann_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> <a href="json_8hpp_source.html#l00168">json.hpp:168</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a6adb089a5cacff9c7ad80d753b3fdf98_html_a6adb089a5cacff9c7ad80d753b3fdf98"><div class="ttname"><a href="classnlohmann_1_1basic__json_a6adb089a5cacff9c7ad80d753b3fdf98.html#a6adb089a5cacff9c7ad80d753b3fdf98">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const number_float_t val)</div><div class="ttdoc">create a floating-point number (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01399">json.hpp:1399</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_ae58cd597336ad125d9615cff87fcd87e_html_ae58cd597336ad125d9615cff87fcd87e"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_ae58cd597336ad125d9615cff87fcd87e.html#ae58cd597336ad125d9615cff87fcd87e">nlohmann::basic_json::iterator::operator-&gt;</a></div><div class="ttdeci">pointer operator-&gt;()</div><div class="ttdoc">dereference the iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06682">json.hpp:6682</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_aca5116682e206dac48f8a56716a3280b_html_aca5116682e206dac48f8a56716a3280b"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_aca5116682e206dac48f8a56716a3280b.html#aca5116682e206dac48f8a56716a3280b">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06870">json.hpp:6870</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52_html_a98e05a2c9b8f74bd60442772cddeee52"><div class="ttname"><a href="classnlohmann_1_1basic__json_a98e05a2c9b8f74bd60442772cddeee52.html#a98e05a2c9b8f74bd60442772cddeee52">nlohmann::basic_json::operator==</a></div><div class="ttdeci">friend bool operator==(std::nullptr_t, const_reference v) noexcept</div><div class="ttdoc">comparison: equal </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l05132">json.hpp:5132</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a3da0951c80c8f4b26497aba38cb3e463_html_a3da0951c80c8f4b26497aba38cb3e463"><div class="ttname"><a href="classnlohmann_1_1basic__json_a3da0951c80c8f4b26497aba38cb3e463.html#a3da0951c80c8f4b26497aba38cb3e463">nlohmann::basic_json::crbegin</a></div><div class="ttdeci">const_reverse_iterator crbegin() const </div><div class="ttdoc">returns a const reverse iterator to the last element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04150">json.hpp:4150</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59_html_ac4b10b2364f26ce47bdb9a413ff04a59"><div class="ttname"><a href="classnlohmann_1_1basic__json_ac4b10b2364f26ce47bdb9a413ff04a59.html#ac4b10b2364f26ce47bdb9a413ff04a59">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> <a href="json_8hpp_source.html#l00518">json.hpp:518</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a624025acfcf64364d98424402b837bc6_html_a624025acfcf64364d98424402b837bc6"><div class="ttname"><a href="classnlohmann_1_1basic__json_a624025acfcf64364d98424402b837bc6.html#a624025acfcf64364d98424402b837bc6">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> <a href="json_8hpp_source.html#l04695">json.hpp:4695</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a674de1ee73e6bf4843fc5dc1351fb726_html_a674de1ee73e6bf4843fc5dc1351fb726"><div class="ttname"><a href="classnlohmann_1_1basic__json_a674de1ee73e6bf4843fc5dc1351fb726.html#a674de1ee73e6bf4843fc5dc1351fb726">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> <a href="json_8hpp_source.html#l03064">json.hpp:3064</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a7a80257f2303210b0a5d056fc0b30b40_html_a7a80257f2303210b0a5d056fc0b30b40"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a7a80257f2303210b0a5d056fc0b30b40.html#a7a80257f2303210b0a5d056fc0b30b40">nlohmann::basic_json::const_iterator::operator+</a></div><div class="ttdeci">const_iterator operator+(difference_type i)</div><div class="ttdoc">add to iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06528">json.hpp:6528</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a9c01092601b6229eee4f971aad263133_html_a9c01092601b6229eee4f971aad263133"><div class="ttname"><a href="classnlohmann_1_1basic__json_a9c01092601b6229eee4f971aad263133.html#a9c01092601b6229eee4f971aad263133">nlohmann::basic_json::rbegin</a></div><div class="ttdeci">const_reverse_iterator rbegin() const </div><div class="ttdoc">returns a const reverse iterator to the last element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04096">json.hpp:4096</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_html"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator.html">nlohmann::basic_json::iterator</a></div><div class="ttdoc">a mutable random access iterator for the basic_json class </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06643">json.hpp:6643</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ab81f2801779e6cb9d98770860af2e39a_html_ab81f2801779e6cb9d98770860af2e39a"><div class="ttname"><a href="classnlohmann_1_1basic__json_ab81f2801779e6cb9d98770860af2e39a.html#ab81f2801779e6cb9d98770860af2e39a">nlohmann::basic_json::parse</a></div><div class="ttdeci">static basic_json parse(std::istream &amp;&amp;i, parser_callback_t cb=nullptr)</div><div class="ttdoc">deserialize from stream </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l05490">json.hpp:5490</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a8dbaec5bf8ccba3225520356629061cb_html_a8dbaec5bf8ccba3225520356629061cb"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a8dbaec5bf8ccba3225520356629061cb.html#a8dbaec5bf8ccba3225520356629061cb">nlohmann::basic_json::const_iterator::operator++</a></div><div class="ttdeci">const_iterator operator++(int)</div><div class="ttdoc">post-increment (it++) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06336">json.hpp:6336</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ad2f716992118a42aa8f8d57950a8d0bb_html_ad2f716992118a42aa8f8d57950a8d0bb"><div class="ttname"><a href="classnlohmann_1_1basic__json_ad2f716992118a42aa8f8d57950a8d0bb.html#ad2f716992118a42aa8f8d57950a8d0bb">nlohmann::basic_json::is_string</a></div><div class="ttdeci">bool is_string() const noexcept</div><div class="ttdoc">return whether value is a string </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02301">json.hpp:2301</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f_html_a0ac9894c9de8dc551cf2e5f1c605537f"><div class="ttname"><a href="classnlohmann_1_1basic__json_a0ac9894c9de8dc551cf2e5f1c605537f.html#a0ac9894c9de8dc551cf2e5f1c605537f">nlohmann::basic_json::object_t</a></div><div class="ttdeci">ObjectType&lt; StringType, basic_json, std::less&lt; StringType &gt;, 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> <a href="json_8hpp_source.html#l00328">json.hpp:328</a></div></div>
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdoc">STL namespace. </div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d_html_a60a04166c122072ab11eaf9845d9cd1d"><div class="ttname"><a href="classnlohmann_1_1basic__json_a60a04166c122072ab11eaf9845d9cd1d.html#a60a04166c122072ab11eaf9845d9cd1d">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> <a href="json_8hpp_source.html#l00590">json.hpp:590</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a06efb200b69942eacd1ea22d0f6ccebb_html_a06efb200b69942eacd1ea22d0f6ccebb"><div class="ttname"><a href="classnlohmann_1_1basic__json_a06efb200b69942eacd1ea22d0f6ccebb.html#a06efb200b69942eacd1ea22d0f6ccebb">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> <a href="json_8hpp_source.html#l00209">json.hpp:209</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a5685815624b086caa532f41e853d4b0f_html_a5685815624b086caa532f41e853d4b0f"><div class="ttname"><a href="classnlohmann_1_1basic__json_a5685815624b086caa532f41e853d4b0f.html#a5685815624b086caa532f41e853d4b0f">nlohmann::basic_json::array</a></div><div class="ttdeci">static basic_json array(std::initializer_list&lt; basic_json &gt; init=std::initializer_list&lt; basic_json &gt;())</div><div class="ttdoc">explicitly create an array from an initializer list </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01610">json.hpp:1610</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_af148cdab12df5bf86119fac735ccaac5_html_af148cdab12df5bf86119fac735ccaac5"><div class="ttname"><a href="classnlohmann_1_1basic__json_af148cdab12df5bf86119fac735ccaac5.html#af148cdab12df5bf86119fac735ccaac5">nlohmann::basic_json::iterator_wrapper</a></div><div class="ttdeci">static iteration_proxy&lt; const_iterator &gt; iterator_wrapper(const_reference cont)</div><div class="ttdoc">wrapper to access iterator member functions in range-based for </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04202">json.hpp:4202</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a7c3182cfabc0bdd9f3a14216fe0e8154_html_a7c3182cfabc0bdd9f3a14216fe0e8154"><div class="ttname"><a href="classnlohmann_1_1basic__json_a7c3182cfabc0bdd9f3a14216fe0e8154.html#a7c3182cfabc0bdd9f3a14216fe0e8154">nlohmann::basic_json::operator=</a></div><div class="ttdeci">reference &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> <a href="json_8hpp_source.html#l01936">json.hpp:1936</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a9ea0497199b1e96ce9cadd1f202ec343_html_a9ea0497199b1e96ce9cadd1f202ec343"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a9ea0497199b1e96ce9cadd1f202ec343.html#a9ea0497199b1e96ce9cadd1f202ec343">nlohmann::basic_json::const_iterator::value_type</a></div><div class="ttdeci">typename basic_json::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> <a href="json_8hpp_source.html#l06108">json.hpp:6108</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a7ab11375ed2e29c2fcb6119386851445_html_a7ab11375ed2e29c2fcb6119386851445"><div class="ttname"><a href="classnlohmann_1_1basic__json_a7ab11375ed2e29c2fcb6119386851445.html#a7ab11375ed2e29c2fcb6119386851445">nlohmann::basic_json::get_ptr</a></div><div class="ttdeci">PointerType get_ptr() noexcept</div><div class="ttdoc">get a pointer value (implicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02778">json.hpp:2778</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a71b1d38ef402dfee58fba1fe01fa67f5_html_a71b1d38ef402dfee58fba1fe01fa67f5"><div class="ttname"><a href="classnlohmann_1_1basic__json_a71b1d38ef402dfee58fba1fe01fa67f5.html#a71b1d38ef402dfee58fba1fe01fa67f5">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> <a href="json_8hpp_source.html#l03557">json.hpp:3557</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_af677a29b0e66edc9f66e5167e4667071_html_af677a29b0e66edc9f66e5167e4667071"><div class="ttname"><a href="classnlohmann_1_1basic__json_af677a29b0e66edc9f66e5167e4667071.html#af677a29b0e66edc9f66e5167e4667071">nlohmann::basic_json::const_reference</a></div><div class="ttdeci">const value_type &amp; const_reference</div><div class="ttdoc">the type of an element const reference </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l00196">json.hpp:196</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389_html_a1da96fc3054d547e7706d3a2f073f389"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a1da96fc3054d547e7706d3a2f073f389.html#a1da96fc3054d547e7706d3a2f073f389">nlohmann::basic_json::const_iterator::pointer</a></div><div class="ttdeci">typename basic_json::const_pointer pointer</div><div class="ttdoc">defines a pointer to the type iterated over (value_type) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06112">json.hpp:6112</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ab7d704826813d13731fbcaf220160826_html_ab7d704826813d13731fbcaf220160826"><div class="ttname"><a href="classnlohmann_1_1basic__json_ab7d704826813d13731fbcaf220160826.html#ab7d704826813d13731fbcaf220160826">nlohmann::basic_json::is_number_unsigned</a></div><div class="ttdeci">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> <a href="json_8hpp_source.html#l02219">json.hpp:2219</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a5212588544f6d2266384c3be9bfda0c5_html_a5212588544f6d2266384c3be9bfda0c5"><div class="ttname"><a href="classnlohmann_1_1basic__json_a5212588544f6d2266384c3be9bfda0c5.html#a5212588544f6d2266384c3be9bfda0c5">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> <a href="json_8hpp_source.html#l04587">json.hpp:4587</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a1ec2232bcd43091d49f8dfdd6cfe9865_html_a1ec2232bcd43091d49f8dfdd6cfe9865"><div class="ttname"><a href="classnlohmann_1_1basic__json_a1ec2232bcd43091d49f8dfdd6cfe9865.html#a1ec2232bcd43091d49f8dfdd6cfe9865">nlohmann::basic_json::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdoc">returns an iterator to one past the last element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04030">json.hpp:4030</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a35303ad045a06c2a79dc28ac29652e86_html_a35303ad045a06c2a79dc28ac29652e86"><div class="ttname"><a href="classnlohmann_1_1basic__json_a35303ad045a06c2a79dc28ac29652e86.html#a35303ad045a06c2a79dc28ac29652e86">nlohmann::basic_json::parse</a></div><div class="ttdeci">static basic_json parse(const string_t &amp;s, parser_callback_t cb=nullptr)</div><div class="ttdoc">deserialize from string </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l05453">json.hpp:5453</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ad9cd312208273fb3fb2adf1f6d8d34ae_html_ad9cd312208273fb3fb2adf1f6d8d34ae"><div class="ttname"><a href="classnlohmann_1_1basic__json_ad9cd312208273fb3fb2adf1f6d8d34ae.html#ad9cd312208273fb3fb2adf1f6d8d34ae">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">const_reference operator[](T *(&amp;key)[n]) const </div><div class="ttdoc">read-only access specified object element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03323">json.hpp:3323</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aeaa0644fd6b99af364e772092268dfd6_html_aeaa0644fd6b99af364e772092268dfd6"><div class="ttname"><a href="classnlohmann_1_1basic__json_aeaa0644fd6b99af364e772092268dfd6.html#aeaa0644fd6b99af364e772092268dfd6">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> <a href="json_8hpp_source.html#l04748">json.hpp:4748</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ade0e56c8c320d7f342e7a5697e6d6f7e_html_ade0e56c8c320d7f342e7a5697e6d6f7e"><div class="ttname"><a href="classnlohmann_1_1basic__json_ade0e56c8c320d7f342e7a5697e6d6f7e.html#ade0e56c8c320d7f342e7a5697e6d6f7e">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(std::nullptr_t) noexcept</div><div class="ttdoc">create a null object (explicitly) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l00989">json.hpp:989</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_af7acf3838a79363356f24538941a559c_html_af7acf3838a79363356f24538941a559c"><div class="ttname"><a href="classnlohmann_1_1basic__json_af7acf3838a79363356f24538941a559c.html#af7acf3838a79363356f24538941a559c">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> <a href="json_8hpp_source.html#l01720">json.hpp:1720</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_a7e01532727c10f87926dac4eb8e170f4_html_a7e01532727c10f87926dac4eb8e170f4"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_a7e01532727c10f87926dac4eb8e170f4.html#a7e01532727c10f87926dac4eb8e170f4">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06753">json.hpp:6753</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a1a446a48beed4ea564addfd12d235793_html_a1a446a48beed4ea564addfd12d235793"><div class="ttname"><a href="classnlohmann_1_1basic__json_a1a446a48beed4ea564addfd12d235793.html#a1a446a48beed4ea564addfd12d235793">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> <a href="json_8hpp_source.html#l00229">json.hpp:229</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a2e26bd0b0168abb61f67ad5bcd5b9fa1_html_a2e26bd0b0168abb61f67ad5bcd5b9fa1"><div class="ttname"><a href="classnlohmann_1_1basic__json_a2e26bd0b0168abb61f67ad5bcd5b9fa1.html#a2e26bd0b0168abb61f67ad5bcd5b9fa1">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> <a href="json_8hpp_source.html#l03245">json.hpp:3245</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aa6fd72df1ce9f80e61012784c598456e_html_aa6fd72df1ce9f80e61012784c598456e"><div class="ttname"><a href="classnlohmann_1_1basic__json_aa6fd72df1ce9f80e61012784c598456e.html#aa6fd72df1ce9f80e61012784c598456e">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">const_reference operator[](T *key) const </div><div class="ttdoc">read-only access specified object element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03405">json.hpp:3405</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a99ee137dab7e5c948457f6a5321b54b1_html_a99ee137dab7e5c948457f6a5321b54b1"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a99ee137dab7e5c948457f6a5321b54b1.html#a99ee137dab7e5c948457f6a5321b54b1">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06835">json.hpp:6835</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a90239431815c94b0a334f7f4c55eb859_html_a90239431815c94b0a334f7f4c55eb859"><div class="ttname"><a href="classnlohmann_1_1basic__json_a90239431815c94b0a334f7f4c55eb859.html#a90239431815c94b0a334f7f4c55eb859">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> <a href="json_8hpp_source.html#l04246">json.hpp:4246</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b_html_a1579a8f72a230358d6cd1a6e8a62859b"><div class="ttname"><a href="classnlohmann_1_1basic__json_a1579a8f72a230358d6cd1a6e8a62859b.html#a1579a8f72a230358d6cd1a6e8a62859b">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> <a href="json_8hpp_source.html#l00201">json.hpp:201</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_acecae6d237fcf14c909fb42b9d2e2955_html_acecae6d237fcf14c909fb42b9d2e2955"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_acecae6d237fcf14c909fb42b9d2e2955.html#acecae6d237fcf14c909fb42b9d2e2955">nlohmann::basic_json::json_reverse_iterator::key</a></div><div class="ttdeci">object_t::key_type key() const </div><div class="ttdoc">return the key of an object iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06863">json.hpp:6863</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a81aaaab0f3b326afda2d226daab4f1e1_html_a81aaaab0f3b326afda2d226daab4f1e1"><div class="ttname"><a href="classnlohmann_1_1basic__json_a81aaaab0f3b326afda2d226daab4f1e1.html#a81aaaab0f3b326afda2d226daab4f1e1">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const CompatibleArrayType &amp;val)</div><div class="ttdoc">create an array (implicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01108">json.hpp:1108</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ab31368c0b67f8e4f291a45e6498018be_html_ab31368c0b67f8e4f291a45e6498018be"><div class="ttname"><a href="classnlohmann_1_1basic__json_ab31368c0b67f8e4f291a45e6498018be.html#ab31368c0b67f8e4f291a45e6498018be">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> <a href="json_8hpp_source.html#l02968">json.hpp:2968</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a112a2d8e76345ea64f71e2985fee4c52_html_a112a2d8e76345ea64f71e2985fee4c52"><div class="ttname"><a href="classnlohmann_1_1basic__json_a112a2d8e76345ea64f71e2985fee4c52.html#a112a2d8e76345ea64f71e2985fee4c52">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> <a href="json_8hpp_source.html#l01674">json.hpp:1674</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9ebc4c99e6fc90c965af0f39ad2ca70e_html_a9ebc4c99e6fc90c965af0f39ad2ca70e"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9ebc4c99e6fc90c965af0f39ad2ca70e.html#a9ebc4c99e6fc90c965af0f39ad2ca70e">nlohmann::basic_json::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 adaptor </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06787">json.hpp:6787</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aadb4e5be88221e5e28cdb752332f3d13_html_aadb4e5be88221e5e28cdb752332f3d13"><div class="ttname"><a href="classnlohmann_1_1basic__json_aadb4e5be88221e5e28cdb752332f3d13.html#aadb4e5be88221e5e28cdb752332f3d13">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, std::initializer_list&lt; basic_json &gt; ilist)</div><div class="ttdoc">inserts elements </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04806">json.hpp:4806</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_ac6f4562e16e99b60820d100880b4c3c8_html_ac6f4562e16e99b60820d100880b4c3c8"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_ac6f4562e16e99b60820d100880b4c3c8.html#ac6f4562e16e99b60820d100880b4c3c8">nlohmann::basic_json::const_iterator::const_iterator</a></div><div class="ttdeci">const_iterator(const iterator &amp;other)</div><div class="ttdoc">copy constructor given a nonconst iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06149">json.hpp:6149</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a9d1b58099dc64695fcf2847ab0b2a7c7_html_a9d1b58099dc64695fcf2847ab0b2a7c7"><div class="ttname"><a href="classnlohmann_1_1basic__json_a9d1b58099dc64695fcf2847ab0b2a7c7.html#a9d1b58099dc64695fcf2847ab0b2a7c7">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> <a href="json_8hpp_source.html#l00207">json.hpp:207</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a7f7bbb3a9efef2e2442f538a24c1c47b_html_a7f7bbb3a9efef2e2442f538a24c1c47b"><div class="ttname"><a href="classnlohmann_1_1basic__json_a7f7bbb3a9efef2e2442f538a24c1c47b.html#a7f7bbb3a9efef2e2442f538a24c1c47b">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> <a href="json_8hpp_source.html#l04639">json.hpp:4639</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453_html_a74a943800c7f103d0990d7eef82c6453"><div class="ttname"><a href="classnlohmann_1_1basic__json_a74a943800c7f103d0990d7eef82c6453.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> <a href="json_8hpp_source.html#l05359">json.hpp:5359</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aacd442b66140c764c594ac8ad7dfd5b3_html_aacd442b66140c764c594ac8ad7dfd5b3"><div class="ttname"><a href="classnlohmann_1_1basic__json_aacd442b66140c764c594ac8ad7dfd5b3.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> <a href="json_8hpp_source.html#l05214">json.hpp:5214</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_a050b7fa21051ea57e5b0cc03668b5d4a_html_a050b7fa21051ea57e5b0cc03668b5d4a"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_a050b7fa21051ea57e5b0cc03668b5d4a.html#a050b7fa21051ea57e5b0cc03668b5d4a">nlohmann::basic_json::iterator::operator++</a></div><div class="ttdeci">iterator &amp; operator++()</div><div class="ttdoc">pre-increment (++it) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06696">json.hpp:6696</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a65f491b515e5967e9c0b40289e3c0ff3_html_a65f491b515e5967e9c0b40289e3c0ff3"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a65f491b515e5967e9c0b40289e3c0ff3.html#a65f491b515e5967e9c0b40289e3c0ff3">nlohmann::basic_json::const_iterator::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const const_iterator &amp;other) const </div><div class="ttdoc">comparison: smaller </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06446">json.hpp:6446</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_a2943e49b3d88e6ee5793c5923ab2ede9_html_a2943e49b3d88e6ee5793c5923ab2ede9"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_a2943e49b3d88e6ee5793c5923ab2ede9.html#a2943e49b3d88e6ee5793c5923ab2ede9">nlohmann::basic_json::iterator::operator++</a></div><div class="ttdeci">iterator operator++(int)</div><div class="ttdoc">post-increment (it++) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06688">json.hpp:6688</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a73e150cbcba5643cb89de8f515eb64e2_html_a73e150cbcba5643cb89de8f515eb64e2"><div class="ttname"><a href="classnlohmann_1_1basic__json_a73e150cbcba5643cb89de8f515eb64e2.html#a73e150cbcba5643cb89de8f515eb64e2">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> <a href="json_8hpp_source.html#l01906">json.hpp:1906</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a6cab1c2ed7e2a014980e2a5717f43a64_html_a6cab1c2ed7e2a014980e2a5717f43a64"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a6cab1c2ed7e2a014980e2a5717f43a64.html#a6cab1c2ed7e2a014980e2a5717f43a64">nlohmann::basic_json::const_iterator::operator--</a></div><div class="ttdeci">const_iterator operator--(int)</div><div class="ttdoc">post-decrement (it–) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06373">json.hpp:6373</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a626a27f30d6912d7f516eac511fd3362_html_a626a27f30d6912d7f516eac511fd3362"><div class="ttname"><a href="classnlohmann_1_1basic__json_a626a27f30d6912d7f516eac511fd3362.html#a626a27f30d6912d7f516eac511fd3362">nlohmann::basic_json::is_discarded</a></div><div class="ttdeci">bool is_discarded() const noexcept</div><div class="ttdoc">return whether value is discarded </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02325">json.hpp:2325</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a7ed92d56cb313b243c1917696ffdf074_html_a7ed92d56cb313b243c1917696ffdf074"><div class="ttname"><a href="classnlohmann_1_1basic__json_a7ed92d56cb313b243c1917696ffdf074.html#a7ed92d56cb313b243c1917696ffdf074">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> <a href="json_8hpp_source.html#l03016">json.hpp:3016</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_a3db892729714c4e7eaf60c00ee96e2e9_html_a3db892729714c4e7eaf60c00ee96e2e9"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_a3db892729714c4e7eaf60c00ee96e2e9.html#a3db892729714c4e7eaf60c00ee96e2e9">nlohmann::basic_json::iterator::operator=</a></div><div class="ttdeci">iterator &amp; operator=(iterator other) noexcept( std::is_nothrow_move_constructible&lt; pointer &gt;::value and std::is_nothrow_move_assignable&lt; pointer &gt;::value and std::is_nothrow_move_constructible&lt; internal_iterator &gt;::value and std::is_nothrow_move_assignable&lt; internal_iterator &gt;::value )</div><div class="ttdoc">copy assignment </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06664">json.hpp:6664</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522_html_a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666"><div class="ttname"><a href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522aa8cfde6331bd59eb2ac96f8911c4b666">nlohmann::basic_json::value_t::object</a></div><div class="ttdoc">object (unordered set of name/value pairs) </div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ad5514a7435f246fc5335856465022a7a_html_ad5514a7435f246fc5335856465022a7a"><div class="ttname"><a href="classnlohmann_1_1basic__json_ad5514a7435f246fc5335856465022a7a.html#ad5514a7435f246fc5335856465022a7a">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> <a href="json_8hpp_source.html#l04366">json.hpp:4366</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a947b5b2a832e490858dbdddfe7085831_html_a947b5b2a832e490858dbdddfe7085831"><div class="ttname"><a href="classnlohmann_1_1basic__json_a947b5b2a832e490858dbdddfe7085831.html#a947b5b2a832e490858dbdddfe7085831">nlohmann::basic_json::~basic_json</a></div><div class="ttdeci">~basic_json()</div><div class="ttdoc">destructor </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01962">json.hpp:1962</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_ab4f238aa5fcf452b1884b748b0395b1f_html_ab4f238aa5fcf452b1884b748b0395b1f"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_ab4f238aa5fcf452b1884b748b0395b1f.html#ab4f238aa5fcf452b1884b748b0395b1f">nlohmann::basic_json::iterator::operator--</a></div><div class="ttdeci">iterator operator--(int)</div><div class="ttdoc">post-decrement (it–) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06703">json.hpp:6703</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_a790f550ff168095c83c2e459c575916c_html_a790f550ff168095c83c2e459c575916c"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_a790f550ff168095c83c2e459c575916c.html#a790f550ff168095c83c2e459c575916c">nlohmann::basic_json::iterator::operator-</a></div><div class="ttdeci">iterator operator-(difference_type i)</div><div class="ttdoc">subtract from iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06740">json.hpp:6740</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_adeb2ff3fdf3cc301b72db109934c9199_html_adeb2ff3fdf3cc301b72db109934c9199"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_adeb2ff3fdf3cc301b72db109934c9199.html#adeb2ff3fdf3cc301b72db109934c9199">nlohmann::basic_json::const_iterator::operator--</a></div><div class="ttdeci">const_iterator &amp; operator--()</div><div class="ttdoc">pre-decrement (–it) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06381">json.hpp:6381</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ae129dc8ccd58cc3c64614db7d40a7dc9_html_ae129dc8ccd58cc3c64614db7d40a7dc9"><div class="ttname"><a href="classnlohmann_1_1basic__json_ae129dc8ccd58cc3c64614db7d40a7dc9.html#ae129dc8ccd58cc3c64614db7d40a7dc9">nlohmann::basic_json::cend</a></div><div class="ttdeci">const_iterator cend() const </div><div class="ttdoc">returns a const iterator to one past the last element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04064">json.hpp:4064</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a805e3f3a2f374da0e14942eec7400e40_html_a805e3f3a2f374da0e14942eec7400e40"><div class="ttname"><a href="classnlohmann_1_1basic__json_a805e3f3a2f374da0e14942eec7400e40.html#a805e3f3a2f374da0e14942eec7400e40">nlohmann::basic_json::dump</a></div><div class="ttdeci">string_t dump(const int indent=-1) const </div><div class="ttdoc">serialization </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02031">json.hpp:2031</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ac8d45b57874b4a6e9c07f7d3b5daa1f9_html_ac8d45b57874b4a6e9c07f7d3b5daa1f9"><div class="ttname"><a href="classnlohmann_1_1basic__json_ac8d45b57874b4a6e9c07f7d3b5daa1f9.html#ac8d45b57874b4a6e9c07f7d3b5daa1f9">nlohmann::basic_json::value_type</a></div><div class="ttdeci">basic_json value_type</div><div class="ttdoc">the type of elements in a basic_json container </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l00191">json.hpp:191</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a9e35475e2027520a78e09f460dbe048a_html_a9e35475e2027520a78e09f460dbe048a"><div class="ttname"><a href="classnlohmann_1_1basic__json_a9e35475e2027520a78e09f460dbe048a.html#a9e35475e2027520a78e09f460dbe048a">nlohmann::basic_json::parser_callback_t</a></div><div class="ttdeci">std::function&lt; bool(int depth, parse_event_t event, basic_json &amp;parsed)&gt; parser_callback_t</div><div class="ttdoc">per-element parser callback type </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l00896">json.hpp:896</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aa44ce84b9ac506b905b8fb56c9a0989d_html_aa44ce84b9ac506b905b8fb56c9a0989d"><div class="ttname"><a href="classnlohmann_1_1basic__json_aa44ce84b9ac506b905b8fb56c9a0989d.html#aa44ce84b9ac506b905b8fb56c9a0989d">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> <a href="json_8hpp_source.html#l00204">json.hpp:204</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42_html_ab63e618bbb0371042b1bec17f5891f42"><div class="ttname"><a href="classnlohmann_1_1basic__json_ab63e618bbb0371042b1bec17f5891f42.html#ab63e618bbb0371042b1bec17f5891f42">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> <a href="json_8hpp_source.html#l00421">json.hpp:421</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a80c21170db6b5ffd9274b3f351cebadc_html_a80c21170db6b5ffd9274b3f351cebadc"><div class="ttname"><a href="classnlohmann_1_1basic__json_a80c21170db6b5ffd9274b3f351cebadc.html#a80c21170db6b5ffd9274b3f351cebadc">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> <a href="json_8hpp_source.html#l04561">json.hpp:4561</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a4cf971f099c8114bb96c9d1c93e683f3_html_a4cf971f099c8114bb96c9d1c93e683f3"><div class="ttname"><a href="classnlohmann_1_1basic__json_a4cf971f099c8114bb96c9d1c93e683f3.html#a4cf971f099c8114bb96c9d1c93e683f3">nlohmann::basic_json::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">returns an iterator to the first element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03971">json.hpp:3971</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a5e4d98a8f95e2eccde8cd48c19efa196_html_a5e4d98a8f95e2eccde8cd48c19efa196"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a5e4d98a8f95e2eccde8cd48c19efa196.html#a5e4d98a8f95e2eccde8cd48c19efa196">nlohmann::basic_json::const_iterator::operator-</a></div><div class="ttdeci">difference_type operator-(const const_iterator &amp;other) const </div><div class="ttdoc">return difference </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06544">json.hpp:6544</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a3ec8e17be8732fe436e9d6733f52b7a3_html_a3ec8e17be8732fe436e9d6733f52b7a3"><div class="ttname"><a href="classnlohmann_1_1basic__json_a3ec8e17be8732fe436e9d6733f52b7a3.html#a3ec8e17be8732fe436e9d6733f52b7a3">nlohmann::basic_json::reference</a></div><div class="ttdeci">value_type &amp; reference</div><div class="ttdoc">the type of an element reference </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l00194">json.hpp:194</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ad534f6d0d48bfd1d85f72d7f1b62a46d_html_ad534f6d0d48bfd1d85f72d7f1b62a46d"><div class="ttname"><a href="classnlohmann_1_1basic__json_ad534f6d0d48bfd1d85f72d7f1b62a46d.html#ad534f6d0d48bfd1d85f72d7f1b62a46d">nlohmann::basic_json::begin</a></div><div class="ttdeci">const_iterator begin() const </div><div class="ttdoc">returns a const iterator to the first element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03981">json.hpp:3981</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b_html_a34d6a60dd99e9f33b8273a1c8db5669b"><div class="ttname"><a href="classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.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> <a href="json_8hpp_source.html#l05414">json.hpp:5414</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_a9f3940ac5fb2c6ff8045ed59b8a0866f_html_a9f3940ac5fb2c6ff8045ed59b8a0866f"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_a9f3940ac5fb2c6ff8045ed59b8a0866f.html#a9f3940ac5fb2c6ff8045ed59b8a0866f">nlohmann::basic_json::iterator::operator-</a></div><div class="ttdeci">difference_type operator-(const iterator &amp;other) const </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06747">json.hpp:6747</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a5339f60209573ede87534b282c09fbd5_html_a5339f60209573ede87534b282c09fbd5"><div class="ttname"><a href="classnlohmann_1_1basic__json_a5339f60209573ede87534b282c09fbd5.html#a5339f60209573ede87534b282c09fbd5">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const int val)</div><div class="ttdoc">create an integer number from an enum type (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01274">json.hpp:1274</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_a1de0975e812c83e74d118b3e1063f335_html_a1de0975e812c83e74d118b3e1063f335"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_a1de0975e812c83e74d118b3e1063f335.html#a1de0975e812c83e74d118b3e1063f335">nlohmann::basic_json::iterator::iterator</a></div><div class="ttdeci">iterator(const iterator &amp;other) noexcept</div><div class="ttdoc">copy constructor </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06659">json.hpp:6659</a></div></div>
<div class="ttc" id="namespacenlohmann_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> <a href="json_8hpp_source.html#l00061">json.hpp:61</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f_html_a49d7c3e9ef3280df03052cce988b792f"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a49d7c3e9ef3280df03052cce988b792f.html#a49d7c3e9ef3280df03052cce988b792f">nlohmann::basic_json::const_iterator::difference_type</a></div><div class="ttdeci">typename basic_json::difference_type difference_type</div><div class="ttdoc">a type to represent differences between iterators </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06110">json.hpp:6110</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a86089c703a2e563b9f760c2f8408efa7_html_a86089c703a2e563b9f760c2f8408efa7"><div class="ttname"><a href="classnlohmann_1_1basic__json_a86089c703a2e563b9f760c2f8408efa7.html#a86089c703a2e563b9f760c2f8408efa7">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> <a href="json_8hpp_source.html#l04943">json.hpp:4943</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a53407187cceeb3ee5390318713dad827_html_a53407187cceeb3ee5390318713dad827"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a53407187cceeb3ee5390318713dad827.html#a53407187cceeb3ee5390318713dad827">nlohmann::basic_json::json_reverse_iterator::json_reverse_iterator</a></div><div class="ttdeci">json_reverse_iterator(const base_iterator &amp;it)</div><div class="ttdoc">create reverse iterator from base class </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06797">json.hpp:6797</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a197631f31d9b17285bf9f4c156fe49c2_html_a197631f31d9b17285bf9f4c156fe49c2"><div class="ttname"><a href="classnlohmann_1_1basic__json_a197631f31d9b17285bf9f4c156fe49c2.html#a197631f31d9b17285bf9f4c156fe49c2">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const number_integer_t val)</div><div class="ttdoc">create an integer number (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01245">json.hpp:1245</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ad101425649dbc5c2e851fdb52c31741d_html_ad101425649dbc5c2e851fdb52c31741d"><div class="ttname"><a href="classnlohmann_1_1basic__json_ad101425649dbc5c2e851fdb52c31741d.html#ad101425649dbc5c2e851fdb52c31741d">nlohmann::basic_json::rend</a></div><div class="ttdeci">reverse_iterator rend()</div><div class="ttdoc">returns an iterator to the reverse-end </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04119">json.hpp:4119</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ad2eddc2c13ab084f067eaba65d381ad2_html_ad2eddc2c13ab084f067eaba65d381ad2"><div class="ttname"><a href="classnlohmann_1_1basic__json_ad2eddc2c13ab084f067eaba65d381ad2.html#ad2eddc2c13ab084f067eaba65d381ad2">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const CompatibleNumberIntegerType val) noexcept</div><div class="ttdoc">create an integer number (implicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01311">json.hpp:1311</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a8032645ce3109a7a4899badd90fa3480_html_a8032645ce3109a7a4899badd90fa3480"><div class="ttname"><a href="classnlohmann_1_1basic__json_a8032645ce3109a7a4899badd90fa3480.html#a8032645ce3109a7a4899badd90fa3480">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> <a href="json_8hpp_source.html#l03531">json.hpp:3531</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_acb6cd0ff760933afeb7f93e5207f3646_html_acb6cd0ff760933afeb7f93e5207f3646"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_acb6cd0ff760933afeb7f93e5207f3646.html#acb6cd0ff760933afeb7f93e5207f3646">nlohmann::basic_json::const_iterator::operator&gt;</a></div><div class="ttdeci">bool operator&gt;(const const_iterator &amp;other) const </div><div class="ttdoc">comparison: greater than </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06482">json.hpp:6482</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a8969119432218155193bb1dac30aa4ff_html_a8969119432218155193bb1dac30aa4ff"><div class="ttname"><a href="classnlohmann_1_1basic__json_a8969119432218155193bb1dac30aa4ff.html#a8969119432218155193bb1dac30aa4ff">nlohmann::basic_json::is_object</a></div><div class="ttdeci">bool is_object() const noexcept</div><div class="ttdoc">return whether value is an object </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02263">json.hpp:2263</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a8be837e4d902887676dd837abe9098d3_html_a8be837e4d902887676dd837abe9098d3"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a8be837e4d902887676dd837abe9098d3.html#a8be837e4d902887676dd837abe9098d3">nlohmann::basic_json::const_iterator::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> <a href="json_8hpp_source.html#l06301">json.hpp:6301</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1_html_a74a0013e847fdc574b48f931f0e757e1"><div class="ttname"><a href="classnlohmann_1_1basic__json_a74a0013e847fdc574b48f931f0e757e1.html#a74a0013e847fdc574b48f931f0e757e1">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> <a href="json_8hpp_source.html#l00658">json.hpp:658</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_af77614992e38b355b9213940051cc582_html_af77614992e38b355b9213940051cc582"><div class="ttname"><a href="classnlohmann_1_1basic__json_af77614992e38b355b9213940051cc582.html#af77614992e38b355b9213940051cc582">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> <a href="json_8hpp_source.html#l04844">json.hpp:4844</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522_html_a231b02148577b69a154b2ce2c87a5522"><div class="ttname"><a href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522">nlohmann::basic_json::value_t</a></div><div class="ttdeci">value_t</div><div class="ttdoc">the JSON type enumeration </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l00677">json.hpp:677</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a0a60ef55808edb545f4f46e49656d035_html_a0a60ef55808edb545f4f46e49656d035"><div class="ttname"><a href="classnlohmann_1_1basic__json_a0a60ef55808edb545f4f46e49656d035.html#a0a60ef55808edb545f4f46e49656d035">nlohmann::basic_json::rend</a></div><div class="ttdeci">const_reverse_iterator rend() const </div><div class="ttdoc">returns a const reverse iterator to one before the first </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04127">json.hpp:4127</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf_html_aec316934a555dd1acdd3600e5d4a4cdf"><div class="ttname"><a href="classnlohmann_1_1basic__json_aec316934a555dd1acdd3600e5d4a4cdf.html#aec316934a555dd1acdd3600e5d4a4cdf">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> <a href="json_8hpp_source.html#l00199">json.hpp:199</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ab856bebfdfbcf45061f1474ea8ba9924_html_ab856bebfdfbcf45061f1474ea8ba9924"><div class="ttname"><a href="classnlohmann_1_1basic__json_ab856bebfdfbcf45061f1474ea8ba9924.html#ab856bebfdfbcf45061f1474ea8ba9924">nlohmann::basic_json::is_primitive</a></div><div class="ttdeci">bool is_primitive() const noexcept</div><div class="ttdoc">return whether type is primitive </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02083">json.hpp:2083</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a20bfb2ca6d4c421c74bb3e53328cd437_html_a20bfb2ca6d4c421c74bb3e53328cd437"><div class="ttname"><a href="classnlohmann_1_1basic__json_a20bfb2ca6d4c421c74bb3e53328cd437.html#a20bfb2ca6d4c421c74bb3e53328cd437">nlohmann::basic_json::get</a></div><div class="ttdeci">ValueType get() const </div><div class="ttdoc">get a value (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02694">json.hpp:2694</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a8209621de6184d9eabe136b7c8f61935_html_a8209621de6184d9eabe136b7c8f61935"><div class="ttname"><a href="classnlohmann_1_1basic__json_a8209621de6184d9eabe136b7c8f61935.html#a8209621de6184d9eabe136b7c8f61935">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> <a href="json_8hpp_source.html#l04875">json.hpp:4875</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a263a9ecde33a1f2ff63dcd15d5e42cb7_html_a263a9ecde33a1f2ff63dcd15d5e42cb7"><div class="ttname"><a href="classnlohmann_1_1basic__json_a263a9ecde33a1f2ff63dcd15d5e42cb7.html#a263a9ecde33a1f2ff63dcd15d5e42cb7">nlohmann::basic_json::erase</a></div><div class="ttdeci">InteratorType erase(InteratorType first, InteratorType last)</div><div class="ttdoc">remove elements given an iterator range </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03730">json.hpp:3730</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a0a2cbbd95862a623e7dc5c37e67dead0_html_a0a2cbbd95862a623e7dc5c37e67dead0"><div class="ttname"><a href="classnlohmann_1_1basic__json_a0a2cbbd95862a623e7dc5c37e67dead0.html#a0a2cbbd95862a623e7dc5c37e67dead0">nlohmann::basic_json::value</a></div><div class="ttdeci">ValueType value(const typename object_t::key_type &amp;key, ValueType default_value) const </div><div class="ttdoc">access specified object element with default value </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03472">json.hpp:3472</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a7265535f39299824f9712a2ca15013c3_html_a7265535f39299824f9712a2ca15013c3"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a7265535f39299824f9712a2ca15013c3.html#a7265535f39299824f9712a2ca15013c3">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06789">json.hpp:6789</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a098482190447461f47f80b99bf2519f6_html_a098482190447461f47f80b99bf2519f6"><div class="ttname"><a href="classnlohmann_1_1basic__json_a098482190447461f47f80b99bf2519f6.html#a098482190447461f47f80b99bf2519f6">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> <a href="json_8hpp_source.html#l03567">json.hpp:3567</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a486b96adbf4886c38e38c952394a220f_html_a486b96adbf4886c38e38c952394a220f"><div class="ttname"><a href="classnlohmann_1_1basic__json_a486b96adbf4886c38e38c952394a220f.html#a486b96adbf4886c38e38c952394a220f">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> <a href="json_8hpp_source.html#l04501">json.hpp:4501</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522_html_a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5"><div class="ttname"><a href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522af1f713c9e000f5d3f280adbd124df4f5">nlohmann::basic_json::value_t::array</a></div><div class="ttdoc">array (ordered collection of values) </div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a4aede52d6ee253a510897518b59e09c0_html_a4aede52d6ee253a510897518b59e09c0"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a4aede52d6ee253a510897518b59e09c0.html#a4aede52d6ee253a510897518b59e09c0">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06808">json.hpp:6808</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a13c4d2ab4e7ee2f92be785a7b12948ff_html_a13c4d2ab4e7ee2f92be785a7b12948ff"><div class="ttname"><a href="classnlohmann_1_1basic__json_a13c4d2ab4e7ee2f92be785a7b12948ff.html#a13c4d2ab4e7ee2f92be785a7b12948ff">nlohmann::basic_json::parse</a></div><div class="ttdeci">static basic_json parse(std::istream &amp;i, parser_callback_t cb=nullptr)</div><div class="ttdoc">deserialize from stream </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l05482">json.hpp:5482</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e_html_a122640e7e2db1814fc7bbb3c122ec76e"><div class="ttname"><a href="classnlohmann_1_1basic__json_a122640e7e2db1814fc7bbb3c122ec76e.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> <a href="json_8hpp_source.html#l05024">json.hpp:5024</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_af071057ebab57744f5767eb369e99d42_html_af071057ebab57744f5767eb369e99d42"><div class="ttname"><a href="classnlohmann_1_1basic__json_af071057ebab57744f5767eb369e99d42.html#af071057ebab57744f5767eb369e99d42">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> <a href="json_8hpp_source.html#l03498">json.hpp:3498</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aa669d997ddc03566de5438781254b32b_html_aa669d997ddc03566de5438781254b32b"><div class="ttname"><a href="classnlohmann_1_1basic__json_aa669d997ddc03566de5438781254b32b.html#aa669d997ddc03566de5438781254b32b">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> <a href="json_8hpp_source.html#l02844">json.hpp:2844</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a68a5f34b164a07b8ced13fcf2b7ec834_html_a68a5f34b164a07b8ced13fcf2b7ec834"><div class="ttname"><a href="classnlohmann_1_1basic__json_a68a5f34b164a07b8ced13fcf2b7ec834.html#a68a5f34b164a07b8ced13fcf2b7ec834">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const CompatibleNumberUnsignedType val) noexcept</div><div class="ttdoc">create an unsigned number (implicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01370">json.hpp:1370</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a72761de693f95edc195956197f4e5569_html_a72761de693f95edc195956197f4e5569"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a72761de693f95edc195956197f4e5569.html#a72761de693f95edc195956197f4e5569">nlohmann::basic_json::const_iterator::const_iterator</a></div><div class="ttdeci">const_iterator(pointer object)</div><div class="ttdoc">constructor for a given JSON instance </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06122">json.hpp:6122</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_ab3029a1a83cf46dc28ad443bbad0c74d_html_ab3029a1a83cf46dc28ad443bbad0c74d"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_ab3029a1a83cf46dc28ad443bbad0c74d.html#ab3029a1a83cf46dc28ad443bbad0c74d">nlohmann::basic_json::const_iterator::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> <a href="json_8hpp_source.html#l06261">json.hpp:6261</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522_html_a231b02148577b69a154b2ce2c87a5522a37a6259cc0c1dae299a7866489dff0bd"><div class="ttname"><a href="classnlohmann_1_1basic__json_a231b02148577b69a154b2ce2c87a5522.html#a231b02148577b69a154b2ce2c87a5522a37a6259cc0c1dae299a7866489dff0bd">nlohmann::basic_json::value_t::null</a></div><div class="ttdoc">null value </div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aac185a137428a7337aa620de07bfbbd7_html_aac185a137428a7337aa620de07bfbbd7"><div class="ttname"><a href="classnlohmann_1_1basic__json_aac185a137428a7337aa620de07bfbbd7.html#aac185a137428a7337aa620de07bfbbd7">nlohmann::basic_json::operator&lt;</a></div><div class="ttdeci">friend bool operator&lt;(const value_t lhs, const value_t rhs)</div><div class="ttdoc">comparison operator for JSON types </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04977">json.hpp:4977</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_af12127e6fe8adbe727081f188aa599e2_html_af12127e6fe8adbe727081f188aa599e2"><div class="ttname"><a href="classnlohmann_1_1basic__json_af12127e6fe8adbe727081f188aa599e2.html#af12127e6fe8adbe727081f188aa599e2">nlohmann::basic_json::get_ptr</a></div><div class="ttdeci">const PointerType get_ptr() const noexcept</div><div class="ttdoc">get a pointer value (implicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l02793">json.hpp:2793</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ae347859ec88176ef76a0cbe5b4514fcf_html_ae347859ec88176ef76a0cbe5b4514fcf"><div class="ttname"><a href="classnlohmann_1_1basic__json_ae347859ec88176ef76a0cbe5b4514fcf.html#ae347859ec88176ef76a0cbe5b4514fcf">nlohmann::basic_json::operator!=</a></div><div class="ttdeci">friend bool operator!=(const_reference v, std::nullptr_t) noexcept</div><div class="ttdoc">comparison: not equal </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l05176">json.hpp:5176</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_a56952f8d5702541f0d88e6a764d2ae36_html_a56952f8d5702541f0d88e6a764d2ae36"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_a56952f8d5702541f0d88e6a764d2ae36.html#a56952f8d5702541f0d88e6a764d2ae36">nlohmann::basic_json::iterator::operator+</a></div><div class="ttdeci">iterator operator+(difference_type i)</div><div class="ttdoc">add to iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06732">json.hpp:6732</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a4bbdfd6dd8d2e6fc9ac5d81ef61ba3fe_html_a4bbdfd6dd8d2e6fc9ac5d81ef61ba3fe"><div class="ttname"><a href="classnlohmann_1_1basic__json_a4bbdfd6dd8d2e6fc9ac5d81ef61ba3fe.html#a4bbdfd6dd8d2e6fc9ac5d81ef61ba3fe">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const CompatibleNumberFloatType val) noexcept</div><div class="ttdoc">create an floating-point number (implicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01445">json.hpp:1445</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a6b682f09787eff62f03493d45aa05902_html_a6b682f09787eff62f03493d45aa05902"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a6b682f09787eff62f03493d45aa05902.html#a6b682f09787eff62f03493d45aa05902">nlohmann::basic_json::const_iterator::operator&lt;=</a></div><div class="ttdeci">bool operator&lt;=(const const_iterator &amp;other) const </div><div class="ttdoc">comparison: less than or equal </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06476">json.hpp:6476</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a45e789042a23138eba2b69f34df9fc45_html_a45e789042a23138eba2b69f34df9fc45"><div class="ttname"><a href="classnlohmann_1_1basic__json_a45e789042a23138eba2b69f34df9fc45.html#a45e789042a23138eba2b69f34df9fc45">nlohmann::basic_json::erase</a></div><div class="ttdeci">InteratorType erase(InteratorType pos)</div><div class="ttdoc">remove element given an iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03624">json.hpp:3624</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_afeb998aec45296bc2050bd1c41ef41eb_html_afeb998aec45296bc2050bd1c41ef41eb"><div class="ttname"><a href="classnlohmann_1_1basic__json_afeb998aec45296bc2050bd1c41ef41eb.html#afeb998aec45296bc2050bd1c41ef41eb">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(std::initializer_list&lt; basic_json &gt; 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> <a href="json_8hpp_source.html#l01518">json.hpp:1518</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_a085fe0d8cf459b5b1ae7b518b933ae7d_html_a085fe0d8cf459b5b1ae7b518b933ae7d"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_a085fe0d8cf459b5b1ae7b518b933ae7d.html#a085fe0d8cf459b5b1ae7b518b933ae7d">nlohmann::basic_json::iterator::iterator</a></div><div class="ttdeci">iterator(pointer object) noexcept</div><div class="ttdoc">constructor for a given JSON instance </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06654">json.hpp:6654</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4_html_a7f97a91ad8f1d5cf0b9213bd24f247c4"><div class="ttname"><a href="classnlohmann_1_1basic__json_a7f97a91ad8f1d5cf0b9213bd24f247c4.html#a7f97a91ad8f1d5cf0b9213bd24f247c4">nlohmann::basic_json::operator!=</a></div><div class="ttdeci">friend bool operator!=(std::nullptr_t, const_reference v) noexcept</div><div class="ttdoc">comparison: not equal </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l05185">json.hpp:5185</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a7c5e0d3bd0e1a2ba9226b7eb539a53d6_html_a7c5e0d3bd0e1a2ba9226b7eb539a53d6"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a7c5e0d3bd0e1a2ba9226b7eb539a53d6.html#a7c5e0d3bd0e1a2ba9226b7eb539a53d6">nlohmann::basic_json::json_reverse_iterator::json_reverse_iterator</a></div><div class="ttdeci">json_reverse_iterator(const typename base_iterator::iterator_type &amp;it)</div><div class="ttdoc">create reverse iterator from iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06792">json.hpp:6792</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a8fbb15efd97599209a7def77af8e748e_html_a8fbb15efd97599209a7def77af8e748e"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a8fbb15efd97599209a7def77af8e748e.html#a8fbb15efd97599209a7def77af8e748e">nlohmann::basic_json::const_iterator::operator++</a></div><div class="ttdeci">const_iterator &amp; operator++()</div><div class="ttdoc">pre-increment (++it) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06344">json.hpp:6344</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a5d288e4e8828c2ef03a4f9958ce3d175_html_a5d288e4e8828c2ef03a4f9958ce3d175"><div class="ttname"><a href="classnlohmann_1_1basic__json_a5d288e4e8828c2ef03a4f9958ce3d175.html#a5d288e4e8828c2ef03a4f9958ce3d175">nlohmann::basic_json::is_number_float</a></div><div class="ttdeci">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> <a href="json_8hpp_source.html#l02244">json.hpp:2244</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_ac75e80d30b6169ee2a29ec93fb4d2acd_html_ac75e80d30b6169ee2a29ec93fb4d2acd"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_ac75e80d30b6169ee2a29ec93fb4d2acd.html#ac75e80d30b6169ee2a29ec93fb4d2acd">nlohmann::basic_json::const_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> <a href="json_8hpp_source.html#l06619">json.hpp:6619</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a821560d64f50525162097f19b1392e7f_html_a821560d64f50525162097f19b1392e7f"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a821560d64f50525162097f19b1392e7f.html#a821560d64f50525162097f19b1392e7f">nlohmann::basic_json::const_iterator::iterator_category</a></div><div class="ttdeci">std::bidirectional_iterator_tag iterator_category</div><div class="ttdoc">the category of the iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06116">json.hpp:6116</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a115fae3dd8ae02669fedae0545ce1cbc_html_a115fae3dd8ae02669fedae0545ce1cbc"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a115fae3dd8ae02669fedae0545ce1cbc.html#a115fae3dd8ae02669fedae0545ce1cbc">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06851">json.hpp:6851</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aaa687595d7627925fbf6d6eb97e2021e_html_aaa687595d7627925fbf6d6eb97e2021e"><div class="ttname"><a href="classnlohmann_1_1basic__json_aaa687595d7627925fbf6d6eb97e2021e.html#aaa687595d7627925fbf6d6eb97e2021e">nlohmann::basic_json::find</a></div><div class="ttdeci">const_iterator find(typename object_t::key_type key) const </div><div class="ttdoc">find an element in a JSON object </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03905">json.hpp:3905</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ab7be2bc58ae0c2c2c30d40f15d6399f8_html_ab7be2bc58ae0c2c2c30d40f15d6399f8"><div class="ttname"><a href="classnlohmann_1_1basic__json_ab7be2bc58ae0c2c2c30d40f15d6399f8.html#ab7be2bc58ae0c2c2c30d40f15d6399f8">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const CompatibleObjectType &amp;val)</div><div class="ttdoc">create an object (implicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01044">json.hpp:1044</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a87db51b6b936fb2ea293cdbc8702dcb8_html_a87db51b6b936fb2ea293cdbc8702dcb8"><div class="ttname"><a href="classnlohmann_1_1basic__json_a87db51b6b936fb2ea293cdbc8702dcb8.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> <a href="json_8hpp_source.html#l05337">json.hpp:5337</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_af6941c3711dabb2e64960dd57e00d201_html_af6941c3711dabb2e64960dd57e00d201"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_af6941c3711dabb2e64960dd57e00d201.html#af6941c3711dabb2e64960dd57e00d201">nlohmann::basic_json::const_iterator::operator&gt;=</a></div><div class="ttdeci">bool operator&gt;=(const const_iterator &amp;other) const </div><div class="ttdoc">comparison: greater than or equal </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06488">json.hpp:6488</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a5521515067b6597cb0b55a9c547a7a2b_html_a5521515067b6597cb0b55a9c547a7a2b"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a5521515067b6597cb0b55a9c547a7a2b.html#a5521515067b6597cb0b55a9c547a7a2b">nlohmann::basic_json::const_iterator::operator=</a></div><div class="ttdeci">const_iterator &amp; operator=(const_iterator other) noexcept( std::is_nothrow_move_constructible&lt; pointer &gt;::value and std::is_nothrow_move_assignable&lt; pointer &gt;::value and std::is_nothrow_move_constructible&lt; internal_iterator &gt;::value and std::is_nothrow_move_assignable&lt; internal_iterator &gt;::value )</div><div class="ttdoc">copy assignment </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06181">json.hpp:6181</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aa36e72ffc3241b960fe9186d19e03bc3_html_aa36e72ffc3241b960fe9186d19e03bc3"><div class="ttname"><a href="classnlohmann_1_1basic__json_aa36e72ffc3241b960fe9186d19e03bc3.html#aa36e72ffc3241b960fe9186d19e03bc3">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> <a href="json_8hpp_source.html#l03814">json.hpp:3814</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a92fbb711a36b5ce78ee228b26787c034_html_a92fbb711a36b5ce78ee228b26787c034"><div class="ttname"><a href="classnlohmann_1_1basic__json_a92fbb711a36b5ce78ee228b26787c034.html#a92fbb711a36b5ce78ee228b26787c034">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> <a href="json_8hpp_source.html#l03197">json.hpp:3197</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a5d4320e24fcb7df041ff2c95d976dba0_html_a5d4320e24fcb7df041ff2c95d976dba0"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a5d4320e24fcb7df041ff2c95d976dba0.html#a5d4320e24fcb7df041ff2c95d976dba0">nlohmann::basic_json::const_iterator::key</a></div><div class="ttdeci">object_t::key_type key() const </div><div class="ttdoc">return the key of an object iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06604">json.hpp:6604</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_abc13258393358cb75a32fac86480bc9c_html_abc13258393358cb75a32fac86480bc9c"><div class="ttname"><a href="classnlohmann_1_1basic__json_abc13258393358cb75a32fac86480bc9c.html#abc13258393358cb75a32fac86480bc9c">nlohmann::basic_json::end</a></div><div class="ttdeci">const_iterator end() const </div><div class="ttdoc">returns a const iterator to one past the last element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04040">json.hpp:4040</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a1c1aa2d148a3e4ce0d4e50cf5b894f41_html_a1c1aa2d148a3e4ce0d4e50cf5b894f41"><div class="ttname"><a href="classnlohmann_1_1basic__json_a1c1aa2d148a3e4ce0d4e50cf5b894f41.html#a1c1aa2d148a3e4ce0d4e50cf5b894f41">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> <a href="json_8hpp_source.html#l04527">json.hpp:4527</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a7bd530bfbbc58ac77308c087120c21fa_html_a7bd530bfbbc58ac77308c087120c21fa"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a7bd530bfbbc58ac77308c087120c21fa.html#a7bd530bfbbc58ac77308c087120c21fa">nlohmann::basic_json::const_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> <a href="json_8hpp_source.html#l06568">json.hpp:6568</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_html"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator.html">nlohmann::basic_json::const_iterator</a></div><div class="ttdoc">a const random access iterator for the basic_json class </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06101">json.hpp:6101</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_html"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator.html">nlohmann::basic_json::json_reverse_iterator</a></div><div class="ttdoc">a template for a reverse iterator class </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l00212">json.hpp:212</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2_html_aefd248cac6493eed1e6ff53ba6a63eb2"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_aefd248cac6493eed1e6ff53ba6a63eb2.html#aefd248cac6493eed1e6ff53ba6a63eb2">nlohmann::basic_json::const_iterator::reference</a></div><div class="ttdeci">typename basic_json::const_reference reference</div><div class="ttdoc">defines a reference to the type iterated over (value_type) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06114">json.hpp:6114</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a545a8204cfd6836eb85abc3113a0bb28_html_a545a8204cfd6836eb85abc3113a0bb28"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a545a8204cfd6836eb85abc3113a0bb28.html#a545a8204cfd6836eb85abc3113a0bb28">nlohmann::basic_json::json_reverse_iterator::operator++</a></div><div class="ttdeci">json_reverse_iterator operator++(int)</div><div class="ttdoc">post-increment (it++) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06802">json.hpp:6802</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7_html_a9730b9f7bc2150e641fe20198d4477c7"><div class="ttname"><a href="classnlohmann_1_1basic__json_a9730b9f7bc2150e641fe20198d4477c7.html#a9730b9f7bc2150e641fe20198d4477c7">nlohmann::basic_json::operator==</a></div><div class="ttdeci">friend bool operator==(const_reference v, std::nullptr_t) noexcept</div><div class="ttdoc">comparison: equal </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l05123">json.hpp:5123</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a59732a1de287a7301cca19a7a7748159_html_a59732a1de287a7301cca19a7a7748159"><div class="ttname"><a href="classnlohmann_1_1basic__json_a59732a1de287a7301cca19a7a7748159.html#a59732a1de287a7301cca19a7a7748159">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> <a href="json_8hpp_source.html#l03111">json.hpp:3111</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a9e4c6e48e3c2f3ff357ef8215b8c8fca_html_a9e4c6e48e3c2f3ff357ef8215b8c8fca"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a9e4c6e48e3c2f3ff357ef8215b8c8fca.html#a9e4c6e48e3c2f3ff357ef8215b8c8fca">nlohmann::basic_json::const_iterator::operator!=</a></div><div class="ttdeci">bool operator!=(const const_iterator &amp;other) const </div><div class="ttdoc">comparison: not equal </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06440">json.hpp:6440</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9accc9dd9f9033f50c0ab6bcf337ffe0_html_a9accc9dd9f9033f50c0ab6bcf337ffe0"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1json__reverse__iterator_a9accc9dd9f9033f50c0ab6bcf337ffe0.html#a9accc9dd9f9033f50c0ab6bcf337ffe0">nlohmann::basic_json::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> <a href="json_8hpp_source.html#l06828">json.hpp:6828</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a214a8c22d616fd3567b88932c07436c9_html_a214a8c22d616fd3567b88932c07436c9"><div class="ttname"><a href="classnlohmann_1_1basic__json_a214a8c22d616fd3567b88932c07436c9.html#a214a8c22d616fd3567b88932c07436c9">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> <a href="json_8hpp_source.html#l02924">json.hpp:2924</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a01833b332b68d9af1f7cd7a816c39e49_html_a01833b332b68d9af1f7cd7a816c39e49"><div class="ttname"><a href="classnlohmann_1_1basic__json_a01833b332b68d9af1f7cd7a816c39e49.html#a01833b332b68d9af1f7cd7a816c39e49">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> <a href="json_8hpp_source.html#l04304">json.hpp:4304</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ab936779c70bec68343ef440ed13251e5_html_ab936779c70bec68343ef440ed13251e5"><div class="ttname"><a href="classnlohmann_1_1basic__json_ab936779c70bec68343ef440ed13251e5.html#ab936779c70bec68343ef440ed13251e5">nlohmann::basic_json::iterator_wrapper</a></div><div class="ttdeci">static iteration_proxy&lt; iterator &gt; iterator_wrapper(reference cont)</div><div class="ttdoc">wrapper to access iterator member functions in range-based for </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04194">json.hpp:4194</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_acbc1c415072afe69b5e69b87f496e44b_html_acbc1c415072afe69b5e69b87f496e44b"><div class="ttname"><a href="classnlohmann_1_1basic__json_acbc1c415072afe69b5e69b87f496e44b.html#acbc1c415072afe69b5e69b87f496e44b">nlohmann::basic_json::cbegin</a></div><div class="ttdeci">const_iterator cbegin() const </div><div class="ttdoc">returns a const iterator to the first element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04005">json.hpp:4005</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_afe86d48d3e4e5ebdaaec162b3cf0e95c_html_afe86d48d3e4e5ebdaaec162b3cf0e95c"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_afe86d48d3e4e5ebdaaec162b3cf0e95c.html#afe86d48d3e4e5ebdaaec162b3cf0e95c">nlohmann::basic_json::iterator::operator-=</a></div><div class="ttdeci">iterator &amp; operator-=(difference_type i)</div><div class="ttdoc">subtract from iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06725">json.hpp:6725</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a1846cc6db1f38f5918c8200d9ce31896_html_a1846cc6db1f38f5918c8200d9ce31896"><div class="ttname"><a href="classnlohmann_1_1basic__json_a1846cc6db1f38f5918c8200d9ce31896.html#a1846cc6db1f38f5918c8200d9ce31896">nlohmann::basic_json::crend</a></div><div class="ttdeci">const_reverse_iterator crend() const </div><div class="ttdoc">returns a const reverse iterator to one before the first </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l04173">json.hpp:4173</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a9af5ea68c88f423ddf35216aff7f1813_html_a9af5ea68c88f423ddf35216aff7f1813"><div class="ttname"><a href="classnlohmann_1_1basic__json_a9af5ea68c88f423ddf35216aff7f1813.html#a9af5ea68c88f423ddf35216aff7f1813">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const object_t &amp;val)</div><div class="ttdoc">create an object (explicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01012">json.hpp:1012</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6_html_a60ca396028b8d9714c6e10efbf475af6"><div class="ttname"><a href="classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6">nlohmann::basic_json::operator&lt;&lt;</a></div><div class="ttdeci">friend std::istream &amp; operator&lt;&lt;(basic_json &amp;j, std::istream &amp;i)</div><div class="ttdoc">deserialize from stream </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l05518">json.hpp:5518</a></div></div>
<div class="ttc" id="structstd_1_1hash_3_01nlohmann_1_1json_01_4_afd03f6ad53db22868ca4163a8200b2f9_html_afd03f6ad53db22868ca4163a8200b2f9"><div class="ttname"><a href="structstd_1_1hash_3_01nlohmann_1_1json_01_4_afd03f6ad53db22868ca4163a8200b2f9.html#afd03f6ad53db22868ca4163a8200b2f9">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> <a href="json_8hpp_source.html#l08516">json.hpp:8516</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405_html_a5e34c5435e557d0bf666bd7311211405"><div class="ttname"><a href="classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.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> <a href="json_8hpp_source.html#l05396">json.hpp:5396</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_a18c35a6735d3da96b4fc026421c05dd8_html_a18c35a6735d3da96b4fc026421c05dd8"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_a18c35a6735d3da96b4fc026421c05dd8.html#a18c35a6735d3da96b4fc026421c05dd8">nlohmann::basic_json::const_iterator::const_iterator</a></div><div class="ttdeci">const_iterator(const const_iterator &amp;other) noexcept</div><div class="ttdoc">copy constructor </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06176">json.hpp:6176</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1iterator_ab3679dc63b3a59edb98b1c2b96d8683c_html_ab3679dc63b3a59edb98b1c2b96d8683c"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1iterator_ab3679dc63b3a59edb98b1c2b96d8683c.html#ab3679dc63b3a59edb98b1c2b96d8683c">nlohmann::basic_json::iterator::operator--</a></div><div class="ttdeci">iterator &amp; operator--()</div><div class="ttdoc">pre-decrement (–it) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06711">json.hpp:6711</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a8468efcfcd95db15f46887b29924ed5c_html_a8468efcfcd95db15f46887b29924ed5c"><div class="ttname"><a href="classnlohmann_1_1basic__json_a8468efcfcd95db15f46887b29924ed5c.html#a8468efcfcd95db15f46887b29924ed5c">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> <a href="json_8hpp_source.html#l04666">json.hpp:4666</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a4f332e90f3cae562d0c3fa6ba48f74f9_html_a4f332e90f3cae562d0c3fa6ba48f74f9"><div class="ttname"><a href="classnlohmann_1_1basic__json_a4f332e90f3cae562d0c3fa6ba48f74f9.html#a4f332e90f3cae562d0c3fa6ba48f74f9">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> <a href="json_8hpp_source.html#l02829">json.hpp:2829</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_1_1const__iterator_aefac8f3e390ac917f021761f4a8f8e71_html_aefac8f3e390ac917f021761f4a8f8e71"><div class="ttname"><a href="classnlohmann_1_1basic__json_1_1const__iterator_aefac8f3e390ac917f021761f4a8f8e71.html#aefac8f3e390ac917f021761f4a8f8e71">nlohmann::basic_json::const_iterator::operator-=</a></div><div class="ttdeci">const_iterator &amp; operator-=(difference_type i)</div><div class="ttdoc">subtract from iterator </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l06522">json.hpp:6522</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ae85d91b0620650bcd9993e09d0e287d9_html_ae85d91b0620650bcd9993e09d0e287d9"><div class="ttname"><a href="classnlohmann_1_1basic__json_ae85d91b0620650bcd9993e09d0e287d9.html#ae85d91b0620650bcd9993e09d0e287d9">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const CompatibleStringType &amp;val)</div><div class="ttdoc">create a string (implicit) </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l01192">json.hpp:1192</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_a4ab93491f82545342562c7ee7e3166c7_html_a4ab93491f82545342562c7ee7e3166c7"><div class="ttname"><a href="classnlohmann_1_1basic__json_a4ab93491f82545342562c7ee7e3166c7.html#a4ab93491f82545342562c7ee7e3166c7">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> <a href="json_8hpp_source.html#l01831">json.hpp:1831</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_ac7c006e2345a76859c4802db7d130e0e_html_ac7c006e2345a76859c4802db7d130e0e"><div class="ttname"><a href="classnlohmann_1_1basic__json_ac7c006e2345a76859c4802db7d130e0e.html#ac7c006e2345a76859c4802db7d130e0e">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">reference operator[](T *key)</div><div class="ttdoc">access specified object element </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l03356">json.hpp:3356</a></div></div>
<div class="ttc" id="classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe_html_aea1c863b719b4ca5b77188c171bbfafe"><div class="ttname"><a href="classnlohmann_1_1basic__json_aea1c863b719b4ca5b77188c171bbfafe.html#aea1c863b719b4ca5b77188c171bbfafe">nlohmann::basic_json::parse_event_t</a></div><div class="ttdeci">parse_event_t</div><div class="ttdoc">JSON callback events. </div><div class="ttdef"><b>Definition:</b> <a href="json_8hpp_source.html#l00831">json.hpp:831</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Jan 30 2016 22:05:25 for JSON for Modern C++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>